为了在Kubernetes中能够方便管理和部署Prometheus,我们使用ConfigMap管理Prometheus配置文件。
promethuse中间也刚好8个字符,我们也称为p8s.
从概念上来讲Operator就是针对管理特定应用程序的,在Kubernetes基本的Resource和Controller的概念上,以扩展Kubernetes api的形式,帮助用户创建,配置和管理复杂的有状态应用程序,从而实现特定应用程序的常见操作以及运维自动化。因此,通过声明式方式,Kubernetes允许用户添加自己的自定义资源(Custom Resource),并且通过实现自定义Controller来实现对Kubernetes的扩展。用户只需要关心应用程序的最终状态。

Prometheus的本质就是一组用户自定义的CRD资源以及Controller的实现,Prometheus Operator负责监听这些自定义资源的变化,并且根据这些资源的定义自动化的完成如Prometheus Server自身以及配置的自动化管理工作:
kubectl create namespace monitoring
下载Prometheus Operator的源码,并部署
git clone https://github.com/coreos/prometheus-operator.git
cd prometheus-operator/
kubectl -n monitoring apply -f bundle.yaml
kubectl -n monitoring get pods
声明Prometheus资源:
apiVersion: monitoring.coreos.com/v1
kind: Prometheus
metadata:
name: inst
namespace: monitoring
spec:
serviceAccountName: prometheus
serviceMonitorSelector:
matchLabels:
team: frontend
ruleSelector:
matchLabels:
role: alert-rules
prometheus: example
alerting:
alertmanagers:
- name: alertmanager-example
namespace: monitoring
port: web
resources:
requests:
memory: 400Mi
创建一个Prometheus实例:
kubectl apply -f prometheus-inst.yaml
kubectl -n monitoring get statefulset
kubectl -n monitoring get pods
创建service
kubectl apply -f prometheus-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: prometheus-operator
name: prometheus-operator-svc
namespace: monitoring
spec:
ports:
- name: operator
port: 9090
protocol: TCP
targetPort: 9090
selector:
app: prometheus
prometheus: inst
sessionAffinity: None
type: NodePort
在master节点通过port-forward访问任意Pod实例
kubectl port-forward deployments/example-app 8080:8080
#新打开master节点查看指标
curl localhost:8080/metrics
#指标列表
# HELP codelab_api_http_requests_in_progress The current number of API HTTP requests in progress.
# TYPE codelab_api_http_requests_in_progress gauge
codelab_api_http_requests_in_progress 1
# HELP codelab_api_request_duration_seconds A histogram of the API HTTP request durations in seconds.
# TYPE codelab_api_request_duration_seconds histogram
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.00576650390625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.008649755859375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0129746337890625"} 6342
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.01946195068359375"} 83643
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.029192926025390625"} 83814
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.043789389038085935"} 85925
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.0656840835571289"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.09852612533569335"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.14778918800354002"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.22168378200531003"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.33252567300796504"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.49878850951194753"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="0.7481827642679213"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="1.122274146401882"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="1.683411219602823"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="200",le="+Inf"} 89587
codelab_api_request_duration_seconds_sum{method="GET",path="/api/bar",status="200"} 1530.125271866964
codelab_api_request_duration_seconds_count{method="GET",path="/api/bar",status="200"} 89587
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.00576650390625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.008649755859375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0129746337890625"} 9
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.01946195068359375"} 206
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.029192926025390625"} 207
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.043789389038085935"} 259
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.0656840835571289"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.09852612533569335"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.14778918800354002"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.22168378200531003"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.33252567300796504"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.49878850951194753"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="0.7481827642679213"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="1.122274146401882"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="1.683411219602823"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/bar",status="500",le="+Inf"} 355
codelab_api_request_duration_seconds_sum{method="GET",path="/api/bar",status="500"} 9.830579268000006
codelab_api_request_duration_seconds_count{method="GET",path="/api/bar",status="500"} 355
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.00576650390625"} 1
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.008649755859375"} 10183
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0129746337890625"} 151198
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.01946195068359375"} 151602
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.029192926025390625"} 155266
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.043789389038085935"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.0656840835571289"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.09852612533569335"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.14778918800354002"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.22168378200531003"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.33252567300796504"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.49878850951194753"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="0.7481827642679213"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="1.122274146401882"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="1.683411219602823"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="200",le="+Inf"} 161339
codelab_api_request_duration_seconds_sum{method="GET",path="/api/foo",status="200"} 1832.2875421590238
codelab_api_request_duration_seconds_count{method="GET",path="/api/foo",status="200"} 161339
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.00576650390625"} 0
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.008649755859375"} 43
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0129746337890625"} 727
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.01946195068359375"} 729
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.029192926025390625"} 933
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.043789389038085935"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.0656840835571289"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.09852612533569335"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.14778918800354002"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.22168378200531003"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.33252567300796504"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.49878850951194753"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="0.7481827642679213"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="1.122274146401882"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="1.683411219602823"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/foo",status="500",le="+Inf"} 1230
codelab_api_request_duration_seconds_sum{method="GET",path="/api/foo",status="500"} 22.503760457999984
codelab_api_request_duration_seconds_count{method="GET",path="/api/foo",status="500"} 1230
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0001"} 5415
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.00015000000000000001"} 5419
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.00022500000000000002"} 5419
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0003375"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.00050625"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.000759375"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0011390624999999999"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0017085937499999998"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0025628906249999996"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0038443359374999994"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.00576650390625"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.008649755859375"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0129746337890625"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.01946195068359375"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.029192926025390625"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.043789389038085935"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.0656840835571289"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.09852612533569335"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.14778918800354002"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.22168378200531003"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.33252567300796504"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.49878850951194753"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="0.7481827642679213"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="1.122274146401882"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="1.683411219602823"} 5420
codelab_api_request_duration_seconds_bucket{method="GET",path="/api/nonexistent",status="404",le="+Inf"} 5420
codelab_api_request_duration_seconds_sum{method="GET",path="/api/nonexistent",status="404"} 0.12959933899999979
codelab_api_request_duration_seconds_count{method="GET",path="/api/nonexistent",status="404"} 5420
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.00576650390625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.008649755859375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0129746337890625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.01946195068359375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.029192926025390625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.043789389038085935"} 1939
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.0656840835571289"} 18377
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.09852612533569335"} 18392
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.14778918800354002"} 18989
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.22168378200531003"} 19780
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.33252567300796504"} 19780
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.49878850951194753"} 19780
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="0.7481827642679213"} 19780
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="1.122274146401882"} 19780
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="1.683411219602823"} 19780
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="200",le="+Inf"} 19780
codelab_api_request_duration_seconds_sum{method="POST",path="/api/bar",status="200"} 1130.1983095349967
codelab_api_request_duration_seconds_count{method="POST",path="/api/bar",status="200"} 19780
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.00576650390625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.008649755859375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0129746337890625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.01946195068359375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.029192926025390625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.043789389038085935"} 16
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.0656840835571289"} 187
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.09852612533569335"} 187
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.14778918800354002"} 250
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.22168378200531003"} 343
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.33252567300796504"} 343
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.49878850951194753"} 343
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="0.7481827642679213"} 343
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="1.122274146401882"} 343
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="1.683411219602823"} 343
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/bar",status="500",le="+Inf"} 343
codelab_api_request_duration_seconds_sum{method="POST",path="/api/bar",status="500"} 32.82294161699999
codelab_api_request_duration_seconds_count{method="POST",path="/api/bar",status="500"} 343
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.00576650390625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.008649755859375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0129746337890625"} 3
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.01946195068359375"} 5586
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.029192926025390625"} 15023
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.043789389038085935"} 15026
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.0656840835571289"} 15853
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.09852612533569335"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.14778918800354002"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.22168378200531003"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.33252567300796504"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.49878850951194753"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="0.7481827642679213"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="1.122274146401882"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="1.683411219602823"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="200",le="+Inf"} 16042
codelab_api_request_duration_seconds_sum{method="POST",path="/api/foo",status="200"} 363.95353269799966
codelab_api_request_duration_seconds_count{method="POST",path="/api/foo",status="200"} 16042
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.00015000000000000001"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.00022500000000000002"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0003375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.00050625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.000759375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0011390624999999999"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0017085937499999998"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0025628906249999996"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0038443359374999994"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.00576650390625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.008649755859375"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0129746337890625"} 0
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.01946195068359375"} 103
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.029192926025390625"} 297
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.043789389038085935"} 298
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.0656840835571289"} 483
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.09852612533569335"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.14778918800354002"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.22168378200531003"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.33252567300796504"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.49878850951194753"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="0.7481827642679213"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="1.122274146401882"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="1.683411219602823"} 527
codelab_api_request_duration_seconds_bucket{method="POST",path="/api/foo",status="500",le="+Inf"} 527
codelab_api_request_duration_seconds_sum{method="POST",path="/api/foo",status="500"} 19.897669178000008
codelab_api_request_duration_seconds_count{method="POST",path="/api/foo",status="500"} 527
# HELP go_gc_duration_seconds A summary of the GC invocation durations.
# TYPE go_gc_duration_seconds summary
go_gc_duration_seconds{quantile="0"} 0.000159671
go_gc_duration_seconds{quantile="0.25"} 0.00035243400000000005
go_gc_duration_seconds{quantile="0.5"} 0.00042174400000000005
go_gc_duration_seconds{quantile="0.75"} 0.0004949970000000001
go_gc_duration_seconds{quantile="1"} 0.0007201330000000001
go_gc_duration_seconds_sum 0.278104232
go_gc_duration_seconds_count 663
# HELP go_goroutines Number of goroutines that currently exist.
# TYPE go_goroutines gauge
go_goroutines 38
# HELP go_memstats_alloc_bytes Number of bytes allocated and still in use.
# TYPE go_memstats_alloc_bytes gauge
go_memstats_alloc_bytes 1.803888e+06
# HELP go_memstats_alloc_bytes_total Total number of bytes allocated, even if freed.
# TYPE go_memstats_alloc_bytes_total counter
go_memstats_alloc_bytes_total 1.937319376e+09
# HELP go_memstats_buck_hash_sys_bytes Number of bytes used by the profiling bucket hash table.
# TYPE go_memstats_buck_hash_sys_bytes gauge
go_memstats_buck_hash_sys_bytes 1.484967e+06
# HELP go_memstats_frees_total Total number of frees.
# TYPE go_memstats_frees_total counter
go_memstats_frees_total 2.1147933e+07
# HELP go_memstats_gc_sys_bytes Number of bytes used for garbage collection system metadata.
# TYPE go_memstats_gc_sys_bytes gauge
go_memstats_gc_sys_bytes 204800
# HELP go_memstats_heap_alloc_bytes Number of heap bytes allocated and still in use.
# TYPE go_memstats_heap_alloc_bytes gauge
go_memstats_heap_alloc_bytes 1.803888e+06
# HELP go_memstats_heap_idle_bytes Number of heap bytes waiting to be used.
# TYPE go_memstats_heap_idle_bytes gauge
go_memstats_heap_idle_bytes 2.875392e+06
# HELP go_memstats_heap_inuse_bytes Number of heap bytes that are in use.
# TYPE go_memstats_heap_inuse_bytes gauge
go_memstats_heap_inuse_bytes 2.793472e+06
# HELP go_memstats_heap_objects Number of allocated objects.
# TYPE go_memstats_heap_objects gauge
go_memstats_heap_objects 7016
# HELP go_memstats_heap_released_bytes_total Total number of heap bytes released to OS.
# TYPE go_memstats_heap_released_bytes_total counter
go_memstats_heap_released_bytes_total 0
# HELP go_memstats_heap_sys_bytes Number of heap bytes obtained from system.
# TYPE go_memstats_heap_sys_bytes gauge
go_memstats_heap_sys_bytes 5.668864e+06
# HELP go_memstats_last_gc_time_seconds Number of seconds since 1970 of last garbage collection.
# TYPE go_memstats_last_gc_time_seconds gauge
go_memstats_last_gc_time_seconds 1.6642818001861356e+19
# HELP go_memstats_lookups_total Total number of pointer lookups.
# TYPE go_memstats_lookups_total counter
go_memstats_lookups_total 128949
# HELP go_memstats_mallocs_total Total number of mallocs.
# TYPE go_memstats_mallocs_total counter
go_memstats_mallocs_total 2.1154949e+07
# HELP go_memstats_mcache_inuse_bytes Number of bytes in use by mcache structures.
# TYPE go_memstats_mcache_inuse_bytes gauge
go_memstats_mcache_inuse_bytes 4832
# HELP go_memstats_mcache_sys_bytes Number of bytes used for mcache structures obtained from system.
# TYPE go_memstats_mcache_sys_bytes gauge
go_memstats_mcache_sys_bytes 16384
# HELP go_memstats_mspan_inuse_bytes Number of bytes in use by mspan structures.
# TYPE go_memstats_mspan_inuse_bytes gauge
go_memstats_mspan_inuse_bytes 35616
# HELP go_memstats_mspan_sys_bytes Number of bytes used for mspan structures obtained from system.
# TYPE go_memstats_mspan_sys_bytes gauge
go_memstats_mspan_sys_bytes 65536
# HELP go_memstats_next_gc_bytes Number of heap bytes when next garbage collection will take place.
# TYPE go_memstats_next_gc_bytes gauge
go_memstats_next_gc_bytes 4.194304e+06
# HELP go_memstats_other_sys_bytes Number of bytes used for other system allocations.
# TYPE go_memstats_other_sys_bytes gauge
go_memstats_other_sys_bytes 1.249361e+06
# HELP go_memstats_stack_inuse_bytes Number of bytes in use by the stack allocator.
# TYPE go_memstats_stack_inuse_bytes gauge
go_memstats_stack_inuse_bytes 622592
# HELP go_memstats_stack_sys_bytes Number of bytes obtained from system for stack allocator.
# TYPE go_memstats_stack_sys_bytes gauge
go_memstats_stack_sys_bytes 622592
# HELP go_memstats_sys_bytes Number of bytes obtained by system. Sum of all system allocations.
# TYPE go_memstats_sys_bytes gauge
go_memstats_sys_bytes 9.312504e+06
# HELP http_request_duration_microseconds The HTTP request latencies in microseconds.
# TYPE http_request_duration_microseconds summary
http_request_duration_microseconds{handler="api",quantile="0.5"} 11578.693
http_request_duration_microseconds{handler="api",quantile="0.9"} 30188.677
http_request_duration_microseconds{handler="api",quantile="0.99"} 59723.244
http_request_duration_microseconds_sum{handler="api"} 4.944684391777816e+09
http_request_duration_microseconds_count{handler="api"} 294623
http_request_duration_microseconds{handler="prometheus",quantile="0.5"} NaN
http_request_duration_microseconds{handler="prometheus",quantile="0.9"} NaN
http_request_duration_microseconds{handler="prometheus",quantile="0.99"} NaN
http_request_duration_microseconds_sum{handler="prometheus"} 0
http_request_duration_microseconds_count{handler="prometheus"} 0
# HELP http_request_size_bytes The HTTP request sizes in bytes.
# TYPE http_request_size_bytes summary
http_request_size_bytes{handler="api",quantile="0.5"} 71
http_request_size_bytes{handler="api",quantile="0.9"} 109
http_request_size_bytes{handler="api",quantile="0.99"} 109
http_request_size_bytes_sum{handler="api"} 2.2355889e+07
http_request_size_bytes_count{handler="api"} 294623
http_request_size_bytes{handler="prometheus",quantile="0.5"} NaN
http_request_size_bytes{handler="prometheus",quantile="0.9"} NaN
http_request_size_bytes{handler="prometheus",quantile="0.99"} NaN
http_request_size_bytes_sum{handler="prometheus"} 0
http_request_size_bytes_count{handler="prometheus"} 0
# HELP http_requests_total Total number of HTTP requests made.
# TYPE http_requests_total counter
http_requests_total{code="0",handler="api",method="get"} 250926
http_requests_total{code="0",handler="api",method="post"} 35822
http_requests_total{code="404",handler="api",method="get"} 5420
http_requests_total{code="500",handler="api",method="get"} 1585
http_requests_total{code="500",handler="api",method="post"} 870
# HELP http_response_size_bytes The HTTP response sizes in bytes.
# TYPE http_response_size_bytes summary
http_response_size_bytes{handler="api",quantile="0.5"} 0
http_response_size_bytes{handler="api",quantile="0.9"} 0
http_response_size_bytes{handler="api",quantile="0.99"} 35
http_response_size_bytes_sum{handler="api"} 265805
http_response_size_bytes_count{handler="api"} 294623
http_response_size_bytes{handler="prometheus",quantile="0.5"} NaN
http_response_size_bytes{handler="prometheus",quantile="0.9"} NaN
http_response_size_bytes{handler="prometheus",quantile="0.99"} NaN
http_response_size_bytes_sum{handler="prometheus"} 0
http_response_size_bytes_count{handler="prometheus"} 0
# HELP process_cpu_seconds_total Total user and system CPU time spent in seconds.
# TYPE process_cpu_seconds_total counter
process_cpu_seconds_total 220.38
# HELP process_max_fds Maximum number of open file descriptors.
# TYPE process_max_fds gauge
process_max_fds 1.048576e+06
# HELP process_open_fds Number of open file descriptors.
# TYPE process_open_fds gauge
process_open_fds 11
# HELP process_resident_memory_bytes Resident memory size in bytes.
# TYPE process_resident_memory_bytes gauge
process_resident_memory_bytes 9.936896e+06
# HELP process_start_time_seconds Start time of the process since unix epoch in seconds.
# TYPE process_start_time_seconds gauge
process_start_time_seconds 1.66427690008e+09
# HELP process_virtual_memory_bytes Virtual memory size in bytes.
# TYPE process_virtual_memory_bytes gauge
process_virtual_memory_bytes 3.50339072e+08
为了采集部署在Kubernetes下应用的监控数据,p8s中需要配置:
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: example-app
namespace: monitoring
labels:
team: frontend
spec:
namespaceSelector:
matchNames:
- default
selector:
matchLabels:
app: example-app
endpoints:
- port: web
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub