#Etcd 监控

文章介绍了监控etcd集群健康状态的关键指标,包括USE(使用率、饱和度、错误)和RED(请求速率、错误率、延迟)方法。同时,提到了通过kube-prometheus收集etcd指标,以及使用Grafana大盘进行展示。文章还强调了巡检的重要性,特别是在解决数据不一致、性能下降等问题时的角色,并提到了利用CRD和Operator进行巡检任务的自动化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

重点监控指标

指标分类

  • 健康状态
  • USE 方法(系统)
    • 使用率
    • 饱和度
    • 错误
  • RED 方法(应用)
    • 请求速率
    • 错误率
    • 延迟
指标分类指标释义
健康状态实例健康状态etcd是一个分布式系统,由多个成员节点组成。监控etcd成员节点的状态可以帮助你了解集群中节点的健康状况,发现掉线或者异常节点。
健康状态主从状态
健康状态etcd leader切换统计频繁的领导者变更会严重影响 etcd 的性能。这也意味着领导者不稳定,可能是由于网络连接问题或对 etcd 集群施加的过载负荷导致的。
健康状态心跳etcd集群中的节点通过发送心跳来保持彼此之间的连接。监控丢失的心跳可以帮助你发现etcd节点之间的通信问题或者网络延迟。
RED 方法QPS
RED 方法请求错误率监控etcd的错误率可以帮助你发现etcd操作中的潜在问题。高错误率可能表明集群遇到了故障或其他异常情况。
RED 方法请求延迟监控etcd的请求延迟可以帮助你了解API请求的处理时间。较高的延迟可能表明etcd正面临负载压力或性能问题。
RED 方法磁盘同步(WAL/DB fsync)耗时高磁盘操作延迟(wal_fsync_duration_seconds或backend_commit_duration_seconds)通常表示磁盘问题。它可能会导致高请求延迟或使群集不稳定。
RED 方法同步延迟如果集群正常运行,已提交的提案应该随着时间的推移而增加。重要的是要在集群的所有成员中监控这个指标;如果单个成员与其领导节点之间存在持续较大的滞后,这表明该成员运行缓慢或存在异常。
RED 方法提案失败次数失败的提案通常与两个问题相关:与领导选举相关的暂时性故障或由于集群丧失法定人数而导致的较长时间的停机。
RED 方法快照处理时间etcd定期创建快照以备份数据。监控快照处理时间可以帮助你了解etcd备份的性能,确保备份任务能够及时完成。
RED 方法watcher 数量监控etcd集群当前连接到etcd的客户端数量。如果连接数过高,可能需要调整etcd的配置或者增加集群的容量。
USE 方法CPU 使用率
USE 方法内存使用量
USE 方法打开文件数
USE 方法存储空间使用率监控etcd存储空间的使用率可以帮助你确保etcd有足够的空间存储配置数据。如果使用率接近或达到上限,可能需要考虑扩展存储容量或者清理无用的数据。

使用 kube-prometheus 收集 etcd 指标

http 模式(推荐)

修改--listen-metrics-urls

    #- --listen-metrics-urls=http://127.0.0.1:2381
    - --listen-metrics-urls=http://127.0.0.1:2381,http://ip:2381

部署

helm install monitoring -n cattle-prometheus --set kubeEtcd.service.port=2381 --set kubeEtcd.service.targetPort=2381 --set prometheusOperator.admissionWebhooks.patch.image.sha=null ./

https 模式

新增 etcd secret

kubectl create secret generic etcd-certs -n cattle-prometheus --from-file=/etc/kubernetes/pki/etcd/ca.crt --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.crt --from-file=/etc/kubernetes/pki/etcd/healthcheck-client.key

部署

helm install monitoring -n cattle-prometheus  --set kubeEtcd.serviceMonitor.scheme=https --set kubeEtcd.serviceMonitor.caFile=/etc/prometheus/secrets/etcd-certs/ca.crt --set kubeEtcd.serviceMonitor.certFile=/etc/prometheus/secrets/etcd-certs/healthcheck-client.crt --set kubeEtcd.serviceMonitor.keyFile=/etc/prometheus/secrets/etcd-certs/healthcheck-client.key --set prometheus.prometheusSpec.secrets={etcd-certs} --set prometheusOperator.admissionWebhooks.patch.image.sha=null ./

大盘展示

Grafana 大盘: https://github.com/clay-wangzhi/grafana-dashboard/blob/master/etcd/etcd-dash.json
导入即可

image-20230616180204033 image-20230616180334752

image-20230616180508983

巡检

完成集群部署、了解成员管理、构建好监控及告警体系并添加好定时备份策略后,这时终于可以放心给业务使用了。然而在后续业务使用过程中,你可能会遇到各类问题,而这些问题很可能是metrics监控无法发现的,比如如下:

  • etcd集群因重启进程、节点等出现数据不一致;
  • 业务写入大 key-value 导致 etcd 性能骤降;
  • 业务异常写入大量key数,稳定性存在隐患;

这时就需要巡检。

参考ServiceMonitor和EtcdBackup机制,同样可以通过CRD的方式描述此巡检任务,然后通过相应的Operator实现此巡检任务。

参考链接:

datadog etcd 指标

etcd 实战课 | 极客时间 唐聪

### KubeSphere 中配置与集成外部 etcd 监控 在 KubeSphere 平台中实现对外部 etcd 进行监控主要涉及两个方面的工作:一是确保 Prometheus 能够访问到目标 etcd 实例;二是将这些监控数据接入 KubeSphere 的可视化界面以便于管理和查看。 对于使 Prometheus 访问外部 etcd 来说,通常需要调整 Prometheus 的配置文件 `prometheus.yml`,增加针对 etcd 的 scrape_configs 部分。这可以通过修改 KubeSphere 自带的 kube-prometheus-stack 组件中的 Prometheus 设置来完成[^1]: ```yaml scrape_configs: - job_name: 'etcd' static_configs: - targets: ['<external-etcd-ip>:2379'] labels: alias: external_etcd_instance_1 ``` 为了持久化更改并防止因集群重启而导致设置丢失,在编辑配置中心时应通过命令 `kubectl edit cc -n kubesphere-system ks-installer` 修改相关内容而不是直接操作 ConfigMap 文件。 另外值得注意的是,由于 etcd 提供 HTTP API 接口用于暴露其内部状态指标,因此还需要确认外部 etcd 已经开启了相应的监听地址以及认证授权机制能够允许来自 Prometheus 的请求到达。 最后一步就是让上述改动生效并将收集来的 etcd 性能指标展示给用户了。得益于 KubeSphere 架构上的灵活性——即前后端分离设计使得后端各模块可通过 RESTful APIs 方便对接第三方服务[^4],所以只要按照官方文档指引正确完成了 Prometheus 和 Alertmanager 等组件的相关参数指定工作,则无需额外编码就能实现在平台上直观呈现所关心的关键性能指标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值