IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    给nagios增加监控当前php进程数的插件,并用pnp出图

    C1G发表于 2015-01-16 09:25:19
    love 0

    脚本说明
    脚本默认监控为php-fpm 以TCP方式运行在本机的端口php
    php-fpm.conf例

    1. 127.0.0.1:9000/value>

    其它地址需在脚本中修改相应地址127.0.0.1:9000

    最终输出的$total processes为当前正在执行或等待的php数,此数为0或越少越好.

    vi check_phpprocs.sh

    1. #!/bin/bash
    2. #########################################################################
    3. #
    4. # File: check_phpprocs.sh
    5. # Description: Nagios check plugins to check php process in *nix.
    6. # Language: GNU Bourne-Again SHell
    7. # Version: 1.0.0
    8. # Date: 2015-1-16
    9. # Author: C1g
    10. # Bog: http://blog.C1gStudio.com
    11. #########################################################################
    12. path=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
    13. export PATH
    14. STATE_OK=0
    15. STATE_WARNING=1
    16. STATE_CRITICAL=2
    17. STATE_UNKNOWN=3
    18. warn_num=100
    19. critical_num=200
    20. usage(){
    21. echo -e "Usage: $0 -w|--warning warning threshold -c|--critical critical threshold"
    22. }
    23. select_arg(){
    24. if [ $# -eq 0 ];then
    25. return 1
    26. fi
    27. until [ $# -eq 0 ];do
    28. case $1 in
    29. -w|--warning)
    30. [ $# -lt 2 ] && return 1
    31. if ! echo $2 |grep -E -q "^[1-9][0-9]*$";then
    32. return 1
    33. fi
    34. warn_num=$2
    35. shift 2
    36. ;;
    37. -c|--critical)
    38. [ $# -lt 2 ] && return 1
    39. if ! echo $2 |grep -E -q "^[1-9][0-9]*$";then
    40. return 1
    41. fi
    42. critical_num=$2
    43. shift 2
    44. ;;
    45. *)
    46. return 1
    47. ;;
    48. esac
    49. done
    50. return 0
    51. }
    52. select_arg $@
    53. [ $? -ne 0 ] && usage && exit $STATE_UNKNOWN
    54. #echo "warn :$warn_num"
    55. #echo "critical :$critical_num"
    56. if [ $critical_num -lt $warn_num ];then
    57. usage
    58. exit $STATE_UNKNOWN
    59. fi
    60. total=`netstat -n | grep 127.0.0.1:9000 | wc -l`
    61. if [ $total -lt $warn_num ];then
    62. echo "PHP OK - $total processes |PHP=$total;$warn_num;$critical_num;0"
    63. exit $STATE_OK
    64. elif [ $total -ge $warn_num -a $total -lt $critical_num ];then
    65. echo "PHP WARNING - $total processes |PHP=$total;$warn_num;$critical_num;0"
    66. exit $STATE_WARNING
    67. elif [ $total -ge $critical_num ];then
    68. echo "PHP CRITICAL - $total processes |PHP=$total;$warn_num;$critical_num;0"
    69. exit $STATE_CRITICAL
    70. else
    71. echo "UNKNOWN STATE"
    72. exit $STATE_UNKNOWN
    73. fi

    增加执行权限,宫户端nrpe路径为/opt/nagios/
    chown nagios:nagios check_phpprocs.sh
    chmod 755 check_phpprocs.sh
    mv ./check_phpprocs.sh /opt/nagios/libexec/

    编辑宫户端nrpe.cfg增加监控命令,这里设置waring阀值为100,critical阀值为200
    vi /opt/nagios/etc/nrpe.cfg

    1. command[check_phpprocs]=/opt/nagios/libexec/check_phpprocs.sh -w 100 -c 200

    重启宫户端nrpe

    1. kill `cat /var/run/nrpe.pid`
    2. /opt/nagios/bin/nrpe -c /opt/nagios/etc/nrpe.cfg -d

    编辑监控端主机文件c1gstudio.cfg,添加监控服务
    vi /usr/local/nagios/etc/objects/c1gstudio.cfg

    define service{
    use local-service,srv-pnp ; Name of service template to use
    host_name c1gstudio
    service_description PHP Processes
    check_command check_nrpe!check_phpprocs
    notifications_enabled 1
    }
    pnp4nagios已配好,srv-pnp为配好的模板 可以直接出图
    templates.cfg

    1. define service {
    2. name srv-pnp
    3. register 0
    4. action_url /pnp/index.php?host=$HOSTNAME$&srv;=$SERVICEDESC$
    5. process_perf_data 1

    参见:http://blog.c1gstudio.com/archives/552

    重启nagios
    /etc/init.d/nagios reload

    查看状态
    nagios_checkphpprocs

    下载check_phpprocs.zip check_phpprocs

    参考:http://blog.csdn.net/xluren/article/details/17724043

    Related Posts

    • 安装discuz启用flash验证码需要的ming库 ( 2012-04-13)
    • PHP一句话木马及查杀 ( 2012-03-21)
    • 给PHP5.2.*打上Hash冲突漏洞补丁 ( 2012-01-12)


沪ICP备19023445号-2号
友情链接