三、Zabbix应用服务监控-Mysql

zabbix 监控mysql

3.1 监控Mysql什么内容

1、监控mysql端口状态
2、监控mysql连接数,增删改查,流量等(通过show global status获取)
3、监控mysql主从状态

3.2 如何监控mysql状态

  • 通过监控命令mysql -uroot -pxxx -e ‘show global status’
    • Threads_connnected: 连接数
    • Com_select: 查询总量
    • Com_insert: 插入总量
    • Com_update: 更新总量
    • Com_delete: 删除总量
    • Bytes_received: 流入总流量
    • Bytes_sent: 流出总流量
    • Slow_queries: 慢查询总量

3.3 mysql状态监控实践

3.3.1 环境准备

角色IP
zabbix-server192.168.20.46
mysql192.168.20.48

3.3.2 编写监控脚本

[root@localhost zabbix_agent2.d]# cat /etc/zabbix/zabbix_agent2.d/mysql_status.sh 
#!/bin/bash

key=$1
mysql -uroot  -e "show global status" | grep "\<${key}\>" | awk '{print $2}'

#执行脚本测试
[root@localhost zabbix_agent2.d]# mysql -uroot  -e "show global status" | grep "\<Com_select\>" | awk '{print $2}'
28

3.3.3 添加自定义监控项

[root@localhost zabbix_agent2.d]# cat mysql_status.conf 
UserParameter=mysql.status[*],/bin/bash /etc/zabbix/zabbix_agent2.d/mysql_status.sh $1

[root@localhost zabbix_agent2.d]# /etc/init.d/zabbix-agent2 restart
Shutting down Zabbix agent 2:                              [确定]
Starting Zabbix agent 2: 

3.3.4 服务器端测试取值

[root@zabbix-server ~]# zabbix_get -s 192.168.20.48 -k mysql.status[Threads_connected]
2
[root@zabbix-server ~]# zabbix_get -s 192.168.20.48 -k mysql.status[Com_insert]
0
[root@zabbix-server ~]# zabbix_get -s 192.168.20.48 -k mysql.status[Com_select]
31

3.web3.5 配置zabbix-web

1、创建模版
2、创建监控项
3、创建图形
4、关联对应主机
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.3.6 编写测试脚本

# 执行脚本后,可以通过图形观察事是否正常监控Mysql的增删改查等状态

[root@localhost ~]#  cat mysql.sh
#!/usr/bin/bash
for i in {1..1000}
do
Var=$(echo $RANDOM)
Var2=$(echo $RANDOM)
mysql -uroot -h 127.0.0.1 -e "createdatabase IF NOT EXISTS zabbix_db;
use zabbix_db;
DROP TABLE IF EXISTS test${i};
create table test${i}(id int);
insert into zabbix_db.test${i} values (${Var});
update zabbix_db.test${i} setid=${Var2} where id=${Var};
select * from zabbix_db.test${i};
delete from zabbix_db.test${i} where id=${Var2};"
done

3.4 监控mysql主从状态

Master有数据写入,数据写到Binlog中
Slave节点,通过IO线程获取最新的Binlog数据;
Slave节点,通过SQL线程写入到自己的本地;

3.4.1 mysql主从监控说明

  • 在从库上运行show slave status\G可以查看主从同步信息
    • slave IO Running 观察从库的IO进程是否正常, IO进程用于同步二进制日志
    • slave SQL Running 观察从库的SQL进程是否正常,SQL进程用于执行二进制日志
    • Seconds Behind Master 代表主从同步的延时时间

3.4.2 搭建mysql主从环境

角色IP
MySQL-Master192.168.20.47
MySQL-Slave192.168.20.48

1、安装Mysql

#yum install mariadb mariadb-server -y

2.配置主服务器,增加如下内容

[root@web01 ~]# vim /etc/my.cnf
log-bin=mysql-bin # 启用二进制日志
server-id=7  # 服务器唯一标识
[root@web01 ~]# /etc/init.d/mysqld  restart

3.配置从服务器

[root@localhost tmp]# vi /etc/my.cnf 
log-bin=mysql-bin   # 启用二进制日志(不是必须)
#log-slave-updates=1
server-id = 8  # 服务器唯一标识

[root@localhost tmp]# /etc/init.d/mysqld  restart

4.配置主服务器,在主服务器创建一个slave帐号,并提取mysql-binlog的位置

mysql>  grant REPLICATION SLAVE,REPLICATION CLIENT ON *.* to repl@'192.168.20.%' identified by '123';
mysql> flush privileges;
mysql> show master status;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000001 |      428 |              |                  |                   |
+------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)

5.配置从服务器,连接主服务器

mysql> change master to master_host='192.168.20.47',master_user='repl',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=428;

6.检查主从复制功能赚钱

mysql> start slave;
			 Master_Host: 192.168.20.47
             Slave_IO_Running: Yes #从库通过IO线程将主库上的日志复制到自己的中继日志
            Slave_SQL_Running: Yes #从库通过SQL线程读取中继日志中的事件,在本地重放
            Seconds_Behind_Master: 0 #slave落后master的秒杀

3.4.3 编写监控主从脚本

[root@localhost zabbix_agent2.d]# cat ./mysql_slave_status.sh 
#!/bin/bash
key=$1
mysql -uroot -e "show slave status\G" | grep "\<${key}\>" | awk '{print $2}'

[root@localhost zabbix_agent2.d]# chmod +x mysql_slave_status.sh 
[root@localhost zabbix_agent2.d]# ./mysql_slave_status.sh Slave_SQL_Running
Yes
[root@localhost zabbix_agent2.d]# ./mysql_slave_status.sh Slave_IO_Running
Yes

3.4.4 添加自定义监控项

[root@localhost ~]# cat /etc/zabbix/zabbix_agent2.d/mysql_slave_status.conf 
UserParameter=mysql.slave.status[*],/etc/zabbix/zabbix_agent2.d/mysql_slave_status.sh "$1"
[root@localhost ~]# /etc/init.d/zabbix-agent2 restart

3.4.5 服务端测试取值

[root@zabbix-server ~]# zabbix_get  -s  192.168.20.48 -k mysql.slave.status[Slave_IO_Running]
Yes
[root@zabbix-server ~]# zabbix_get  -s  192.168.20.48 -k mysql.slave.status[Slave_SQL_Running]
Yes

3.4.6配置zabbix-web

1、创建模版
2、创建监控项
3、创建触发器
4、关联对应主机
在这里插入图片描述

#1.触发器1: 两个状态都要为yes
报警:
{Template Mysql Slave Status panpancar:mysql.slave.status[Slave_IO_Running].str(yes)}=0 and {Template Mysql Slave Status panpancar:mysql.slave.status[Slave_SQL_Running].str(yes)}=0
恢复:
{Template Mysql Slave Status panpancar:mysql.slave.status[Slave_IO_Running].str(yes)}=1 and {Template Mysql Slave Status panpancar:mysql.slave.status[Slave_SQL_Running].str(yes)}=1


#2.触发器2:延迟不超过50s
报警:
{Template MySQL Slave Status:mysql.slave.status[Seconds_Behind_Master].last()}>=50
恢复:
{Template MySQL Slave Status:mysql.slave.status[Seconds_Behind_Master].last()}<10s

3.4.7

模拟故障

#slave 节点执行
mysql> create database zabbixdb;

#master节点执行
mysql> create database zabbixdb;

收到报警
在这里插入图片描述

恢复故障

mysql> stop slave;
Query OK, 0 rows affected (0.03 sec)

mysql> set global sql_slave_skip_counter=1;
Query OK, 0 rows affected (0.00 sec)

mysql> start slave;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值