Zabbix 5.0 监测mysql
本文以及实践过程中,基本上参考并抄写了以下 2 篇博文https://www.jb51.net/article/197255.htmhttps://www.cnblogs.com/daofaziran/p/12559948.html先感谢以上 2 位博主,并表示惭愧!抄作业了!被控端(azbbix-agent)准备数据库$ mysql -u root -p#创建数据库zabbix,用于存储收集的数
本文以及实践过程中,基本上参考并抄写了以下 2 篇博文
https://www.jb51.net/article/197255.htm
https://www.cnblogs.com/daofaziran/p/12559948.html
先感谢以上 2 位博主,并表示惭愧!抄作业了!
被控端(azbbix-agent)准备数据库
$ mysql -u root -p
#创建数据库zabbix,用于存储收集的数据
CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin;
用户名zabbix,假设密码 Zabbix@1234567890
grant all on . to ‘zabbix’@‘localhost’ identified by ‘Zabbix@1234567890’;
被控端(azbbix-agent)创建配置文件
$ sudo vim /etc/zabbix/.my.cnf
[mysql]
host=localhost
user=zabbix
password=123456
socket=/data/mysql/mysql.sock
[mysqladmin]
host=localhost
user=zabbix
password=Zabbix@1234567890
socket=/data/mysql/mysql.sock
# mysql.sock文件通过find / -name mysql.sock找出路径
被控端(azbbix-agent)创建mysql监控脚本
$ whereis zabbix
$ cd /etc/zabbix
$ sudo mkdir scripts/
$ sudo vim mysql_check.sh
#!/bin/bash
mysql="mysql -uzabbix -pzabbix@88553212#068"
case $1 in
# mysql主从状态
slave_status)
$mysql -e "show slave status\G" |grep "Yes" |wc -l
;;
# mysql流量 接受
Bytes_received)
mysqladmin extended-status |grep "Bytes_received" |awk '{print $4}'
;;
# mysql流量 发送
Bytes_sent)
mysqladmin extended-status |grep "Bytes_sent" |awk '{print $4}'
;;
# mysql常规操作 增
Com_insert)
mysqladmin extended-status |grep -w "Com_insert" |awk '{print $4}'
;;
# mysql常规操作 删
Com_delete)
mysqladmin extended-status |grep -w "Com_delete" |awk '{print $4}'
;;
# mysql常规操作 改
Com_update)
mysqladmin extended-status |grep -w "Com_update" |awk '{print $4}'
;;
# mysql常规操作 查
Com_select)
mysqladmin extended-status |grep -w "Com_select" |awk '{print $4}'
;;
# mysql tps
tps)
mysqladmin status |awk '{print $6/$2}'
;;
# mysql qps=(rollback+commit)/uptime
qps)
rollback=$(mysqladmin extended-status |grep -w "Com_rollback" |awk '{print $4}')
commit=$(mysqladmin extended-status |grep -w "Com_commit" |awk '{print $4}')
uptime=$(mysqladmin status |awk '{print $2}')
count=$[$rollback+$commit]
echo "$count $uptime" > /tmp/a.txt
cat /tmp/a.txt |awk '{print $1/$2}'
;;
# 库大小 我们这里拿mysql库举例
db)
$mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql'" |sed -n '2p'
;;
# 表大小 我们这里拿mysql下面的user表举例
tb)
$mysql -e "select sum(data_length) from information_schema.tables where table_schema='mysql' and table_name='user'" |sed -n '2p'
;;
esac
$ sudo chmod +x mysql_check.sh
被控端(azbbix-agent)创建agent监测key
$ cd /etc/zabbix/zabbix_agentd.conf.d
$ sudo vim mysql_check.conf
UserParameter=mysql.check[*],/etc/zabbix/scripts/mysql_check.sh $1
监测key : mysql.check,并带上一个参数
对应的shell 脚本 /etc/zabbix/scripts/mysql_check.sh
需要一个参数 $1
重启 zabbix-agent 服务
$ sudo service zabbix-agent restart
主控端(Zabbix-server)验证
假设以上被控端内网 ip : 192.168.0.123
$ zabbix_get -s 192.168.0.123 -k mysql.check[db]
mysql: [Warning] Using a password on the command line interface can be insecure.
465855
$ zabbix_get -s 192.168.0.123 -k nginx.status[active]
1
出现过的错误
$ zabbix_get -s 192.168.0.123 -k mysql.check[slave_status]
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1227 (42000) at line 1: Access denied; you need (at least one of) the SUPER, REPLICATION CLIENT privilege(s) for this operation
0
过程中没有注意到,有的 mysql 设置的密码规则比较严格
重新设置一下
GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@’%’ IDENTIFIED BY ‘Zabbix@1234567890’;
grant all on . to ‘zabbix’@‘localhost’ identified by ‘Zabbix@1234567890’;
Zabbix WEB控制台增加监控模版
- 先计划好需要加上 mysql 监测的主机,建立一个主机群组(模版必须对应一个主机群组)
- 创建应用集
- 创建监控项
mysql.check[Bytes_received]
-
克隆并创建其他监控项
-
创建图形
这里我只创建了一个图形,就是表示流量的 2 个监控项
- 查看mysql流量数据
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)