首页 > 数据库 >Zabbix监控Mysql主从

Zabbix监控Mysql主从

时间:2023-08-14 22:01:05浏览次数:71  
标签:bin slave 主机 Mysql zabbix server Zabbix mysql 主从

一、主机规划

服务器

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
#配置数据库
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主从_mysql

解决方案:在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主从_mysql_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 '[email protected]: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主从_zabbix_08

Zabbix监控Mysql主从_mysql_09

五、zabbix-server web端添加监控

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

Zabbix监控Mysql主从_zabbix_10

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

Zabbix监控Mysql主从_mysql_11

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

Zabbix监控Mysql主从_zabbix_12

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

Zabbix监控Mysql主从_zabbix_13

六、zabbix配置邮箱报警

6.1 设置告警媒介

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

Zabbix监控Mysql主从_mysql_14

6.2 设置告警用户

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

Zabbix监控Mysql主从_zabbix_15

Zabbix监控Mysql主从_zabbix_16

6.3 设置触发器

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

Zabbix监控Mysql主从_mysql_17

6.4 设置连续报警动作

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

Zabbix监控Mysql主从_mysql_18

Zabbix监控Mysql主从_mysql_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主从_zabbix_21

七、验证

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

Zabbix监控Mysql主从_zabbix_22

Zabbix监控Mysql主从_mysql_23

Zabbix监控Mysql主从_mysql_24

标签:bin,slave,主机,Mysql,zabbix,server,Zabbix,mysql,主从
From: https://blog.51cto.com/u_15796303/7082237

相关文章

  • Mysql配置文件设置与了解
    [client]port=3306[mysql]default-character-set=gbk[mysqld]port=3306socket=/tmp/mysql.sock#设置mysql的安装目录basedir=F:\\HzqSoft\\MySqlServer51GA#设置mysql数据库的数据的存放目录,必须是data,或者是\\xxx-datadatadir=F:\\HzqSoft\\MyS......
  • WEEK08:MYSQL备份及恢复
    ......
  • 开源数据库Mysql_DBA运维实战 (DCL/日志)
    SQL(StructuredQueryLanguage即结构化查询语言)a.DDL语句 数据库定义语言:数据库,表,视图,索引,存储过程,函数,创建删除ALTER(CREATEDROPALTER) b.DML语句数据库操纵语言:插入数据INSERT、删除数据DELETE、更新数据UPDATEc.DQL语句 数据库查询语言:查询数据SELECTd.DCL语句数......
  • MySQL 使用表的自联结,lag,lead得到该行记录所在连续段长度
    目录题目地址代码题目地址https://leetcode.cn/problems/human-traffic-of-stadium/description/代码##WriteyourMySQLquerystatementbelow##本质上就是连续签到问题呗#SELECTVersion()#8.0.33,用户变量编程用不了witht1as(SELECT*fromstadium......
  • MySQL 可重复读边查边插,边删边查
    测试1:边查边插1--会话1查询select*fromt_sjq--431576--会话2INSERT一行,没有阻塞--会话1再次查询,多了一条select*fromt_sjq--431577测试1:边查边插2--会话1查询select*fromt_sjq--423577(会执行十几秒)--会话2会话1执行开始后马上插入1000条数据-......
  • Zabbix 监控 Tomcat 服务
    目录一、Zabbix监控Tomcat的方式二、实例部署1.客户端配置(1)安装JDK(2)设置JDK变量环境(3)安装tomcat(4)修改配置文件(5)重启2.服务端配置(1)安装zabbix-java-gateway(2)修改配置文件3.Web页面操作一、Zabbix监控Tomcat的方式zabbix通过部署jmx来监控tomcatzabbix提供了一个j......
  • MySQL数据库不可不学的一个数据库福利来了
    Spring常用注解redis视频集合,看完这些别说不会redis代码资料.zip代码资料解压密码:wosn.net第1章数据库简介-8-1[wosn.net].mp4第3章SQL语句规范-8-3[wosn.net].mp4第2章数据库的安装及配置-8-2.mp4第4章数据库的相关操作-8-4.mp4第10章测试字符串类型-8-10[wosn.net].mp4第11......
  • mysql 加索引
    1.PRIMARY  KEY(主键索引)    mysql>ALTER  TABLE  `table_name`  ADD  PRIMARY  KEY(  `column`  ) 2.UNIQUE(唯一索引)      mysql>ALTER  TABLE  `table_name`  ADD  UNIQUE(`column`) 3.INDEX(普通索引)    mysql>ALTER ......
  • 一文玩转MQTT (ESP8266 DHT11 MQTT MYSQL方案)
    本文我们来聊一聊esp8266利用mqtt协议进行通信。并将数据数据存入数据库的操作。关于MQTTMQTT(消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的“轻量级”通讯协议,MQTT最大优点在于,用极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。搭建MQTT服务器......
  • mysql 5.0升级到8.0
    1.替换新的驱动jar包       <dependency>           <groupId>com.mysql</groupId>           <artifactId>mysql-connector-j</artifactId>           <version>8.0.31</version>       </dependency>        ......