对接 Prometheus 监控生态
YMatrix 还提供了自研的 exporter,可以完美对接到 Prometheus 监控生态中。
需要注意的是,YMatrix 的 exporter 及相应的 Dashboard 仅包含数据库自身的监控,不包含操作系统指标监控。操作系统相关指标监控需要额外的 exporter 支持,如 node_exporter。模块布局如下:
1 部署
YMatrix exporter 已包含在 YMatrix 的安装包中,激活即可使用。然后安装与部署 node_exporter、Grafana、Prometheus。
1.1 激活 YMatrix exporter
- 创建 matrixmgr 数据库
createdb matrixmgr;
- 连接到 matrixmgr 数据库, 创建 matrixts 和 matrixmgr 扩展,并激活 exporter
psql -d matrixmgr
matrixmgr=# CREATE EXTENSION matrixts;
matrixmgr=# CREATE EXTENSION matrixmgr;
matrixmgr=# SELECT mxmgr_init_exporter();
成功后,可以观察到 matrixmgr 数据库下出现了名为 “exporter” 的新模式。该模式下的表和视图包含了集群的监控和配置信息。请勿自行更改这些表和视图的定义及内容。
该命令会在集群所有机器上启动 matrixdb_exporter。
注意!
如果集群已经启动了旧监控系统,需要先将旧监控系统关闭,否则会失败。 关闭方法:SELECT mxmgr_remove_all('local');
1.2 node_exporter 安装与配置
node_exporter 用来监控操作系统相关指标。从官网下载最新版本的 node_exporter。这里以 1.3.1 为例(使用 root 用户操作)。
# 下载 node_exporter
wget https://github.com/prometheus/node_exporter/releases/download/v1.3.1/node_exporter-1.3.1.linux-amd64.tar.gz
# 解压缩安装包
tar -xvf node_exporter-1.3.1.linux-amd64.tar.gz -C /usr/local
# 建立软链接
ln -s /usr/local/node_exporter-1.3.1.linux-amd64/ /usr/local/node_exporter
# 生成 systemctl 配置文件
cat << EOF > /usr/lib/systemd/system/node_exporter.service
[Service]
User=root
Group=root
ExecStart=/usr/local/node_exporter/node_exporter
[Install]
WantedBy=multi-user.target
[Unit]
Description=node_exporter
After=network.target
EOF
# 启动 node_exporter
systemctl start node_exporter
systemctl status node_exporter
systemctl enable node_exporter
注意!
node_exporter 在集群所有主机上都需要部署,所以上述步骤在集群所有主机上都要执行一遍。
1.3 Prometheus 安装与配置
准备一台可以访问到集群所有主机 exporter 端口的主机,可以是 Master 或者 Standby Master 节点,也可以是一台单独的机器(Linux、MacOS、Windows等系统均可)。
安装 Prometheus 最新版本。官方下载安装链接为 https://prometheus.io/download/。
下文的命令以 CentOS 7 为例描述操作方法,其他操作系统的命令请参考对应操作系统使用指南。
- 下载和安装 Prometheus(需要 root 权限)
注意!
安装 Prometheus 过程中,可以选择是否安装 mxgate 监控界面,以下示例持有 mxgate 监控安装代码,如不安装,删掉该段代码即可。具体见示例代码注释。
# 下载安装包
wget https://github.com/prometheus/prometheus/releases/download/v2.36.1/prometheus-2.36.1.linux-amd64.tar.gz
# 解压到 /usr/local 并建立软链接
tar -xf ./prometheus-2.36.1.linux-amd64.tar.gz -C /usr/local
ln -s /usr/local/prometheus-2.36.1.linux-amd64/ /usr/local/prometheus
# 创建 Prometheus 用户
useradd -s /sbin/nologin -M prometheus
# 创建数据目录
mkdir /data/prometheus -p
# 修改目录所属用户和组
chown -R prometheus:prometheus /usr/local/prometheus/
chown -R prometheus:prometheus /data/prometheus/
# 配置 systemctl
cat << EOF > /etc/systemd/system/prometheus.service
[Unit]
Description=Prometheus
Documentation=https://prometheus.io/
After=network.target
[Service]
Type=simple
User=prometheus
ExecStart=/usr/local/prometheus/prometheus --config.file=/usr/local/prometheus/prometheus.yml --storage.tsdb.path=/data/prometheus
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
# 修改 Prometheus 配置文件
# 在 scrape_configs 中添加 matrixdb 和 node exporter 的 IP 和端口
# (matrixdb_exporter 默认端口 9273,node_exporter 默认端口 9100):
# 还需要注意一点,matrixdb 和 mxgate 的监控图通过 matrixdb_cluster 变量做集群筛选,
# 所以要增加 relabel_configs 配置,将 job 标签替换成 matrixdb_cluster,
# replacement 中填写集群名称
# 可参考如下配置:
scrape_configs:
- job_name: "matrixdb_exporter"
relabel_configs:
- source_labels: ['job']
regex: .*
target_label: matrixdb_cluster
replacement: cluster1
action : replace
static_configs:
- targets: ["localhost:9273"]
- job_name: "node_exporter"
static_configs:
- targets: ["localhost:9100"]
# 当集群包含多台主机时,需要将每台主机的 IP 端口都添加到 targets 数组里
# 例如:
scrape_configs:
- job_name: "matrixdb_exporter"
relabel_configs:
- source_labels: ['job']
regex: .*
target_label: matrixdb_cluster
replacement: cluster1
action : replace
static_configs:
- targets: ["192.168.0.1:9273", "192.168.0.2:9273", "192.168.0.3:9273"]
- job_name: "node_exporter"
static_configs:
- targets: ["192.168.0.1:9100", "192.168.0.2:9100", "192.168.0.3:9100"]
# 如果你想要部署 mxgate 监控,那么需要在此位置添加以下段,后重启 Prometheus。此段代码非必须。
- job_name: "gate_exporter"
relabel_configs:
- source_labels: ['job']
regex: .*
target_label: matrixdb_cluster
replacement: cluster1
action : replace
static_configs:
- targets: ["192.168.0.1:9275"]
# 注意:在编辑 yaml 文件时要注意缩进,否则会出现语法错误,导致无法启动
# 启动 Prometheus
systemctl start prometheus
systemctl status prometheus
systemctl enable prometheus
启动后,便可以通过 Prometheus 提供的 UI 界面访问 WebUI,并查看运行状态,http://IP:9090/
在 Prometheus 主面板中选择 Status->Targets
会看到刚刚配置好的 matrixdb_exporter 和 node_exporter 以及 Prometheus 自身的 exporter 状态都是 UP,说明监控部署成功。
1.4 Grafana 安装与配置
Prometheus 用来存储监控数据,Grafana 从 Prometheus 拉取监控数据并展示。和安装 Prometheus 一样,准备一台可以访问 Prometheus 的机器(Grafana 和 Prometheus 可以安装在同一台机器上)。
需要注意的是,Grafana 版本不能低于 8.0.0,建议最新版本。官方下载安装链接为 https://grafana.com/grafana/download。
下文的命令以 CentOS 7 为例描述操作方法,其他操作系统的命令请参考对应操作系统使用指南(需要使用 root 用户操作)。
- 下载和安装 Grafana
wget https://dl.grafana.com/enterprise/release/grafana-enterprise-8.5.5-1.x86_64.rpm
yum install grafana-enterprise-8.5.5-1.x86_64.rpm
- 启动 Grafana
sudo systemctl daemon-reload
sudo systemctl start grafana-server
sudo systemctl status grafana-server
sudo systemctl enable grafana-server
安装完成后,使用浏览器访问宿主机的 3000 端口:
http://<安装节点的IP或者域名>:3000
可以看到 Grafana 首页。使用默认的用户名和密码(admin / admin)登录。为确保安全,请自行更改密码。
1.5 添加数据源与面板
exporter、Prometheus、Grafana 安装部署完毕后,接下来要加载 dashboard,以展示监控图表。
每个 dashboard 都依赖数据源,所以首先要添加数据源:
-
在 Grafana 主界面上点击设置按钮,选择
Data Sources
: -
然后点击
Add data source
: -
在数据库类别里选择
Prometheus
: -
数据源名称里给该数据源起个名字,如:
MatrixDB-Prometheus
;然后在 URL 中填写 Prometheus 的 IP 和端口: -
数据源添加好后,下面加载 Dashboard。在 Grafana 主面板上点击加号按钮,然后选择
Import
: -
Import 有几种方式:官方 URL 或 ID、将 Json 粘贴到文本框中、从文件加载。这里我们选择从文件加载,matrixdb 的 Prometheus Dashboard 在安装目录中的
$GPHOME/share/doc/postgresql/extension/PrometheusDashboard.json
,加载该文件:
加载文件的时候需要选择 Prometheus 数据源,这里选择刚才创建的源。
然后,即可在面板列表里看到刚刚加载的面板。
面板监控详细解读请参考 YMatrix 监控参数解读
1.6 添加 node_exporter 面板
上面的操作步骤演示了如何添加 YMatrix 的 Prometheus Dashboard。下面介绍一下如何将 node_exporter 的 Dashboard 也部署好。
加载 node_exporter 的 Dashboard:因为 Grafana 官网中已发布了对应的 Dashboard,所以直接填写ID加载即可。
在加载的过程中需要选择数据源,选择刚才添加的 MatrixDB-Prometheus
源即可。如果 node_exporter 有独立的 Prometheus 集群,则需要单独添加数据源。
2 管理
激活了集群状态采集后,每个主机都会运行采集服务,相关日志保存在 /var/log/matrixdb 目录下。
如果重启 YMatrix,或者重启服务器后再启动 YMatrix,YMatrix exporter也会自动启动,无需人工干预。
如需关闭 matrixdb exporter 服务,可连接到 matrixmgr 数据库并执行 mxmgr_remove_exporter 命令:
psql -d matrixmgr
matrixmgr=# SELECT mxmgr_remove_exporter();
如需再次激活数据采集,可连接到 matrixmgr 数据库并执行 mxmgr_deploy_exporter 命令:
matrixmgr=# SELECT mxmgr_deploy_exporter();
注意!
mxmgr_remove_exporter 只会关闭 matrixdb exporter,node_exporter、Grafana、Prometheus需要单独关闭。
3 升级
旧监控系统升级到对接 Prometheus 生态的新监控。
首先完成 Prometheus 安装和部署,并将 Grafana 升级到最新版本:
# 先将旧监控关闭
psql -d matrixmgr
matrixmgr=# SELECT mxmgr_remove_all('local');
# 初始化并启动新监控
matrixmgr=# SELECT mxmgr_init_exporter();
注意!
新旧监控也可以同时部署,即在不关闭旧监控的前提下也可以启动新监控,只是有些冗余。
4 MatrixGate 监控面板部署
作为高性能数据接入组件MatrixGate,同样兼容Prometheus监控生态。通常情况下MatrixDB的监控数据和MatrixGate的监控数据都存储在相同的Prometheus系统中,下面操作步骤也都做这样假定。
4.1 部署 gate_exporter
与 YMatrix exporter 一样,部署 gate exporter 同样需要创建 matrixmgr
数据库与 matrixts
和 matrixmgr
扩展。这里假设已创建完毕。
然后调用 mxmgr_init_gate_exporter
初始化并启动:
matrixmgr=# SELECT mxmgr_init_gate_exporter();
成功后,可以观察到 matrixmgr 数据库下出现了名为 “gate_exporter” 的新模式。该模式下的表和视图包含了 gate 的监控和配置信息。请勿自行更改这些表和视图的定义及内容。
该命令会在 Master 主机上启动 gate_exporter。
如要关闭 gate_exporter 则执行 mxmgr_remove_gate_exporter
:
matrixmgr=# SELECT mxmgr_remove_gate_exporter();
再次启动则执行 mxmgr_deploy_gate_exporter
:
matrixmgr=# SELECT mxmgr_deploy_gate_exporter();
4.2 加载监控面板
和加载 YMatrix 监控面板一样,MatrixGate 的面板文件在 $GPHOME/share/doc/postgresql/extension/MxgateDashboard.json
,加载该文件即可。
面板监控详细解读请参考 MatrixGate 监控参数解读