对接Prometheus监控生态

MatrixDB还提供了自研的exporter,可以完美对接到Prometheus监控生态中。

需要注意的是,MatrixDB的exporter及相应的Dashboard仅包含数据库自身的监控,不包含操作系统指标监控。操作系统相关指标监控需要额外的exporter支持,如node_exporter。模块布局如下: 模块布局图

1. 部署

MatrixDB exporter已包含在MatrixDB的安装包中,激活即可使用。然后安装与部署node_exporter、Grafana、Prometheus。

1.1 激活MatrixDB 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权限)
# 下载安装包
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"]

# 注意:在编辑yaml文件时要注意缩进,否则会出现语法错误,导致无法启动

# 启动prometheus
systemctl start prometheus
systemctl status prometheus
systemctl enable prometheus

启动后,便可以通过Prometheus提供的UI界面访问WebUI,并查看运行状态,http://IP:9090/

在Prometheus主面板中选择Status->Targets 查看数据源1

会看到刚刚配置好的matrixdb_exporter和node_exporter以及prometheus自身的exporter状态都是UP,说明监控部署成功。 查看数据源2

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都依赖数据源,所以首先要添加数据源:

  1. 在Grafana主界面上点击设置按钮,选择Data Sources添加数据源1

  2. 然后点击Add data source添加数据源2

  3. 在数据库类别里选择Prometheus添加数据源3

  4. 数据源名称里给该数据源起个名字,如:MatrixDB-Prometheus;然后在URL中填写Prometheus的IP和端口: 添加数据源4

  5. 数据源添加好后,下面加载Dashboard。在grafana主面板上点击加号按钮,然后选择Import添加dashboard_1

  6. Import有几种方式:官方URL或ID、将Json粘贴到文本框中、从文件加载。这里我们选择从文件加载,matrixdb的prometheus dashboard在安装目录中的$GPHOME/share/doc/postgresql/extension/PrometheusDashboard.json,加载该文件: 添加dashboard_2

加载文件的时候需要选择Prometheus数据源,这里选择刚才创建的源。 添加dashboard_3

然后,即可在面板列表里看到刚刚加载的面板。

面板监控详细解读请参考MatrixDB监控参数解读

1.6 添加node_exporter面板

上面的操作步骤演示了如何添加MatrixDB的Prometheus dashboard。下面介绍一下如何将node_exporter的dashboard也部署好。

加载node_exporter的dashboard:因为grafana官网中已发布了对应的dashboard,https://grafana.com/grafana/dashboards/15202-node-exporter,所以直接填写ID加载即可。 node_exporter_1

在加载的过程中需要选择数据源,选择刚才添加的MatrixDB-Prometheus源即可。如果node_exporter有独立的Prometheus集群,则需要单独添加数据源。 node_exporter_2

2. 管理

激活了集群状态采集后,每个主机都会运行采集服务,相关日志保存在/var/log/matrixdb目录下。

如果重启MatrixDB,或者重启服务器后再启动MatrixDB,MatrixDB 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

与MatrixDB exporter一样,部署gate exporter同样需要创建matrixmgr数据库与matrixtsmatrixmgr扩展。这里假设已创建完毕。

然后调用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 加载监控面板

和加载MatrixDB监控面板一样,MatrixGate的面板文件在$GPHOME/share/doc/postgresql/extension/MxgateDashboard.json,加载该文件即可。

面板监控详细解读请参考MatrixGate监控参数解读