zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控

zabbix3.2利用自动发现功能对fastcgi模式的php状态进行集中监控


前端nginx虚拟主机引用后端多个php接口,为了方便监控,将后端服务器集中配置在nginx中,具体配置如下:

[root@eus_nginx:]# cat /usr/local/nginx/config/nginx.conf

user  apache users;
worker_processes  4;

worker_cpu_affinity 0001 0010 0100 1000; 

error_log  /data/www/logs/nginx_log/error/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;


events {
    use epoll;
    worker_connections  10240;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format main  '$remote_addr - - [$time_local] - - "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time ';
    log_format error  '$remote_addr - - [$time_local] - - "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time ';
    log_format test '[$fastcgi_script_name] [$time_local] $document_root $remote_addr $status $request_time $body_bytes_sent "$request" "$http_referer" $upstream_addr $http_x_real_ip $http_x_forwarded_for $http_user_agent ';
    
    log_format timed_combined '$remote_addr - $remote_user [$time_local] '
    '"$request" $status $body_bytes_sent '
    '"$http_referer" "$http_x_real_ip" "$http_x_forwarded_for" "$http_user_agent" '
    '$request_time $upstream_response_time $pipe';
    
    #access_log  /data/www/logs/nginx_log/access/access.log  main;
    access_log off; 

    sendfile        on;
    #tcp_nopush     on;
    tcp_nodelay    on;

    keepalive_timeout  70;
    #----for upload file
    client_max_body_size    8M;
    client_body_buffer_size 2M;
    #--- for resolve 400 error
    client_header_buffer_size 64k;
    large_client_header_buffers 4 64k;
    proxy_connect_timeout 60s;
    proxy_read_timeout 60s;
    #60s内后端服务器需要返回成功
    proxy_send_timeout 60s;
    proxy_buffer_size 16k;
    proxy_buffers 4 32k;
    proxy_busy_buffers_size 64k;
    proxy_temp_file_write_size 64k;

    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $http_x_forwarded_for;

    gzip  on;
    gzip_vary off;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level  3;
    gzip_disable     "MSIE [1-6]\.";
    gzip_types text/plain text/css text/javascript application/javascript  application/x-javascript text/xml application/xml;
    fastcgi_intercept_errors on;
    ssi on;
    ssi_silent_errors on;
    #expires 30d;
    server_names_hash_bucket_size 20480;

    # -------------- firewall ----------
    include blackip.conf;
    
    geo $whiteiplist  {
        default 1;
        include whiteip.conf;
    }
 
    map $whiteiplist  $limit {
        1 $binary_remote_addr;
        0 "";
    }

    limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
    limit_req_zone $server_name zone=perserver:1024m rate=1000r/s;
    limit_req_log_level notice ;


    server {
        listen       80;
        server_name  localhost;
        location / {
            root   /data/www/html;
            index  index.html index.htm;
        }

    location /nginx_status {
            stub_status on;
            access_log off;
            allow 127.0.0.1;
            deny all;
        }


    # 集中后端php的状态
        location ~ ^/(back02_status|back02_ping)$
        {
            include fastcgi_params;
            fastcgi_pass 172.20.103.198:9000;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        }
        location ~ ^/(back03_status|back03_ping)$
        {
            include fastcgi_params;
            fastcgi_pass 172.20.103.196:9000;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        }
        location ~ ^/(back04_status|back04_ping)$
        {
            include fastcgi_params;
            fastcgi_pass 172.20.103.194:9000;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        }
        location ~ ^/(back05_status|back05_ping)$
        {
            include fastcgi_params;
            fastcgi_pass 172.20.103.195:9000;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        }
        location ~ ^/(back06_status|back06_ping)$
        {
            include fastcgi_params;
            fastcgi_pass 172.20.103.192:9000;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        }
        location ~ ^/(back07_status|back07_ping)$
        {
            include fastcgi_params;
            fastcgi_pass 172.20.103.193:9000;
            fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
        }
    
        #error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    include vhost.d/*;    

}

 

1.编写自动发现脚本

[root@eus_nginx:/usr/local/zabbix_agents_3.2.0/scripts]# cat back_php_status.sh 
#!/bin/bash 
# function:monitor php connect status from zabbix 
 

web_ip_discovery () { 
WEB_IP=($(cat  /usr/local/zabbix_agents_3.2.0/scripts/php_backs.txt|grep -v "^#")) 
        printf '{\n' 
        printf '\t"data":[\n' 
for((i=0;i<${#WEB_IP[@]};++i)) 
{ 
num=$(echo $((${#WEB_IP[@]}-1))) 
        if [ "$i" != ${num} ]; 
                then 
        printf "\t\t{ \n" 
        printf "\t\t\t\"{#SITENAME}\":\"${WEB_IP[$i]}\"},\n" 
                else 
                        printf  "\t\t{ \n" 
                        printf  "\t\t\t\"{#SITENAME}\":\"${WEB_IP[$num]}\"}]}\n" 
        fi 
} 
} 
 
web_site_code () {
ip=`echo $1|awk -F ':' '{print $1}'`
#echo $ip
curl -s -k --connect-timeout 10 -m 4 -o /dev/null -w %{http_code} "http://${ip}"
} 
 
case "$1" in
web_ip_discovery) 
web_ip_discovery 
;;
web_site_code) 
web_site_code $2
;; 
*) 
 
echo "Usage:$0 {web_ip_discovery|web_site_code [URL]}" 
;; 
esac

 

2.需要监控的php连接
[root@eus_nginx:/usr/local/zabbix_agents_3.2.0/scripts]# cat php_backs.txt
127.0.0.1/back02_status:eus_chinasoft_back02
127.0.0.1/back03_status:eus_chinasoft_back03
127.0.0.1/back04_status:eus_chinasoft_back04
127.0.0.1/back05_status:eus_chinasoft_back05
127.0.0.1/back06_status:eus_chinasoft_back06
127.0.0.1/back07_status:eus_chinasoft_back07
172.20.73.207/back09_status:eus_chinasoft_back09
172.20.73.207/back10_status:eus_chinasoft_back10
172.20.73.207/back11_status:eus_chinasoft_back11
172.20.73.207/back12_status:eus_chinasoft_back12
172.20.73.207/back13_status:eus_chinasoft_back13
172.20.73.207/back14_status:eus_chinasoft_back14


3.编写配置文件
# vim /usr/local/zabbix_agents_3.2.0/conf/zabbix_agentd/php_status_ip_discovery.conf

UserParameter=web.ip.discovery,/usr/local/zabbix_agents_3.2.0/scripts/back_php_status.sh web_ip_discovery
UserParameter=web.ip.code[*],/usr/local/zabbix_agents_3.2.0/scripts/back_php_status.sh web_site_code $1

4.zabbix服务端验证
[root@aliyun-american-guigu-zabbix:~]# zabbix_get -s 1.1.1.1 -k 'web.ip.discovery'
{
"data":[
{
"{#SITENAME}":"127.0.0.1/back02_status:eus_chinasoft_back02"},
{
"{#SITENAME}":"127.0.0.1/back03_status:eus_chinasoft_back03"},
{
"{#SITENAME}":"127.0.0.1/back04_status:eus_chinasoft_back04"},
{
"{#SITENAME}":"127.0.0.1/back05_status:eus_chinasoft_back05"},
{
"{#SITENAME}":"127.0.0.1/back06_status:eus_chinasoft_back06"},
{
"{#SITENAME}":"127.0.0.1/back07_status:eus_chinasoft_back07"},
{
"{#SITENAME}":"172.20.73.207/back09_status:eus_chinasoft_back09"},
{
"{#SITENAME}":"172.20.73.207/back10_status:eus_chinasoft_back10"},
{
"{#SITENAME}":"172.20.73.207/back11_status:eus_chinasoft_back11"},
{
"{#SITENAME}":"172.20.73.207/back12_status:eus_chinasoft_back12"},
{
"{#SITENAME}":"172.20.73.207/back13_status:eus_chinasoft_back13"},
{
"{#SITENAME}":"172.20.73.207/back14_status:eus_chinasoft_back14"}]}

[root@aliyun-american-guigu-zabbix:~]# zabbix_get -s 1.1.1.1 -k 'web.ip.code[172.20.73.207/back14_status:eus_chinasoft_back14]'
200

 

服务端web的配置:

{monitor_back_php_status:web.ip.code[{#SITENAME},].max(#5)}<>200

posted @ 2019-04-18 18:02  reblue520  阅读(264)  评论(0编辑  收藏  举报