博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nagios通过脚本对系统进行定制监控
阅读量:5293 次
发布时间:2019-06-14

本文共 2959 字,大约阅读时间需要 9 分钟。

    这里为了简单只写在linux系统下如何利用nagios对系统进行定制监控。nagios在linux的监控流程是使用nrpe客户端来调用/usr/local/nagios/libexec目录下的脚本,然后将获取的数据返回给nagios,那些脚本会返回不同的状态值以及一些信息。nagios就是根据这些返回值来判断服务状态是否正常以及是否需要告警。这些状态值说明如下:
1、返回的状态值为0,表示OK,没有异常。
2、返回的状态值为1,表示WARNING,会触发WARNING报警。
3、返回的状态值为2,表示CRITICAL,会触发CRITICAL报警。
4、返回状态为3,表示UNKNOWN,
那面详细得来说明如何通过脚本定制监控数据库的连接数:
第一步:先写好获取数据的脚本,脚本中明确定义返回的状态吗,脚本内容如下:

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #Written by carl zhang
  3. #This Nagios plugin can be check your mysql connections status
  4. USAGE_Method="$(basename $0) [-w|--warning] <Free Percent> [-c|--critical] <Free Percent>"
  5. USAGE_Value="WARNING value must be small than CRITICAL value: `basename $0` $*"
  6. MYSQLUSER=nagios
  7. MYSQLPS=nagiosadmin
  8. MYSQLBIN=/usr/local/mysql/bin/mysql
  9. STATE_OK=0
  10. STATE_WARNING=1
  11. STATE_CRITICAL=2
  12. STATE_UNKNOWN=3
  13. if [ $# -lt 4 ];then
  14. echo
  15. echo "Usage: $USAGE_Method"
  16. echo
  17. exit 0
  18. fi
  19. while [ $# -gt 0 ];do
  20. case "$1" in
  21. -w|--warning)
  22. shift
  23. WARNING=$1
  24. ;;
  25. -c|--critical)
  26. shift
  27. CRITICAL=$1
  28. ;;
  29. esac
  30. shift
  31. done
  32. if [[ $WARNING -eq $CRITICAL || $WARNING -gt $CRITICAL ]]
  33. then
  34. echo
  35. echo "$USAGE_Value"
  36. echo
  37. echo "Usage: $USAGE_Method"
  38. echo
  39. exit 0
  40. fi
  41. used_connections=$($MYSQLBIN -u$MYSQLUSER -p$MYSQLPS -e "show status like 'Threads_connected'\G" | grep "Value" | awk '{print $2}')
  42. max_connections=$($MYSQLBIN -u$MYSQLUSER -p$MYSQLPS -e "show variables like 'max_connections'\G" | grep "Value" | awk '{print $2}')
  43. PERCENT=$(bc <<< "scale=2;$used_connections/$max_connections" | tr '^.' ' ')
  44. if [[ "$PERCENT" -gt "$CRITICAL" ]]
  45. then
  46. echo "CRITICAL - used_connections is : $used_connections"
  47. exit 2
  48. fi
  49. if [[ "$PERCENT" -gt "$WARNING" && "$PERCENT" -lt "$CRITICAL" ]]
  50. then
  51. echo "WARNING - used_connections is : $used_connections"
  52. exit 1
  53. fi
  54. if [[ "$PERCENT" -lt "$WARNING" ]]
  55. then
  56. echo "OK - used_connections is : $used_connections"
  57. exit 0
  58. fi
因为这里涉及到mysql数据库的权限,因此需要在mysql中添加naigos帐号,这一步操作命令如下:

点击(此处)折叠或打开

  1. GRANT PROCESS, FILE, SUPER, REPLICATION CLIENT ON *.* TO 'nagios'@'localhost' IDENTIFIED BY 'nagiosadmin';
  2. FLUSH PRIVILEGES;
第二步:配置nrpe.cnf配置文件,定义获取数据的命令,以供nagios服务器端调用,配置如下:

点击(此处)折叠或打开

  1. vim /usr/local/nagios/etc/nrpe.cfg
  2. command[check_mysql_connections]=/usr/local/nagios/libexec/check_mysql_connections -w 75 -c 85
保存后,重新启动nrpe客户端,执行如下命令:

点击(此处)折叠或打开

  1. killall nrpe
  2. /usr/local/nagios/bin/nrpe -c /usr/local/nagios/etc/nrpe.cfg -d
第三步:在nagios服务器端配置服务器调用该命令进行监控,配置如下:

点击(此处)折叠或打开

  1. define service {
  2. use generic-service
  3. host_name zhongshan_server_xx_xxx
  4. service_description check_mysql_connections
  5. check_period 24x7
  6. notifications_enabled 1
  7. max_check_attempts 3
  8. normal_check_interval 3
  9. retry_check_interval 2
  10. contact_groups dbadmins
  11. notification_interval 10
  12. notification_period 24x7
  13. notification_options w,u,c,r
  14. check_command check_nrpe!check_mysql_connections
  15. }
最后检查配置问题以后,重新加载nagios的配置,具体操作命令如下:

点击(此处)折叠或打开

  1. /etc/rc.d/init.d/nagios checkconfig
  2. /etc/rc.d/init.d/nagios reload
至此整个监控mysql连接数的流程就算添加完成了。其他的自定义监控也一样,拿脚本稍微改一改就能搞定了。希望对大家有所帮助!

转载于:https://www.cnblogs.com/feihongwuhen/archive/2012/11/20/7169770.html

你可能感兴趣的文章
开源网络漏洞扫描软件
查看>>
yum 命令跳过特定(指定)软件包升级方法
查看>>
创新课程管理系统数据库设计心得
查看>>
Hallo wolrd!
查看>>
16下学期进度条2
查看>>
Could not resolve view with name '***' in servlet with name 'dispatcher'
查看>>
Chapter 3 Phenomenon——12
查看>>
中小学教育缴费遇到的一些问题
查看>>
C语言中求最大最小值的库函数
查看>>
js学习(精华帖)
查看>>
和小哥哥一起刷洛谷(1)
查看>>
jquery对id中含有特殊字符的转义处理
查看>>
获取元素样式信息于三中获取方式的区别
查看>>
遇麻烦,Win7+Ubuntu12.10+Archlinux12.10 +grub
查看>>
SqlBulkCopy大批量导入数据
查看>>
chrome(谷歌浏览器)“无法从该网站添加应用、扩展程序和用户脚本”问题
查看>>
HTTP协议 (四) 缓存
查看>>
python学习之random
查看>>
使用onclick跳转到其他页面/跳转到指定url
查看>>
【转载】测试计划模板
查看>>