
【夜莺监控】管理Kubernetes组件指标(下篇)
Etcd
Etcd 是 Kubernetes 的存储中心,所有资源信息都是存在在其中,它通过2381
端口对外提供监控指标。
指标采集
由于我这里的 Etcd 是通过静态 Pod 的方式部署到 Kubernetes 集群中的,所以依然使用 Prometheus Agent 来采集指标。
(1)配置 Prometheus 的采集配置
然后增加 Etcd 的 Service 配置。
部署 YAML 文件,并重启 Prometheus。如果获取不到指标,需要修改 Etcd 的listen-metrics-urls
配置为0.0.0.0
。
导入监控大盘(https://github.com/flashcatcloud/categraf/blob/main/k8s/etcd-dash.json)。
指标简介
指标清单
指标 | 类型 | 说明 |
cpu_utilization_core | Gauge | CPU 使用量,单位:核(Core)。 |
cpu_utilization_ratio | Gauge | CPU 使用率=CPU 使用量/内存资源上限,百分比形式。 |
etcd_server_has_leader | Gauge | etcd member 是否有 Leader。 |
- 1:表示有主节点。
- 0:表示没有主节点。 | | etcd_server_is_leader | Gauge | etcd member 是否是 Leader。
- 1:表示是。
- 0:表示不是。 | | etcd_server_leader_changes_seen_total | Counter | etcd member 过去一段时间切主次数。 | | etcd_mvcc_db_total_size_in_bytes | Gauge | etcd member db 总大小。 | | etcd_mvcc_db_total_size_in_use_in_bytes | Gauge | etcd member db 实际使用大小。 | | etcd_disk_backend_commit_duration_seconds_bucket | Histogram | etcd backend commit 延时。 Bucket 列表为:[0.001 0.002 0.004 0.008 0.016 0.032 0.064 0.128 0.256 0.512 1.024 2.048 4.096 8.192]。 | | etcd_debugging_mvcc_keys_total | Gauge | etcd keys 总数。 | | etcd_server_proposals_committed_total | Gauge | raft proposals commit 提交总数。 | | etcd_server_proposals_applied_total | Gauge | raft proposals apply 总数。 | | etcd_server_proposals_pending | Gauge | raft proposals 排队数量。 | | etcd_server_proposals_failed_total | Counter | raft proposals 失败数量。 | | memory_utilization_byte | Gauge | 内存使用量,单位:字节(Byte)。 | | memory_utilization_ratio | Gauge | 内存使用率=内存使用量/内存资源上限,百分比形式。 |
基础指标
名称 | PromQL | 说明 |
etcd 存活状态 |
- etcd_server_has_leader
- etcd_server_is_leader == 1 |
- etcd member 是否存活,正常值为 3。
- etcd member 是否是主节点,正常情况下,必须有一个 Member 为主节点。 | |过去一天切主次数 | changes(etcd_server_leader_changes_seen_totaljob="etcd"}[1d])过去一天内 etcd 集群切主次数。 | | 内存使用量 | memory_utilization_byte{container="etcd"| 内存使用量,单位:字节。 | | CPU 使用量 | cpu_utilization_corecontainer="etcd"}*1000CPU 使用量,单位:毫核。 | | 内存使用率 | memory_utilization_ratio{container="etcd"| 内存使用率,百分比。 | | CPU 使用率 | cpu_utilization_ratio{container="etcd"} | CPU 使用率,百分比。 | | 磁盘大小 |
- etcd_mvcc_db_total_size_in_bytes
- etcd_mvcc_db_total_size_in_use_in_bytes |
- etcd backend db 总大小。
- etcd backend db 实际使用大小。 | |kv 总数 | etcd_debugging_mvcc_keys_total | etcd 集群 kv 对总数。 | | backend commit 延迟 | histogram_quantile(0.99, sum(rate(etcd_disk_backend_commit_duration_seconds_bucket{job="etcd"}[5m])) by (instance, le)) | db commit 时延。 | | raft proposal 情况 |
- rate(etcd_server_proposals_failed_total{job="etcd"}[1m])
- etcd_server_proposals_pending{job="etcd"}
- etcd_server_proposals_committed_total{job="etcd"} - etcd_server_proposals_applied_total{job="etcd"} |
- raft proposal failed 速率(分钟)。
- raft proposal pending 总数。
- commit-apply 差值。 |
kubelet
kubelet 工作节点的主要组件,它监听两个端口:10248
和10250
。10248
是监控检测端口,10250
是系统默认端口,通过它的/metrics
接口暴露指标。
指标采集
这里依然通过 Prometheus Agent 的方式采集 kubelet 的指标。
(1)修改 Prometheus 的配置文件
然后配置 kubelet 的 Service 和 Endpoints,如下:
这里是自定义的 Endpoints,添加了需要监控的节点。
然后部署 YAML 文件并重启 Prometheus Agent,即可在夜莺 UI 中查询到具体的指标。
导入监控大盘(https://github.com/flashcatcloud/categraf/blob/main/inputs/kubelet/dashboard-by-ident.json)。
指标简介
指标清单
KubeProxy
KubeProxy 主要负责节点的网络管理,它在每个节点都会存在,是通过10249
端口暴露监控指标。
指标采集
(1)配置 Prometheus 配置
然后配置 KubeProxy 的 Service。
将 YAML 文件部署到集群中并重启 Prometheus Agent。然后就可以看到其监控指标了(如果没有采集到指标,查看 kube-proxy 的10249
端口是否绑定到127.0.0.1
了,如果是就修改成0.0.0.0
,通过kubectl edit cm -n kube-system kube-proxy
修改metricsBindAddress
即可。)。
导入监控大盘(https://github.com/flashcatcloud/categraf/blob/main/inputs/kube_proxy/dashboard-by-ident.json)。
指标简介
指标清单
最后
夜莺监控 Kubernetes 官方(https://flashcat.cloud/categories/kubernetes%E7%9B%91%E6%8E%A7%E4%B8%93%E6%A0%8F/)已经整理了专栏,我这里仅仅是做了加工整理以及测试,不论是指标整理还是监控大盘,社区都做的很到位了,拿来即用。
参考文档
[1] https://help.aliyun.com/document_detail/441320.html?spm=a2c4g.444711.0.0.15046e9958T2TG
文章转载自公众号:运维开发故事
