单个mysqld_exporter监控多个MySQL实例

科技   2024-09-19 16:30   上海  

之前写过一篇通过Prometheus监控MySQL的文章(点击跳转),但是只适用每个实例启动一个单独的mysqld_exporter,架构如下图,会比较麻烦。


这篇文章,来介绍一下另外一种更实用的方式:多个MySQL实例共用一个mysqld_exporter,架构如下:

1 实验环境介绍

机器作用

IP

被监控的MySQL实例1

192.168.12.111

被监控的MySQL实例2

192.168.12.112

部署mysqld_exporter的机器

192.168.12.201

部署Prometheus的机器

192.168.12.202

机器都是CentOS 7,MySQL是8.0.25。


2 创建监控用户

在所有被监控的MySQL实例中创建用户,host是mysqld_exporter所在的机器IP:

create user 'exporter'@'192.168.12.201' IDENTIFIED WITH mysql_native_password BY 'xxx' ; GRANT SELECT, RELOAD, PROCESS, SUPER, REPLICATION CLIENT ON *.* TO 'exporter'@'192.168.12.201';

3 启动mysqld_exporter

在192.168.12.201中操作。

下载mysqld_exporter

wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.15.1/mysqld_exporter-0.15.1.linux-amd64.tar.gz

解压:

tar zxvf mysqld_exporter-0.15.1.linux-amd64.tar.gz -C /usr/local/mv /usr/local/mysqld_exporter-0.15.1.linux-amd64 /usr/local/mysqld_exporter

编辑配置文件

vim /usr/local/mysqld_exporter/mysqld_exporter.cnf

加入如下内容:

[client]user=exporterpassword=xxx

将mysqld_exporter添加成系统服务

vim /etc/systemd/system/mysqld_exporter.service

加入

[Unit]Description=PrometheusAfter=network-online.target

[Service]User=prometheusRestart=on-failureExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/mysqld_exporter.cnf

[Install]WantedBy=multi-user.target


在机器上新建prometheus用户,并修改mysqld_exporter属主为prometheus:

useradd prometheuschown -R prometheus.prometheus /usr/local/mysqld_exporter/

重新加载系统服务的配置文件

systemctl daemon-reload

启动mysqld_exporter

systemctl start mysqld_exporter

4 配置并启动Prometheus

在192.168.12.202中操作。

Prometheus安装参考之前的文章

修改配置文件prometheus.yml,加入新job的配置:

  - job_name: mysql    params:      auth_module: [client.servers]    file_sd_configs:      - files: ["/usr/local/prometheus/conf.d/mysql.json"]        refresh_interval: 15s

relabel_configs: - source_labels: [__address__] target_label: __param_target - source_labels: [__param_target] target_label: instance - target_label: __address__ # The mysqld_exporter host:port replacement: 192.168.12.201:9104

注意

replacement这里填的是mysqld_exporter的IP和端口。


编辑MySQL的元数据文件

vim /usr/local/prometheus/conf.d/mysql.json


加入:

[  {    "targets": [      "192.168.12.111:3306"    ],    "labels": {          "project": "dba-test",          "hostname": "sh-db-mysql-dbatest01"    }  },  {    "targets": [      "192.168.12.112:3306"    ],    "labels": {          "project": "dba-test",          "hostname": "sh-db-mysql-dbatest02"    }  }]

后续配置Grafana、告警等,请参考之前的文章:MySQL 监控 第01期:Prometheus+Grafana 监控 MySQL


5 扩展

如果想实现企业微信告警,以及Redis、MongoDB、ClickHouse、ES的监控。

欢迎订购小编的DBA体系课(点击跳转目录),上个月已经更新完成。

目前知道的,已经有4位同学学完课程跳槽成功的:

同学A,成都本地跳槽成功,之前大数据运维,新的岗位大数据运维+DBA;

同学B,成都跳到北京,前后都是运维岗;

同学C,成都乙方DBA跳槽甲方DBA;

同学D,深圳小厂跳槽到深圳某二线大厂DBA。

最近新的活动又开始了,使用优惠码(IGA954AU)可减410,到手价1589,活动9月27日结束。

详情咨询可加我微信:mating3306

购买地址:

https://class.imooc.com/sale/dba


课程里有详细介绍一些监控细节,对应的章节分别如下:

第19周   DBA企业级实战(上)

视频:1-7 通过Prometheus监控Linux机器(23:54)

视频:1-8 配置Linux机器异常企业微信告警(一)(16:14)

视频:1-9 配置Linux机器异常企业微信告警(二)(18:44)

视频:1-10 配置MySQL监控和告警(22:17)

视频:1-11 配置Redis监控和告警(14:03)

视频:1-12 配置MongoDB监控和告警(17:40)

第23周 ClickHouse基础及运维

视频:1-9 ClickHouse监控(10:32)

第24周 Elasticsearch基础及运维

视频:1-5 ElasticSearch的监控(10:49)

第8周   上云后DBA的工作内容

视频:1-6 云上监控告警方式的变化(07:17)




关注公众号

复“复制”,可以获取小编编写的69页MySQL主复制PDF;

回复“DBA面试题”,可获取36个DBA高频面试题及解析;

回复“社群”,可加入MySQL交流群。


点击左下方阅读原文,跳转到课程。

MySQL数据库联盟
关注后,回复“高可用”,可获取8篇MySQL高可用文章
 最新文章