docker-compose 测试etcd集群搭建、监控、告警
·
1.etcd集群部署
本次主要为了测试etcd告警,所以使用docker-compose 方式进行
mkdir etcd-cluster
cd etcd-cluster
vim docker-compose.yml
version: '3'
services:
etcd1:
image: quay.io/coreos/etcd:v3.5.1 # 使用官方 etcd 镜像
container_name: etcd1
environment:
- ALLOW_NONE_AUTHENTICATION=yes
- ETCD_NAME=etcd1
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd1:2379
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd1:2380
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
networks:
- etcdnet
ports:
- "12379:2379"
etcd2:
image: quay.io/coreos/etcd:v3.5.1
container_name: etcd2
environment:
- ALLOW_NONE_AUTHENTICATION=yes
- ETCD_NAME=etcd2
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd2:2379
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd2:2380
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
- ETCD_INITIAL_CLUSTER_STATE=new
networks:
- etcdnet
ports:
- "22379:2379"
etcd3:
image: quay.io/coreos/etcd:v3.5.1
container_name: etcd3
environment:
- ALLOW_NONE_AUTHENTICATION=yes
- ETCD_NAME=etcd3
- ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
- ETCD_ADVERTISE_CLIENT_URLS=http://etcd3:2379
- ETCD_INITIAL_ADVERTISE_PEER_URLS=http://etcd3:2380
- ETCD_LISTEN_PEER_URLS=http://0.0.0.0:2380
- ETCD_INITIAL_CLUSTER=etcd1=http://etcd1:2380,etcd2=http://etcd2:2380,etcd3=http://etcd3:2380
- ETCD_INITIAL_CLUSTER_STATE=new
networks:
- etcdnet
ports:
- "32379:2379"
networks:
etcdnet:
driver: bridge
# 进入etcd1容器,检查集群状态
docker exec -it etcd1 etcdctl --endpoints=http://etcd1:2379,http://etcd2:2379,http://etcd3:2379 endpoint status --write-out=table
# 检查集群成员
docker exec -it etcd1 etcdctl --endpoints=http://etcd1:2379 member list
vim prometheus.yml,增加如下内容:
- job_name: 'etcd'
static_configs:
# 指向 etcd 集群的监控端口(容器内地址)
- targets: ['IP:12379','IP:22379','IP:32379']
# etcd 指标抓取的关键配置
metrics_path: /metrics
scheme: http
3.监控面板
前提
- Prometheus 已正常抓取 etcd 指标(Targets 为 UP)。
- Grafana 已添加 Prometheus 数据源(名称建议为
Prometheus,后续导入直接匹配)。
导入流程
- 打开 Grafana → 左侧菜单 Dashboards → 点击 New → 选择 Import。
- 在 Import via grafana.com 输入框填入 3070,点击 Load。
- 配置:
- Name:自定义仪表盘名称(如
Etcd Cluster Monitor)。 - Folder:选择存放文件夹(默认 General)。
- Prometheus Data Source:选择你添加的 Prometheus 数据源。
- Name:自定义仪表盘名称(如
- 点击 Import,完成后自动跳转到 etcd 监控面板。
Dashboard 3070 核心面板说明
该仪表盘覆盖 etcd 集群全生命周期监控,核心模块如下:
- 集群概览
- 节点状态(UP/DOWN)、Leader 节点、集群健康度。
- 关键指标:
etcd_server_has_leader(是否有主节点)、etcd_server_is_leader(当前节点是否为主)。
- 节点性能
- 请求延迟(P99/P95/P50):
etcd_server_proposals_duration_seconds。 - 读写 QPS、失败请求数、提案提交速率。
- 请求延迟(P99/P95/P50):
- 存储监控
- 数据库大小:
etcd_mvcc_db_total_size_in_bytes。 - WAL 写入延迟、磁盘 fsync 耗时(核心性能瓶颈指标)。
- 数据库大小:
- 网络与集群同步
- 节点间网络延迟:
etcd_network_peer_round_trip_time_seconds。 - 选举次数、Leader 切换次数、数据同步进度。
- 节点间网络延迟:
- 告警相关指标
- 集群无 Leader 时长、节点离线时长、存储使用率超限。
4.告警
更多推荐



所有评论(0)