在日常运维中经常会遇到有多个mysql要监控,如果每个mysql启动一个export显然太浪费资源了,那么其实prometheus是有通过传参给export的然后进行监控的方式,下面我们来具体介绍一下。(测试的话msyql自己安装就好)

1、安装mysqld_exporter

自己从官网下载mysqld_exporter

https://prometheus.io/download/

解压

tar xf mysqld_exporter-0.14.0.linux-amd64.tar.gz
mv mysqld_exporter-0.12.1.linux-amd64 /usr/local/mysqld_exporter

2、配置数据库认证

[root@localhost ~]# cd /usr/local/mysqld_exporter/
[root@localhost mysqld_exporter]# vi mysqld_exporter.cnf 
[client]
user=mysqld_exporter
password=123456
#这个授权自己在数据库中授好对应的权限不然会报错

3、创建系统服务启动配置文件mysqld_exporter.service

root@localhost ~]# vi /usr/lib/systemd/system/mysqld_exporter.service
[Unit]
Description=Prometheus MySQL daemon
After=network.target




[Service]
User=root
Group=root
Type=simple
Restart=always
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter \
    --config.my-cnf=/usr/local/mysqld_exporter/mysqld_exporter.cnf \
    --collect.global_status \
    --collect.auto_increment.columns \
    --collect.info_schema.processlist \
    --collect.binlog_size \
    --collect.info_schema.tablestats \
    --collect.global_variables \
    --collect.info_schema.innodb_metrics \
    --collect.info_schema.query_response_time \
    --collect.info_schema.userstats \
    --collect.info_schema.tables \
    --collect.perf_schema.tablelocks \
    --collect.perf_schema.file_events \
    --collect.perf_schema.eventswaits \
    --collect.perf_schema.indexiowaits \
    --collect.perf_schema.tableiowaits \
    --collect.slave_status \
    --web.listen-address=0.0.0.0:9104




[Install]
WantedBy=multi-user.target




[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl start mysqld_exporter

4、与prometheus集成

- job_name: 'mysql_exporter'
        file_sd_configs:
          - files:
            - /prometheus/mysql.yml
        metrics_path: /metrics
        relabel_configs:
          - target_label: __address__
            replacement: 172.16.149.216:9104
          - source_labels: [host]
            target_label: __param_host
          - source_labels: [port]
            target_label: __param_port

5、编写mysql.yml

- targets: [172.16.149.216:3306]
  labels:
    instance_id: 216mysql
    role: master
    alias: "test"
    host: "172.16.149.216"
    prot: "3306"
    usr: mysqld_exporter
    instance: '172.16.149.216:3306'


- targets: [172.16.149.217:3306]
  labels:
    instance_id: 217mysql
    role: master
    alias: "test"
    host: "172.16.149.217"
    prot: "3306"
    usr: mysqld_exporter
    instance: '172.16.149.217:3306'

6、页面查看mysql是否正常

至此我们已经部署完毕至于配置grafana 这里就不过多介绍了。官网有模板也可以自己弄