prometheus监控MySQL需要用到mysql_exporter。

mysql_exporter 项目地址:https://github.com/prometheus/mysqld_exporter

1、安装部署

我这里的mysql部署在192.168.0.254之上,而prometheus服务端是在192.168.75.11上,这个时候,监控的工具mysql_exporter可以部署在这两台主机任一一台上,只不过需要注意的是,在配置prometheus.yaml添加监控目标的时候,注意填写对应ip即可。

我这里为了方便则部署在了192.168.75.11之上。

cd /usr/local/src
wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
tar -zxv -f mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /usr/local/
cd /usr/local/
mv mysqld_exporter-0.12.1.linux-amd64/ mysqld_exporter

2,授权连接。

想要获取监控数据,需要授权程序能够连接到MySQL。

授权了本地登陆,说明这个授权适用于mysql_exporter监控工具部署在MySQL Server上的情况

GRANT REPLICATION CLIENT, PROCESS ON *.* TO 'exporter'@'localhost' identified by '123456';
GRANT SELECT ON performance_schema.* TO 'exporter'@'localhost';
flush privileges;

部署在Prometheus Server上,则需要授权远程登陆,在这里直接使用192.168.0.254上MySQL的root用户和密码进行连接。

3,启动服务。

注意: 若是把mysqld_exporter部署在MySQL所在主机上,则需要创建.my.cnf文件,同时mysqld_exporter.service文件中指定使用该cnf文件

注意:若是把mysqld_exporter部署在prometheus所在主机,则不需要创建.my.cnf文件,同时mysqld_exporter.service文件中也不指定使用该cnf文件,而是直接使用环境变量的方式连接其他主机上的数据库。

在这个例子中采用的是这种办法

创建配置信息文件,演示使用,本例中用不到这个

cd /usr/local/mysqld_exporter

vim .my.cnf
[client]
user=root
password=WritenGoodCode3367;;

然后启动服务时加载配置文件即可。

1,方式一,命令行式启动。

./mysqld_exporter -config.my-cnf=".my.cnf"
ss -tulnp |grep 9104

2,方式二,使用systemd管理。

添加启动配置(mysqld_exporter部署在MySQL所在主机的配置,这里仅供演示,本例中不使用这个)

vim /usr/lib/systemd/system/mysqld_exporter.service

[Unit]
Description=mysqld_exporter
After=network.target [Service]
Type=simple
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf /usr/local/mysqld_exporter/.my.cnf
Restart=on-failure [Install]
WantedBy=multi-user.target

注意:启动加载配置/usr/local/mysqld_exporter/.my.cnf不能再加单引号或者双引号,否则系统会附带识别,从而报配置文件不存在。

添加启动配置(mysqld_exporter部署在prometheus所在主机的配置,本例中使用这个配置)

vim /usr/lib/systemd/system/mysqld_exporter.service

[Unit]
Description=mysqld_exporter
After=network.target [Service]
Type=simple
Environment=DATA_SOURCE_NAME=root:WritenGoodCode3367;;@(192.168.0.254:3306)/
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter
Restart=on-failure [Install]
WantedBy=multi-user.target

Environment=DATA_SOURCE_NAME=root:WritenGoodCode3367;;@(192.168.0.254:3306)/

设置 DATA_SOURCE_NAME 变量,包含数据库信息:用户名:密码@(mysql地址:mysql端口)/,最后的/不能省略

加载配置并启动。

systemctl daemon-reload
systemctl start mysqld_exporter
systemctl status mysqld_exporter
systemctl enable mysqld_exporter
ss -tulnp | grep 9104

4,配置 prometheus.yml 添加监控目标

vim /usr/local/prometheus/prometheus.yml
- job_name: 'mysql'
static_configs:
- targets: ['localhost:9104']
labels:
instance: db1

重启服务。

systemctl restart prometheus

或者通过命令热加载:

curl  -XPOST localhost:9090/-/reload

5,配置 Grafana 的模板

mysql_exporter 在 Grafana 上为我们提供好了 Dashboard 模板:https://grafana.com/grafana/dashboards/7362

下载后在 Grafana 中导入 json 模板就可以看到官方这样的示例截图啦:



最新文章

  1. [Linux] zip 与 unzip 命令
  2. 找到MVC框架中前端URL与后端同步的解决方案
  3. 我对Java的java.lang.Class这个类的深入理解
  4. vb中&和+的区别
  5. spring <context:component-scan>(转)
  6. hive常见问题解决干货大全
  7. Application 可以存储全局变量
  8. 转载:JS触发服务器控件的单击事件
  9. 《JavaScript网页经典特效300例》
  10. 在MAC上安装GitHub DeskTop
  11. css 样式表 基础 样式
  12. Postman教程——创建第一个集合
  13. pytest 13 使用自定义标记mark
  14. 日常记Bug
  15. uclibc,eglibc,glibc,Musl-libc之间的区别和联系
  16. Ubuntu12.04下解决sudo apt-get update警告Duplicate sources.list entry
  17. Spark机器学习(10):ALS交替最小二乘算法
  18. C# 异常和异常处理
  19. springMVC中如何访问WebContent中的资源文件
  20. 20145339顿珠 MS08_067漏洞测试

热门文章

  1. SpringBoot接口 - 如何优雅的对参数进行校验?
  2. docker安装dvwa
  3. HashMap中的哈希函数分析
  4. 2022-7-9 html 第七组 刘昀航
  5. Solution -「CF645F」Cowslip Collections
  6. tokitsukaze and Soldier 来源:牛客网
  7. go交叉编译,部署到linux上出现cannot execute binray file的解决方案
  8. 选择语句-IF和标准if-else语句以及if-else语句的扩展
  9. input 输入框背景色设置为透明
  10. 从RabbitMQ平滑迁移到RocketMQ技术实战