监控内容
# 1、 主从复制状态
# 2、 mysql增删改查次数
# 21、mysql的insert次数
# 22、mysql的delect次数
# 23、mysql的update次数
# 24、mysql的select次数
# 3、 mysql启动时间
# 4、 mysql的qps 每秒查询速率
# 45 mysql的tps 每秒事务速率
# 5、 主从同步延迟
# 6、 磁盘剩余空间 /分区 /data分区
# 7、 内存使用百分比
# 8、 swap使用百分比
# 9、 网卡下载流量速率
# 95、网卡上传流量速率
# 10、mysql的当前连接数
监控内容获取脚本
#! /usr/bin/bash
# echo "
# ============================================
# 工具箱说明
# 1、 主从复制状态
# 2、 mysql增删改查次数
# 21、mysql的insert次数
# 22、mysql的delect次数
# 23、mysql的update次数
# 24、mysql的select次数
# 3、 mysql启动时间
# 4、 mysql的qps 每秒查询速率
# 45 mysql的tps 每秒事务速率
# 5、 主从同步延迟
# 6、 磁盘剩余空间 /分区 /data分区
# 7、 内存使用百分比
# 8、 swap使用百分比
# 9、 网卡下载流量速率
# 95、网卡上传流量速率
# 10、mysql的当前连接数
# q、 退出程序
# =============================================
# "
## mysql 数据库用户、密码
user=root # 数据库用户
passwd=Xxxx@123 # 数据库密码
untime=`mysql -u$user -p$passwd -e "show global status like 'uptime';" 2> /dev/null | tail -1 | awk '{print $2}'`
mysql_master(){
mysql -u$user -p$passwd -e "show slave status\G" 2> /dev/null > mysql_sele.txt
IO=`grep "Slave_IO_Running:" mysql_sele.txt | awk '{print $NF}'`
SQL=`grep "Slave_SQL_Running:" mysql_sele.txt | awk '{print $NF}'`
rm -rf mysql_sele.txt
if [ -z "$IO" ];then
echo "Slave_IO_Running:" 0
else
if [ $SQL == "Yes" ];then
if [ $IO == "Yes" ];then
echo 主从状态 1
fi
else
echo 主从状态 0
fi
fi
}
# mysql增删改查次数获取
mysql_zsgc(){
select=`mysql -u$user -p$passwd -e "show global status like 'Com_select';" 2> /dev/null | tail -1 | awk '{print $2}'`
delete=`mysql -u$user -p$passwd -e "show global status like 'Com_delete';" 2> /dev/null | tail -1 | awk '{print $2}'`
insert=`mysql -u$user -p$passwd -e "show global status like 'Com_insert';" 2> /dev/null | tail -1 | awk '{print $2}'`
update=`mysql -u$user -p$passwd -e "show global status like 'Com_update';" 2> /dev/null | tail -1 | awk '{print $2}'`
# echo "insert次数:"$insert
# echo "delete次数:"$delete
# echo "update次数:"$update
# echo "select次数:"$select
# echo "增删改查次数:" $[ $select + $delete + $insert + $update ]
}
# 2、 mysql增删改查总次数
mysql_all(){
mysql_zsgc
echo "增删改查次数:" $[ $select + $delete + $insert + $update ]
}
# 21、mysql的insert次数
mysql_insert(){
mysql_zsgc
echo "insert次数:" $insert
}
# 22、mysql的delect次数
mysql_delect(){
mysql_zsgc
echo "delete次数:" $delete
}
# 23、mysql的update次数
mysql_update(){
mysql_zsgc
echo "update次数:" $update
}
# 24、mysql的select次数
mysql_select(){
mysql_zsgc
echo "select次数:" $select
}
# 3、mysql启动时间
mysql_time(){
echo "uptime:" $untime
}
# 4、mysql的qps 每秒查询速率
mysql_qps(){
QPS1=`mysql -u$user -p$passwd -e "show global status like 'Questions';" 2> /dev/null | tail -1 | awk '{print $2}'`
echo "mysql的qps(每秒查询速率):" $[ $QPS1 / $untime ]
}
# 45、mysql的tps每秒事务速率
mysql_tps(){
commit=`mysql -u$user -p$passwd -e "show global status like 'Com_commit';" 2> /dev/null | tail -1 | awk '{print $2}'`
rollback=`mysql -u$user -p$passwd -e "show global status like 'Com_rollback';" 2> /dev/null | tail -1 | awk '{print $2}'`
echo "mysql的tps(每秒事务速率):" $[ ( $commit + $rollback) / $untime ]
}
# 5、主从同步延迟
mysql_mastertime(){
mysql -u$user -p$passwd -e "show slave status\G" 2> /dev/null > mysql_sele.txt
Master_time=`grep "Seconds_Behind_Master" mysql_sele.txt | awk '{print $NF}'`
rm -rf mysql_sele.txt
echo "主从同步延迟时间:" $Master_time
}
# 6、磁盘剩余空间 /分区 /data分区
data_a(){
echo "/分区剩余空间:" `df -Th | awk '/\/$/{print $(NF -2)}' | tr -d 'G'`
# echo "data分区剩余空间:" `df -Th | awk '/\/data$/{print $(NF -2)}'`
}
# 7、内存使用百分比
mem(){
all_Mem=`free | tail -2 | head -1 |awk '{print $2}'`
user_sMem=`free | tail -2 | head -1 | awk '{print $3}'`
echo "内存使用率:" $[ $user_sMem * 100 /$all_Mem ]
}
# 8、swap使用百分比
swap(){
all_swap=`free | tail -1 | awk '{print $2}'`
user_swap=`free | tail -1 | awk '{print $3}'`
echo "swap使用率:" $[ $user_swap * 100 /$all_swap ]
}
# 9、网卡下载流量速率
ens33(){
loadin=`cat /proc/net/dev | awk '/ens33/{print $2}'`
sleep 1
loadin2=`cat /proc/net/dev | awk '/ens33/{print $2}'`
echo "网络状态" 下载: $[ ($loadin2 - $loadin) / 1024 ]
}
# 95、网卡上传流量速率
ens34(){
userin=`cat /proc/net/dev | awk '/ens33/{print $10}'`
sleep 1
userin2=`cat /proc/net/dev | awk '/ens33/{print $10}'`
echo "网络状态" 上传: $[ ($userin2 - $userin) / 1024 ]
}
# 10、mysql的当前连接数
mysql_link(){
linka_mysql=`mysql -u$user -p$passwd -e "SHOW STATUS LIKE 'Threads_connected'" 2> /dev/null | tail -1 | awk '{print $2}'`
echo "mysql的当前连接数:" $linka_mysql
}
# read -p "请输入序号:" numb
case $1 in
1) mysql_master ;;
2) mysql_all ;;
21) mysql_insert ;;
22) mysql_delect ;;
23) mysql_update ;;
24) mysql_select ;;
3) mysql_time ;;
4) mysql_qps ;;
45) mysql_tps ;;
5) mysql_mastertime ;;
6) data_a ;;
7) mem ;;
8) swap ;;
9) ens33 ;;
95) ens34 ;;
10) mysql_link ;;
q) exit ;;
*) echo "输入有误,请重新输入"
;;
esac
1、mysql-slave从设备添加到zabbix主机中,可参考
2、mysql-slave从设备配置上文脚本内容,用于获取信息
mkdir /etc/zabbix/zabbix_sh
vim /etc/zabbix/zabbix_sh/shell_tools.sh
将监控内容获取脚本粘贴导入
:wq # 保存退出
chmod a+x /etc/zabbix/zabbix_sh/shell_tools.sh # 授权
3、mysql-slave从设备配置zabbix配置文件
cd /etc/zabbix/zabbix_agentd.d
vim mysql_status.conf # 文件名已.conf结尾就行UserParameter=mysql_master.status[*],sudo sh /etc/zabbix/zabbix_sh/shell_tools.sh $1 | awk '{print $$NF}'
#UserParameter=固定格式,mysql_master.status[*] 键名称,[*] 传递后边的 $1 变量,$1 为 脚本中 case 的选项数字,$$是为了区别前边的$1
3.5、mysql-slave从设备重启zabbix-agent服务
systemctl restart zabbix-agent
4、mysql-slave从设备配置sudo文件,给zabbix用户提权
visudo
zabbix ALL=(ALL) NOPASSWD: ALL # 添加进去并保存退出