当前位置:首页 > 技术 > 正文内容

Prometheus–Prometheus 监控之 MySQL

醉清风2020-11-03技术145

prometheus监控MySQL需要用到mysql_exporter。

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

1、安装部署

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


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


$ cd /usr/local/src
$ wget https://github.com/prometheus/mysqld_exporter/releases/download/v0.10.0/mysqld_exporter-0.10.0.linux-amd64.tar.gz
$ tar xf mysqld_exporter-0.10.0.linux-amd64.tar.gz
$ mv mysqld_exporter-0.10.0.linux-amd64 /usr/local/mysqld_exporter

2,授权连接。

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

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

注意:这里只授权了本地登陆,说明这个授权适用于mysql_exporter监控工具部署在MySQL Server上的情况,如果是部署在Prometheus Server上,则需要授权远程登陆。


3,启动服务。

创建配置信息文件。

cd /usr/local/mysqld_exporter
vim .my.cnf
[client]
user=exporter
password=123456

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


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

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

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

添加启动配置:


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不能再加单引号或者双引号,否则系统会附带识别,从而报配置文件不存在。


加载配置并启动。

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

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

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

重启服务。

$ systemctl restart prometheus

或者通过命令热加载:

curl  -XPOST localhost:9090/-/reload

5,配置 Grafana 的模板

mysql_exporter 在 Grafana 上为我们提供好了 Dashboard 模板:https://grafana.com/api/dashboards/9623/revisions/4/download

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

无标题.png

附注MySQL告警yml文件



groups:
- name: MySQLStatsAlert
    rules:
    - alert: MySQL is down
        expr: mysql_up == 0
        for: 1m
        labels:
            severity: critical
        annotations:
            summary: "Instance {{ $labels.instance }} MySQL is down"
            description: "MySQL database is down. This requires immediate action!"
 
    - alert: Mysql_High_QPS
        expr: rate(mysql_global_status_questions[5m]) > 500 
        for: 2m
        labels:
            severity: warning
        annotations:
            summary: "{{$labels.instance}}: Mysql_High_QPS detected"
            description: "{{$labels.instance}}: Mysql opreation is more than 500 per second ,(current value is: {{ $value }})"  
    - alert: Mysql_Too_Many_Connections
        expr: rate(mysql_global_status_threads_connected[5m]) > 200
        for: 2m
        labels:
            severity: warning
        annotations:
            summary: "{{$labels.instance}}: Mysql Too Many Connections detected"
            description: "{{$labels.instance}}: Mysql Connections is more than 100 per second ,(current value is: {{ $value }})"  
 
    - alert: Mysql_Too_Many_slow_queries
        expr: rate(mysql_global_status_slow_queries[5m]) > 3
        for: 2m
        labels:
            severity: warning
        annotations:
            summary: "{{$labels.instance}}: Mysql_Too_Many_slow_queries detected"
            description: "{{$labels.instance}}: Mysql slow_queries is more than 3 per second ,(current value is: {{ $value }})"  
 
    - alert: SQL thread stopped
        expr: mysql_slave_status_slave_sql_running != 1
        for: 1m
        labels:
            severity: critical
        annotations:
            summary: "Instance {{ $labels.instance }} Sync Binlog is enabled"
            description: "SQL thread has stopped. This is usually because it cannot apply a SQL statement received from the master."
    - alert: Slave lagging behind Master
        expr: rate(mysql_slave_status_seconds_behind_master[5m]) >30 
        for: 1m
        labels:
            severity: warning 
        annotations:
            summary: "Instance {{ $labels.instance }} Slave lagging behind Master"
            description: "Slave is lagging behind Master. Please check if Slave threads are running and if there are some performance issues!"


扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由红柚酱发布,如需转载请注明出处。

转载请注明出处:https://www.notenet.cn/post/138.html

相关文章

RHSA-2020:2664-重要: 内核 安全和BUG修复更新

RHSA-2020:2664-重要: 内核 安全和BUG修复更新

1、漏洞提示:RHSA-2020:2664-重要: 内核 安全和BUG修复更新2、漏洞描述:漏洞编号漏洞公告漏洞描述CVE-2020-0543hw:特殊寄存器缓冲器数据采样(SRB...

如何实现WordPress文章页自动推送提交MIP/AMP页面?

如何实现WordPress文章页自动推送提交MIP/AMP页面?

如果是安装 AMP 插件实现的 AMP 页面或者 MIP 页面,那么文章的 AMP 地址是在文章原地址后面加后缀 /amp,页面的 AMP 地址是在页面原地址后面加后缀 ?amp ,MIP 的则加...

Truncate Table的用法讲解

Truncate Table的用法讲解

TRUNCATE TABLE删除表中的所有行,而不记录单个行删除操作。语法TRUNCATE TABLE name参数name是要截断的表的名称或要删除其全部行的表的名称。注释TRU...

linux磁盘分区详解

linux磁盘分区详解

1.磁盘的分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个。且基本分区可以马上被使用但不能再分区...

ubuntu18.04 安装 LNMP

ubuntu18.04 安装 LNMP

环境:Ubuntu18.04 nginx1.4  php7.2  mysql5.71.安装 nginx#sudo apt install nginx确...