编辑 | blame | 历史 | 原始文档

简介

mysql_exporter是用来收集MysQL或者Mariadb数据库相关指标的,mysql_exporter需要连接到数据库并有相关权限。既可以用二进制安装部署,也可以通过容器形式部署

二进制部署

  1. 部署前大家可以先前往github发行版地址看一下最新的部署包:https://github.com/prometheus/mysqld_exporter/releases
  2. 截至目前最新版本为0.12.1,以后若有更新,大家根据版本修改下方的脚本即可
  3. 登录Linux服务器(以Centos7.x为例),下载部署包,由于是github,网络会有些慢,大家若等不及可以开发机下载,然后再传至服务器也可。下载包为:mysqld_exporter-0.12.1.linux-amd64.tar.gz
    ~~~shell
    [root@JD ~]# cd /usr/local/src/
    [root@JD src]# wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.12.1/mysqld_exporter-0.12.1.linux-amd64.tar.gz
    ~~~
    ![](../../../images/screenshot_1612629327540.png)
  4. 部署包下载完毕,开始安装
    ~~~shell
    [root@JD src]# tar xf mysqld_exporter-0.12.1.linux-amd64.tar.gz -C /data
    [root@JD src]# mv /data/mysqld_exporter-0.12.1.linux-amd64 /data/mysqld_exporter
    ~~~
    ~~~shell
    [root@JD src]# cd /data/mysqld_exporter
    [root@JD mysqld_exporter]# ls
    LICENSE mysqld_exporter NOTICE
    ~~~
    ![](../../../images/screenshot_1612629447268.png)
  5. 创建配置文件.my.cnf ,填入如下内容后保存:wq
    ~~~shell
    [client]
    host=11x.xx.xx.7
    user=exporter
    password=1qaz@WSX
    ~~~
    ~~~shell
    [root@JD mysqld_exporter]# vim .my.cnf
    [root@JD mysqld_exporter]# cat .my.cnf
    [client]
    host=11x.xx.xx.7
    user=exporter
    password=1qaz@WSX
    ~~~
    ![](../../../images/screenshot_1612629818453.png)
  6. mysql创建用户并授权,注意服务ip不要填错
    ~~~shell
    CREATE USER 'exporter'@'11x.xx.xx.7' IDENTIFIED BY '1qaz@WSX';
    GRANT PROCESS, REPLICATION CLIENT, SELECT ON . TO 'exporter'@'11x.xx.xx.7';
    flush privileges;
    ~~~
    ![](../../../images/screenshot_1612630045035.png)
  7. 进行系统service编写
  • 创建mysqld_exporter.service配置文件
    ~~~shell
    [root@JD mysqld_exporter]# cd /usr/lib/systemd/system
    [root@JD system]# vim mysqld_exporter.service
    ~~~
  • mysqld_exporter.service 文件填入如下内容后保存:wq
    ~~~shell
    [Unit]
    Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/data/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/mysqld_exporter/.my.cnf --web.listen-address=:9104

[Install]
WantedBy=multi-user.target
~~~
* 查看配置文件
~~~shell
[root@JD system]# cat mysqld_exporter.service
[Unit]
Description=https://prometheus.io

[Service]
Restart=on-failure
ExecStart=/data/mysqld_exporter/mysqld_exporter --config.my-cnf=/data/mysqld_exporter/.my.cnf --web.listen-address=:9104

[Install]
WantedBy=multi-user.target
~~~
![](../../../images/screenshot_1612630121890.png)
* 刷新服务配置并启动服务
~~~shell
[root@JD system]# systemctl daemon-reload
[root@JD system]# systemctl start mysqld_exporter.service
~~~
* 查看服务运行状态
~~~shell
[root@JD system]# systemctl status mysqld_exporter.service
~~~
![](../../../images/screenshot_1612630265709.png)
* 设置开机自启动
~~~shell
[root@JD mysqld_exporter]# systemctl enable mysqld_exporter.service
Created symlink from /etc/systemd/system/multi-user.target.wants/mysqld_exporter.service to /usr/lib/systemd/system/mysqld_exporter.service.
~~~
![](../../../images/screenshot_1612630538762.png)
* 测试服务返回
~~~shell
[root@JD mysqld_exporter]# curl localhost:9104/metrics
~~~
![](../../../images/screenshot_1612630384633.png)

Docker部署

  1. 在Docker部署之前,首先要确保拥有Docker环境,具体安装可以参考文档6.2.3.3章节
  2. 拉取mysqld-exporter最新镜像
    ~~~shell
    [root@JD ~]# docker pull prom/mysqld-exporter
    ~~~
    ![](../../../images/screenshot_1612688784785.png)
  3. 创建mysql监听用户并授权,注意服务ip不要填错
    ~~~
    CREATE USER 'exporter'@'11x.xx.xx.7' IDENTIFIED BY '1qaz@WSX';
    GRANT PROCESS, REPLICATION CLIENT, SELECT ON . TO 'exporter'@'11x.xx.xx.7';
    flush privileges;
    ~~~
    ![](../../../images/screenshot_1612630045035.png)
  4. 启动容器
    注意:⚠️ 若二进制章节部署后,需要执行systemctl stop mysqld_exporter.service关闭服务,否则会造成端口冲突,或者docker的端口映射改为-p 9194:9104也可。注意环境变量DATA_SOURCE_NAME的mysql帐号密码与地址无误
    ~~~shell
    [root@JD ~]# docker run -d --restart=always --name mysqld-exporter -p 9104:9104 -e DATA_SOURCE_NAME="exporter:1qaz@WSX@(11x.xx.xx.7:3306)/" prom/mysqld-exporter
    ~~~
    ![](../../../images/screenshot_1612689035384.png)
  5. 测试服务返回
    ~~~shell
    [root@JD ~]# curl localhost:9104/metrics
    ~~~
    ![](../../../images/screenshot_1612689193717.png)

对接prometheus

  1. 打开prometheus.yml
    ~~~yaml

    监控mysql

  • job_name: 'mysql'
    static_configs:
    • targets: ['11x.xx.xx.7:9104']
      labels:
      instance: mysqld-exporter
      ~~~
      ![](../../../images/screenshot_1612689778649.png)
  1. 执行prometheus配置刷新
    ~~~shell
    [root@JD ~]# curl -XPOST localhost:9090/-/reload
    ~~~
  2. 打开prometheus,搜索mysql,可以看到出现了很多的参数指标
    ![](../../../images/screenshot_1612689821544.png)
  3. 打开targets,可以看到节点状态已经UP
    ![](../../../images/screenshot_1612689865588.png)

  4. mysqld-exporter插件安装完毕,接下来就是对接监控大屏了,通过它我们可以很轻松地监控mysql服务的各项指标
  5. 具体对接grafana导入监控大屏请看后续章节