在 Kubernetes 的标准 Heapster + InfluxDB 的监控方案之外,还有一个监控工具就是 Prometheus 了,相比 InfluxDB 来说,Prometheus 有更集中的检测能力,更多的 Exporter(数据源)支持(不过好像还是打不过 Zabbix?),以及更新潮。。
另外不少新的软件方案缺省开始支持 Prometheus 的数据抓取,所以,早上早填坑。下面是日前在一个 Kubernetes 1.7.3 集群中部署 Prometheus 监控遇到的两个坑,分享一下:
cAdvisor
官方示例解释如下:
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.In Kubernetes 1.7.0-1.7.2, these metrics are only exposed on the cAdvisor
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
禁用)。
- 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
文章来源于互联网:Kubernetes 1.7 下的 Prometheus 监控