• nagios通过脚本对系统进行定制监控


        这里为了简单只写在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连接数的流程就算添加完成了。其他的自定义监控也一样,拿脚本稍微改一改就能搞定了。希望对大家有所帮助!




  • 相关阅读:
    忽然背后冒冷汗
    随机获取中国境内ip地址的php代码
    复制粘贴的句子
    Winform使用BackGroundWorker代替线程执行后台代码
    在IE中测试调用Web Service
    在存储过程中编写正确的事务处理代码
    【转】使用HttpWebRequest POST图片等文件,带参数
    LINQ to Entities 不识别方法"System.String ToString()"
    Asp.net 出现:HTTP 错误 404.0 Not Found
    C# 用内存映射文件读取大日志文件(.log)
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7169770.html
Copyright © 2020-2023  润新知