prometheus+grafana监控mysql主从+email+钉钉报警

mysql主从节点设置

客户机所属服务
192.168.107.167mysql主节点(master)
192.168.107.168mysql从节点(slave)

对两台客户端分别安装mysql并设置主从关系
在这里插入图片描述
192.168.107.167(master节点)设置主从复制的用户
在这里插入图片描述
mysql主从节点分别在配置文件中设置server-id,master需要开启binlog日志 不指定路径就是默认存放data,然后重启mysqld服务
在这里插入图片描述
在从库上设置主从的信息
在这里插入图片描述

然后启动slave,查看slave的状态
在这里插入图片描述
在这里插入图片描述
然后我们这两台主从上安装mysqld_exporter,用作prometheus的监控 官网下载文档
在这里插入图片描述
下载好以后分别解压并移动到/usr/local下

tar -zxvf mysqld_exporter-0.15.0.linux-amd64.tar.gz && mv mysqld_exporter-0.15.0.linux-amd64 /usr/local/mysqld_exporter

在这里插入图片描述
然后进入两台数据库创立一个供mysqld_exporter监控端的用户
我这里使用的mysql5.7创建用户和设置权限同步进行的

在这里插入图片描述
在/usr/local/mysqld_exporter下创建一个my.cnf作为mysql_exporter服务的配置文件
在这里插入图片描述
我这里设置一个将其添加到systemctl管理中并且让他在mysqld启动后自启

[Unit]
Description=MySQL Exporter
After=mysqld.service

[Service]
ExecStart=/usr/local/mysqld_exporter/mysqld_exporter --config.my-cnf=/usr/local/mysqld_exporter/my.cnf
Restart=always

[Install]
WantedBy=multi-user.target

在这里插入图片描述

刷新一下systemctl服务,然后启动看一下
在这里插入图片描述
在这里插入图片描述

prometheus端设置

客户端部署服务
192.168.107.166部署prometheus服务

安装prometheus可见文章prometheus的安装部署

打开prometheus的配置文件增加这两台主机

  - job_name: 'mysql_node1'
    static_configs:
      - targets: ["192.168.107.167:9104"]
  - job_name: 'mysql_node2'
    static_configs:
      - targets: ["192.168.107.168:9104"]

在这里插入图片描述
然后重启prometheus服务,进入web界面看一下是否增加
在这里插入图片描述

配置grafana

安装好grafana以后启动服务,进入web界面-首先添加源
在这里插入图片描述
然后再仪表盘中新建导入:
在这里插入图片描述
在这里插入图片描述

选择prometheus然后导入
在这里插入图片描述
在这里插入图片描述

设置alertmanager报警

首先我们给监控项设置一个触发器即规则

mkdir /usr/local/prometheus/rules/
vim /usr/local/prometheus/rules/mysql.yml
groups:
- name: Mysql-rules
  rules:
  - alert: Mysql status
    expr: mysql_up == 0
    for: 5s
    labels:
      severity: error
    annotations:
      summary: "您的 {{ $labels.instance }} 的Mysql已停止运行!"
      description: "Mysql数据库宕机,请检查"

  - alert: Mysql slave io thread status
    expr: mysql_slave_status_slave_io_running == 0
    for: 5s
    labels:
      severity: error
    annotations:
      summary: "您的 {{ $labels.instance }} Mysql slave io thread已停止"
      description: "Mysql主从IO线程故障,请检测"

  - alert: Mysql slave sql thread status
    expr: mysql_slave_status_slave_sql_running == 0
    for: 5s
    labels:
      severity: error
    annotations:
      summary: "您的 {{ $labels.instance }} Mysql slave sql thread已停止"
      description: "Mysql主从sql线程故障,请检测"

Mysql-rules组下有三个,分别检测

检测项含义
mysql_upmysql服务状态
mysql_slave_status_slave_io_runningmysql主从复制的io线程状态
mysql_slave_status_slave_sql_runningmysql主从复制的sql线程状态

mysql的状态,io线程状态以及sql线程状态,这三个指令都是可以在prometheus所识别到的

在这里插入图片描述

修改一下prometheus的配置文件,然后重启prometheus服务,这里我们顺便把alertmanager的配置也写上
在这里插入图片描述

查看prometheus的web页面的rules规则里面是否存在
在这里插入图片描述
下载alertmanager,并解压到/usr/local下
官网下载地址
在这里插入图片描述

tar -zxvf alertmanager-0.26.0.linux-amd64.tar.gz && mv alertmanager-0.26.0.linux-amd64 /usr/local/alertmanager

我这里使用的是钉钉报警,下载插件并解压,修改配置文件,详情见prometheus的部署安装钉钉报警

配制好webhook的配置文件
在这里插入图片描述
写入systemctl管理服务

//vim /usr/lib/systemd/system/prometheus-webhook.service
[Unit]
Description=Prometheus Webhook
After=alertmanager.service

[Service]
WorkingDirectory=/usr/local/prometheus-webhook
ExecStart=/usr/local/prometheus-webhook/prometheus-webhook-dingtalk --config.file=/usr/local/prometheus-webhook/config.yml
Restart=on-failure

[Install]
WantedBy=multi-user.target

刷新服务

systemctl daemon-reload

随后我们设置一下alertmanager的配置文件里面钉钉报警

global:
  resolve_timeout: 5m
route:
  group_by: ['alertname']
  group_wait: 20s
  group_interval: 5m
  repeat_interval: 5m
  receiver: 'dingding'
receivers:
- name: 'dingding'
  webhook_configs:
  - url: http://localhost:8060/dingtalk/webhook1/send
    send_resolved: true
inhibit_rules:
  - source_match:
      severity: 'critical'
    target_match:
      severity: 'warning'
    equal: ['alertname', 'dev', 'instance']

随后我们启动两个服务:

systemctl start alertmanager.service prometheus-webhook.service

查看端口是否起来
在这里插入图片描述
随后进行测试,停掉从节点上面的mysqld服务
在这里插入图片描述
查看prometheus的web页面已经发生告警
在这里插入图片描述
之前有一个误区就是为什么监控的9100端口
在这里插入图片描述
然后停掉mysqld他会告警,这里我们需要明白的是,我们监控的是9100端口mysqld_exporter服务,但是我们设置的监控规则告警信息是mysql_up,这个是属于mysqld_exporter服务其中的一种哦

在这里插入图片描述

为什么我没收到告警信息?

检查你的alertmanager配置,里面指定的是否正确
如果是钉钉检查钉钉插件里面的config.yml文件是否正确
最重要的一点,如果你确信上面两个没错,那就请检查一下prometheus的配置文件里面.alter报警是否指向了正确的
在这里插入图片描述

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值