zoukankan      html  css  js  c++  java
  • Zabbix添加nginx-php监控

    以源码安装为例:

    目录环境:

    /usr/local/php/etc/php-fpm.conf

    /usr/local/nginx/conf/nginx.conf

    ------------------------------------------------------------

    一、修改配置

    # vim /usr/local/php/etc/php-fpm.conf
    末行添加:
    pm.status_path = /phpfpm_status
    # pkill php-fpm
    # /usr/local/php/sbin/php-fpm# vim /usr/local/nginx/conf/nginx.conf

    添加:

    server {
            listen 127.0.0.1:80;
            server_name 127.0.0.1;
            location /nginx_status {
                stub_status on;
                access_log off;
                allow 127.0.0.1;
                allow 10.1.12.0/24;
                deny all;
            }
            location ~ ^/(phpfpm_status)$ {
                include fastcgi_params;
                fastcgi_pass unix:/tmp/php-cgi.sock;
                fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
            }
        }

    重启nginx

    # /usr/local/openresty/nginx/sbin/nginx -c /usr/local/openresty/nginx/conf/nginx.conf -s reload

    二、监控脚本

    (1)nginx监控脚本

    #!/usr/bin/env python
    #__*__coding:utf8__*__
    import urllib2,sys,os
    def Nginx_status():
        nginx_stats_dirt = {}
        nginx_url = "http://127.0.0.1/nginx_status"
        req = urllib2.Request(nginx_url)
        response = urllib2.urlopen(req)
        request_list = response.read().split(" ")
        nginx_stats_dirt["active"] = request_list[0].split()[2]
        nginx_stats_dirt["accepts"] = request_list[2].split()[0]
        nginx_stats_dirt["handled"] = request_list[2].split()[1]
        nginx_stats_dirt["requests"] = request_list[2].split()[2]
        nginx_stats_dirt["reading"] = request_list[3].split()[1]
        nginx_stats_dirt["writing"] = request_list[3].split()[3]
        nginx_stats_dirt["waiting"] = request_list[3].split()[5]
        if len(sys.argv) is not 2 or str(sys.argv[1]) not in nginx_stats_dirt.keys():
            print "Usage: nginx_stauts.py $1 {active|accepts|handled|requests|reading|writing|waiting}"
            exit(1)
        else:
            print nginx_stats_dirt[str(sys.argv[1])]
    if __name__ == '__main__':
        try:
            Nginx_status()
        except urllib2.URLError,e:
            print "%s,there may be something wrong with nginx!" %e

    (2)php监控脚本

    #!/usr/bin/env python
    #__*__coding:utf8__*__
    import urllib2,sys,os
    def Php_status():
        php_status_dirt = {}
        request_status_list = []
        php_status_list = ["pool","process_manager","start_since","accepted_conn","listen_queue","max_listen_queue","listen_queue_len","idle_processes","active_processes","total_processes","max_active_processes","max_children_reached","slow_requests"]
        php_url = 'http://127.0.0.1/phpfpm_status'
        req = urllib2.Request(php_url)
        response = urllib2.urlopen(req)
        request_list = response.read().split()
       position=[1,4,11,14,17,21,25,28,31,34,38,42,45]
       for i in position:
           request_status_list.append(request_list[i])
       for i in range(len(php_status_list)):
           php_status_dirt[php_status_list[i]] = request_status_list[i]

       if len(sys.argv) is not 2 or str(sys.argv[1]) not in php_status_dirt.keys():
           print "Usage: php_stauts.py $1 {pool|process_manager|start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached|slow_requests}"
           exit(1)
       else:
           print php_status_dirt[str(sys.argv[1])]

    if __name__ == '__main__':
        try:
            Php_status()
        except urllib2.URLError,e:
            print "%s,there may be something wrong with php!" %e

    三、配置监控扩展

    被监控主机端,zabbix_agentd.conf文件中添加上这个:

    UserParameter=phpfpm[*],/etc/zabbix/scripts/phpfpm_status.py $1
    UserParameter=nginx[*],/etc/zabbix/scripts/nginx_status.py $1

    四、测试

    [root@zabbix_server-12-155 ~]# zabbix_get -s 10.1.12.177 -k phpfpm[s]
    Usage: php_stauts.py $1 {pool|process_manager|start_since|accepted_conn|listen_queue|max_listen_queue|listen_queue_len|idle_processes|active_processes|total_processes|max_active_processes|max_children_reached}
    [root@zabbix_server-12-155 ~]# zabbix_get -s 10.1.12.177 -k phpfpm[pool]
    www
     
  • 相关阅读:
    Linq-单条数据删除
    斐波那契额数列及青蛙跳台阶问题
    旋转数组的最小数字
    扑克牌的顺子
    qsort(),sort()排序函数
    从尾到头打印链表
    查找链表中倒数第k个结点
    左旋转字符串
    数组前半部分和后半部分有序的全排序
    二元树中和为某一值的所有路径
  • 原文地址:https://www.cnblogs.com/Leslieblog/p/10678282.html
Copyright © 2011-2022 走看看