Zabbix监控Mysql主从
  CXvnc1NhAWTQ 2023年11月02日 59 0

一、主机规划

服务器

IP

zabbix-server

192.168.131.12

mysql-masterzabbix-agent

192.168.131.13

mysql-slavezabbix-agent

192.168.131.14

二、部署&配置zabbix-server

2.1 部署zabbix

#安装Zabbix仓库。这里部署zabbix6.4
wget https://repo.zabbix.com/zabbix/6.4/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.4-1+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.4-1+ubuntu22.04_all.deb
apt update
#安装zabbix-server,web前端,agent
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-apache-conf zabbix-sql-scripts zabbix-agent
#配置数据库
apt install -y mariadb-server mariadb-client
#mysql
MariaDB [(none)]> create database zabbix character set utf8mb4 collate utf8mb4_bin;
MariaDB [(none)]> create user zabbix@localhost identified by 'zabbix';
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost;
MariaDB [(none)]> set global log_bin_trust_function_creators = 1;
MariaDB [(none)]> quit
#导入初始架构和数据,系统将提示您输入新创建的密码
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p zabbix
#导入数据库架构后禁用log_bin_trust_function_creators选项
#mysql
MariaDB [(none)]> set global log_bin_trust_function_creators = 0;
MariaDB [(none)]> quit

2.2 zabbix服务端配置

编辑配置文件/etc/zabbix/zabbix_server.conf

DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
DBPort=3306

2.3 解决时区问题

编辑配置文件/etc/zabbix/apache.conf

<IfModule
mod_php7.c>
       ....
        php_value date.timezone Asia/shanghai

2.4 zabbix启动&初始化

启动zabbix_server和zabbix_agent,设置开机自启的同时使之马上启动

systemctl enable --now zabbix-server zabbix-agent apache2

访问http://192.168.131.12/zabbix,一路设置完成之后,默认登录信息如下:Admin/zabbix。查看Zabbix监控图形时出现乱码:

Zabbix监控Mysql主从_zabbix

解决方案:在windows上找到存放字体的地方,默认的位置在C:\Windows\Fonts目录下,找一个字体文件,上传到/usr/share/zabbix/assets/fonts目录,更改其后缀为.ttf(eg:这里直接用宋体)

Zabbix监控Mysql主从_zabbix_02

vim /usr/share/zabbix/include/defines.inc.php
#修改如下内容
define('ZBX_GRAPH_FONT_NAME','simsun');
define('ZBX_FONT_NAME','simsun');

再次重启zabbix-server后,图形显示就正常了。

Zabbix监控Mysql主从_mysql_03

三、部署Mysql主从

#安装Mysql
apt -y install mysql-server mysql-client
##配置mysql,之后重启mysql
#主库
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
log_bin=mysql-bin
server_id=1
#从库
vim /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
log_bin=mysql-bin
server_id=2
#主库创建新用户并授权
create user slave@'%' identified with mysql_native_password by 'slave';
grant replication slave on *.* to 'slave'@'%';

Zabbix监控Mysql主从_zabbix_04

从节点进入数据库后做如下配置,最后查看主从状态也是成功的。

CHANGE MASTER TO MASTER_HOST='192.168.131.13',MASTER_USER='slave',MASTER_PASSWORD='slave',MASTER_LOG_FILE='mysql-bin.000002',MASTER_LOG_POS=1072;

Zabbix监控Mysql主从_zabbix_05

注意:如果创建用户不加with mysql_native_password ,则在show slave status \G;时就会出现如下错误:Error connecting to source 'slave@192.168.131.13:3306'. This was attempt 1/86400, with a delay of 60 seconds between attempts. Message: Authentication plugin 'caching_sha2_password' reported error: Authentication requires secure connection.

原因在于,slave用户是带有mysql_native_password插件的。

Zabbix监控Mysql主从_mysql_06

四、Mysql端配置zabbix_agent

在mysql服务器部署zabbix-agent,编辑/etc/zabbix/zabbix_agentd.conf,内容如下:

Server=192.168.131.12
ServerActive=192.168.131.12
#这个是等下在zabbix-web端添加主机时的主机名
Hostname=Zabbix server
#0.0.0.0代表所有IP
ListenIP=0.0.0.0
#监听端口
ListenPort=10050
#zabbix_agent日志路径
LogFile=/var/log/zabbix/zabbix_agentd.log
#扩展配置文件路径
Include=/etc/zabbix/zabbix_agentd.d/*.conf
#是否启用用户自定义监控脚本,1启用,0不启用
UnsafeUserParameters=1

重启zabbix_sgent

systemctl restart zabbix-agent

在mysql slave机器(192.168.131.14)编写脚本。该脚本执行结果为2说明数据库主从同步正常,即2个YES(Slave_IO_Running和Slace_SQL_Running二者值为yes,见如上主从状态的截图)

vim auto_monitor_mysql.sh
#!/bin/bash
mysql -e "show slave status\G" | grep "Running" |awk "{print $2}" | grep -c "Yes"

在/etc/zabbix/zabbix_agent.d目录下新建一配置文件,在其中自建key键值,之后重启zabbix-agent。

vim userparameter_mysql_slave.conf
#键:mysql.replication,值:sh /root/auto_monitor_mysql.sh的执行结果
UserParameter=mysql.replication,sh /root/auto_monitor_mysql.sh

测试:zabbix_get -s 192.168.131.14 -k "mysql.replication"。显示结果如下:

Zabbix监控Mysql主从_mysql_07

解决方法:为mysql命令所在的命令脚本设置u+s权限:chmod u+s /usr/bin/mysql,让执行该命令的用户以该命令拥有者的权限去执行。再次测试就正常了。

Zabbix监控Mysql主从_mysql_08

Zabbix监控Mysql主从_zabbix_09

五、zabbix-server web端添加监控

数据采集->主机->添加主机,接口为mysql slave(zabbix agent)端的地址。

Zabbix监控Mysql主从_zabbix_10

点击添加的slave主机的监控项->创建监控项

Zabbix监控Mysql主从_mysql_11

点击slave主机的图形->创建图表,添加对应的监控项

Zabbix监控Mysql主从_mysql_12

点击监测->slave主机->图形,查看图形

Zabbix监控Mysql主从_zabbix_13

六、zabbix配置邮箱报警

6.1 设置告警媒介

告警->媒介->Email,设置告警媒介

Zabbix监控Mysql主从_mysql_14

6.2 设置告警用户

用户->用户,选择对应用户,选择报警媒介,添加,最后更新

Zabbix监控Mysql主从_zabbix_15

Zabbix监控Mysql主从_mysql_16

6.3 设置触发器

数据采集->主机,找到创建的slave主机,点击触发器,创建触发器。设置表达式时选择对应的监控项,使之不等于2即可。

Zabbix监控Mysql主从_zabbix_17

6.4 设置连续报警动作

告警->动作->触发器动作->创建动作。添加触发条件,指定主机。这里要设置连续报警。

Zabbix监控Mysql主从_mysql_18

Zabbix监控Mysql主从_zabbix_19

Zabbix监控Mysql主从_mysql_20

对以上步骤的说明:

  • 步骤 1:设置时间为 60 秒,即 60 秒之后没有解除报警则执行操作步骤 2。默认操作步骤持续时间:60,单位默认为秒。
  • 步骤 2:步骤 2 - 0 意思为在没有解除报警的情况下每隔 60 秒就发送一次报警信息(因为使用了默认动作)。
  • 发送到用户:这里用户需要有超级管理员权限才可以接收到报警信息。

       在操作中选择操作->添加,此步的意思是当发生故障时发送指定消息给指定用户/群组。操作部分的自定义消息内容如下:

主题:服务器{HOSTNAME}发生:{TRIGGER.NAME}故障!
消息:
  触发器状态:{TRIGGER.STATUS}
  严重程序:{TRIGGER.SEVERITY}
  告警信息:{TRIGGER.NAME}
  告警主机:{HOST.NAME}
  问题详情:{ITEM.NAME}:{ITEM.VALUE}
  主机IP:{HOST.IP}
  告警时间:{EVENT.DATE} {EVENT.TIME}
  事件ID:{EVENT.ID}

6.5 设置恢复操作

之后设置恢复操作。选择操作->恢复操作,此步的意思是当故障恢复时发送指定消息给指定用户/群组。自定义消息内容如下:

主题:服务器{HOSTNAME}的{TRIGGER.NAME}故障已恢复!
消息:
  主机IP:{HOST.IP}
  恢复时间:{EVENT.DATE} {EVENT.TIME}
  恢复等级:{TRIGGER.SEVERITY}
  恢复信息:{TRIGGER.NAME}-{ITEM.VALUE}
  事件ID:{EVENT.ID}

Zabbix监控Mysql主从_mysql_21

七、验证

先停止Mysql主服务器,看效果。也可以在zabbix-server web端的报表->动作日志去查看。由于超过1分钟未解决,邮件就会一直发,就达到了持续报警的效果。之后再启动mysql主服务器,发现恢复邮件也能发到。

Zabbix监控Mysql主从_zabbix_22

Zabbix监控Mysql主从_zabbix_23

Zabbix监控Mysql主从_zabbix_24

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  SzVG4h2uFmuP   2023年12月06日   20   0   0 zabbix
  eHipUjOuzYYH   2023年12月10日   26   0   0 mysqlsqlUser
  SzVG4h2uFmuP   2023年12月06日   24   0   0 监控zabbix
  SzVG4h2uFmuP   2023年12月12日   29   0   0 zabbix
  SzVG4h2uFmuP   2023年12月09日   40   0   0 zabbix
  9JCEeX0Eg8g4   2023年11月28日   15   0   0 主数据数据库mysql
  9JCEeX0Eg8g4   2023年12月11日   23   0   0 mysql配置文件