使用nagios对系统进行定制监控。
nagios在linux的监控流程是使用nrpe客户端来调用/usr/local/nagios/libexec目录下的脚本,然后将获取的数据返回给nagios,那些脚本会返回不同的状态值以及一些信息。
nagios就是根据这些返回值来判断服务状态是否正常以及是否需要告警。
状态值说明如下:
1、返回的状态值为0,表示OK,没有异常。
2、返回的状态值为1,表示WARNING,会触发WARNING报警。
3、返回的状态值为2,表示CRITICAL,会触发CRITICAL报警。
4、返回状态为3,表示UNKNOWN,
如何通过脚本定制监控数据库的连接数:
第一步:先写好获取数据的脚本,脚本中明确定义返回的状态吗,脚本内容如下:
#!/bin/bash
#Written by carl zhang
#This Nagios plugin can be check your mysql connections status
USAGE_Method="$(basename $0) [-w|--warning] <Free Percent> [-c|--critical] <Free Percent>"
USAGE_Value="WARNING value must be small than CRITICAL value: `basename $0` $*"
MYSQLUSER=nagios
MYSQLPS=nagiosadmin
MYSQLBIN=/usr/local/mysql/bin/mysql
STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3
if [ $# -lt 4 ];then
echo
echo "Usage: $USAGE_Method"
echo
exit 0
fi
while [ $# -gt 0 ];do
case "$1" in
-w|--warning)
shift
WARNING=$1
;;
-c|--critical)
shift
CRITICAL=$1
;;
esac
shift
done
if [[ $WARNING -eq $CRITICAL || $WARNING -gt $CRITICAL ]]
then
echo
echo "$USAGE_Value"
echo
echo "Usage: $USAGE_Method"
echo
exit 0
fi
used_connections=$($MYSQLBIN -u$MYSQLUSER -p$MYSQLPS -e "show status like 'Threads_connected'G" | grep "Value" | awk '{print $2}')
max_connections=$($MYSQLBIN -u$MYSQLUSER -p$MYSQLPS -e "show variables like 'max_connections'G" | grep "Value" | awk '{print $2}')
PERCENT=$(bc <<< "scale=2;$used_connections/$max_connections" | tr '^.' ' ')
if [[ "$PERCENT" -gt "$CRITICAL" ]]
then
echo "CRITICAL - used_connections is : $used_connections"
exit 2
fi
if [[ "$PERCENT" -gt "$WARNING" && "$PERCENT" -lt "$CRITICAL" ]]
then
echo "WARNING - used_connections is : $used_connections"
exit 1
fi
if [[ "$PERCENT" -lt "$WARNING" ]]
then
echo "OK - used_connections is : $used_connections"
exit 0
fi
因为这里涉及到mysql数据库的权限,因此需要在mysql中添加naigos帐号,这一步操作命令如下:
第二步:配置nrpe.cnf配置文件,定义获取数据的命令,以供nagios服务器端调用,配置如下:
vim /usr/local/nagios/etc/nrpe.cfg
保存后,重新启动nrpe客户端,执行如下命令:
第三步:在nagios服务器端配置服务器调用该命令进行监控,配置如下:
最后检查配置问题以后,重新加载nagios的配置,具体操作命令如下:
/etc/rc.d/init.d/nagios checkconfig
/etc/rc.d/init.d/nagios reload
至此,整个监控mysql连接数的流程添加完成。
其它自定义监控,也可以参照本脚本完成。