etcd 监控

在 YMatrix 5 新架构下,引入了 etcd 存放集群的配置和状态信息。etcd 非常关键,如果出现异常,会导致数据库的不稳定甚至崩溃。
本文介绍安装和部署etcd监控的方法,推荐生产环境的集群都安装此监控,因为 etcd 状态正常是数据库健康运行的前提。

1 安装 Prometheus(如已有此软件请跳过此步)

请进入 Prometheus 官网 下载以下内容:

将下载到的 tar 包上传到 Linux 服务器上。如果条件允许,推荐使用单独的服务器运行 Prometheus,如果服务器有限,也可以临时放在主节点备用节点(Standby)或者主节点(Master)主机上。

$ tar xvfz prometheus-*.tar.gz

可以将解压出来的 prometheus-* 目录移动到 /usr/local/ 下。

2 设置 Prometheus 拉取 etcd 状态

编辑配置文件。

$ cd prometheus-*
sudo vi prometheus.yml

在文件末尾,追加如下内容:

  - job_name: "etcd"
    static_configs:
      - targets: ["172.31.33.128:4679", "172.31.45.253:4679", "172.31.35.134:4679"]

其中,targets 里是一个数组,需要替换成集群里每一个etcd 节点的地址。 该信息可以在 Master 主机上的 /etc/matrixdb5/physical_cluster.toml 文件中找到。

$ cat physical_cluster.toml
cluster_id = '79LhQxjuwmXgSWZCjcdigF'
supervisord_grpc_port = 4617
deployer_port = 4627
etcd_endpoints = ['http://10.0.159.1:4679', 'http://10.0.172.185:4679', 'http://10.0.170.90:4679', 'http://10.0.146.2:4679', 'http://10.0.146.195:4679', 'http://10.0.150.110:4679', 'http://10.0.169.149:4679']

注意!
如果你的主机上没有 /etc/matrixdb5/physical_cluster.toml 文件,且找不到 etcd 进程,说明你的集群不是用 5.x 新架构部署的,也不涉及监控 etcd。

3 启动 Prometheus

./prometheus --config.file=prometheus.yml

注意!
通常我们希望将 Prometheus 作为系统服务在后台运行,这需要将其配置为 systemd 服务

4 安装 Grafana(如已有此软件请跳过此步)

请参照官方文档 安装 Grafana 软件

注意!
需要安装 Grafana 8.2.5 或更高版本。

5 配置 Grafana 的 etcd 看板

首先登陆 Grafana 页面,默认地址如下:

http://<安装节点的IP或者域名>:3000

5.1 配置数据源(DataSource)

172.31.23.21:9090 是前一步部署的 Prometheus 的服务端口。

5.2 导入 Dashboard

访问Grafana社区:
https://grafana.com/grafana/dashboards/?search=Etcd+Cluster+Overview

如上链接可搜索到社区提供的 Dashboard:

点击进入,获得该 Dashboard 的 ID:

注意!
此 ID 对应的 Dashboard 不排除会发生变化的可能。目前为 15308,用户请以自身搜索结果为准。

如下图,这里我们导入 15308 号 Dashboard。

如下图,选择我们刚才配置的数据源名称,最后加载 Dashboard。

如果服务器处于内网,可能无法通过编号 15308 导入。需要在其他可上网的电脑上 下载 Dashboard 的 JSON 文件再导入。

6 etcd Dashboard 关键项目介绍

  • etcd 的服务状态和成员个数
    • Has Leader 必须是 Yes,否则说明 etcd 服务不可用。
    • Members 个数由系统的主机个数自动决定,最多为 7 个。
  • Quorum 成员列表及各自的服务进程状态
    • DB Capacity 代表剩余的可用空间,etcd 默认数据库大小上限为 2G,如果剩余空间太小则可能在不久后写满,导致 etcd 服务不可用。此时应考虑 Compact 或者 Defragment (类似 Vacuum、Vacuum Full)。
    • Mem Used 代表各 etcd 实例的实际内存用量,通常在 几百MB。
  • DB Total Size 表示 etcd 数据量随时间的增长,如果曲线异常增加,则可能引起数据库空间达到上限等问题。

注意!
更多指标和详细介绍,可以参照 etcd 官方文档