在 Kubernetes 的標準 Heapster + InfluxDB 的監控方案以外,還有一個監控工具就是 Prometheus 了,相比 InfluxDB 來講,Prometheus 有更集中的檢測能力,更多的 Exporter(數據源)支持(不過好像仍是打不過 Zabbix?),以及更新潮。。
node
另外很多新的軟件方案缺省開始支持 Prometheus 的數據抓取,因此,早上早填坑。下面是日前在一個 Kubernetes 1.7.3 集羣中部署 Prometheus 監控遇到的兩個坑,分享一下:git
## cAdvisorgithub
官方示例解釋以下:api
> This is required for Kubernetes 1.7.3 and later, where cAdvisor metrics 微信
> (those whose names begin with 'container_') have been removed from the架構
> Kubelet metrics endpoint. This job scrapes the cAdvisor endpoint to工具
> retrieve those metrics.ui
> In Kubernetes 1.7.0-1.7.2, these metrics are only exposed on the cAdvisor.net
> HTTP endpoint; use "replacement: /api/v1/nodes/${1}:4194/proxy/metrics"
> in that case (and ensure cAdvisor's HTTP server hasn't been disabled with
> the --cadvisor-port=0 Kubelet flag).
在 Kubernetes 1.7.3 和後續版本中,命名前綴爲`container_` 的 cAdvisor 指標被從 Kubelet
中移除,這一個 Job 從 cAdvisor 端點中抓取數據。
在 Kubernetes 1.7.0 - 1.7.2 中,這些指標只暴露在 cAdvisor 的 http 端點中,須要使用
`eplacement: /api/v1/nodes/${1}:4194/proxy/metrics`。(注意保證 cAdvisor 的 http
服務沒有被`--cadvisor-port=0`禁用)。
~~~yaml
- job_name: 'kubernetes-cadvisor'
scheme: https
tls_config:
ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token
kubernetes_sd_configs:
- role: node
relabel_configs:
- action: labelmap
regex: __meta_kubernetes_node_label_(.+)
- target_label: __address__
replacement: kubernetes.default.svc:443
- source_labels: [__meta_kubernetes_node_name]
regex: (.+)
target_label: __metrics_path__
replacement: /api/v1/nodes/${1}/proxy/metrics/cadvisor
~~~
## kube-state-metrics
`https://github.com/kubernetes/kube-state-metrics`
網址就能看出,這一服務和 Kubernetes 有點親密。運行以後,可以爲 Prometheus 提供大量詳細指標,
並且這一服務的指標相對來講更具邏輯性,更方便從服務/應用的角度進行監控。
目前容器地址爲(不過能 pull 到最新的 v1.0.0,多是 README 沒有同步):
`gcr.io/google_containers/kube-state-metrics:v0.5.0`
本文分享自微信公衆號 - 僞架構師(fake-architect)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。