在 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源创计划”,欢迎正在阅读的你也加入,一块儿分享。