之前写过一篇通过Prometheus监控MySQL的文章(点击跳转),但是只适用每个实例启动一个单独的mysqld_exporter,架构如下图,会比较麻烦。
这篇文章,来介绍一下另外一种更实用的方式:多个MySQL实例共用一个mysqld_exporter,架构如下:
1 实验环境介绍
机器都是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=exporter
password=xxx
将mysqld_exporter添加成系统服务
vim /etc/systemd/system/mysqld_exporter.service
加入
[Unit]
Description=Prometheus
After=network-online.target
[Service]
User=prometheus
Restart=on-failure
ExecStart=/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 prometheus
chown -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)
视频:1-5 ElasticSearch的监控(10:49)
第8周 上云后DBA的工作内容
视频:1-6 云上监控告警方式的变化(07:17)
关注公众号
回复“复制”,可以获取小编编写的69页MySQL主从复制PDF;
回复“DBA面试题”,可获取36个DBA高频面试题及解析;
回复“社群”,可加入MySQL交流群。
点击左下方阅读原文,跳转到课程。