背景:多台服务器管理,出现问题时只能跑到指定机器上查看日志信息。
而cpu,mem使用情况在日志里面只能凭个人经验来判断是cpu,还是mem或者io出现问题,导致机器出现故障。而zabbix可以保存这些时间段,机器各项的信息从而能快速定位问题。
zabbix:包含了系统常用的监控,同时还可以自定义选项来监控(exp:访问量、在线)。扩展起来非常方便,所以就选择了zabbix。
对linux来说基本很大一部分机器都装有mysql。同时官网也提供了php的监控方法(采用的时候zabbix_sender进行推送),但是这样每个机器就得装php才能监控,可是想想不用php也完全能完成(shell)。于是就自己写了监控脚本和大家大奖分享下。
具体思路:
采集mysql自身的运行信息
show global status;
讲打印出来的mysql运行信息保存至临时文件(exp:/tmp/zabbix_mysql_%M.log).这里很多人会问为什么要保存至文件呢,而不是直接返回呢?<1>.为了保证mysql取值时,不会频繁的进行数据库连接查询,而zabbix获取数据有事周期性的(本人使用的是60s/次)。所以本人使用分钟来生成文件,分钟内都取同一个文件。<2>.为了保证各项数据取到没有时间差。保证生成的线条一致性。
好了废话不多说,下面是she脚本。
#!/bin/sh
dateM=`date "+%M"`;
fileName='/tmp/zabbix_mysql_status_'$dateM".log";
if [ ! -f $fileName ]; then
rm -f /tmp/zabbix_mysql_status*;
mysql -uroot -p$1 -e 'show global status;' > $fileName;
fi;
if [ -f $fileName ]; then
cat $fileName | grep -w "$2" | awk 'BEGIN {FS=" "} {print $2}'
fi;
usage:
复制以上内容保存到/usr/bin/zabbix_mysql.sh(或者直接下载).
赋予执行去权限(chmod +x /usr/bin/zabbix_mysql.sh)
里面有两个参数 $1:表示root密码,$2:监控项。exp:zabbix_mysql.sh rootpass Com_select(启动mysql的总查询次数)
效果图:
zabbix mysql