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

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

  1. [root@eus_nginx:]# cat /usr/local/nginx/config/nginx.conf
  2.  
  3. user apache users;
  4. worker_processes ;
  5.  
  6. worker_cpu_affinity ;
  7.  
  8. error_log /data/www/logs/nginx_log/error/error.log;
  9. #error_log logs/error.log notice;
  10. #error_log logs/error.log info;
  11.  
  12. pid logs/nginx.pid;
  13.  
  14. events {
  15. use epoll;
  16. worker_connections ;
  17. }
  18.  
  19. http {
  20. include mime.types;
  21. default_type application/octet-stream;
  22.  
  23. log_format main '$remote_addr - - [$time_local] - - "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time ';
  24. log_format error '$remote_addr - - [$time_local] - - "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent" $request_time ';
  25. 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 ';
  26.  
  27. log_format timed_combined '$remote_addr - $remote_user [$time_local] '
  28. '"$request" $status $body_bytes_sent '
  29. '"$http_referer" "$http_x_real_ip" "$http_x_forwarded_for" "$http_user_agent" '
  30. '$request_time $upstream_response_time $pipe';
  31.  
  32. #access_log /data/www/logs/nginx_log/access/access.log main;
  33. access_log off;
  34.  
  35. sendfile on;
  36. #tcp_nopush on;
  37. tcp_nodelay on;
  38.  
  39. keepalive_timeout ;
  40. #----for upload file
  41. client_max_body_size 8M;
  42. client_body_buffer_size 2M;
  43. #--- for resolve error
  44. client_header_buffer_size 64k;
  45. large_client_header_buffers 64k;
  46. proxy_connect_timeout 60s;
  47. proxy_read_timeout 60s;
  48. #60s内后端服务器需要返回成功
  49. proxy_send_timeout 60s;
  50. proxy_buffer_size 16k;
  51. proxy_buffers 32k;
  52. proxy_busy_buffers_size 64k;
  53. proxy_temp_file_write_size 64k;
  54.  
  55. proxy_set_header X-Real-IP $remote_addr;
  56. proxy_set_header X-Forwarded-For $http_x_forwarded_for;
  57.  
  58. gzip on;
  59. gzip_vary off;
  60. gzip_min_length 1k;
  61. gzip_buffers 16k;
  62. gzip_http_version 1.0;
  63. gzip_comp_level ;
  64. gzip_disable "MSIE [1-6]\.";
  65. gzip_types text/plain text/css text/javascript application/javascript application/x-javascript text/xml application/xml;
  66. fastcgi_intercept_errors on;
  67. ssi on;
  68. ssi_silent_errors on;
  69. #expires 30d;
  70. server_names_hash_bucket_size ;
  71.  
  72. # -------------- firewall ----------
  73. include blackip.conf;
  74.  
  75. geo $whiteiplist {
  76. default ;
  77. include whiteip.conf;
  78. }
  79.  
  80. map $whiteiplist $limit {
  81. $binary_remote_addr;
  82. "";
  83. }
  84.  
  85. limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
  86. limit_req_zone $server_name zone=perserver:1024m rate=1000r/s;
  87. limit_req_log_level notice ;
  88.  
  89. server {
  90. listen ;
  91. server_name localhost;
  92. location / {
  93. root /data/www/html;
  94. index index.html index.htm;
  95. }
  96.  
  97. location /nginx_status {
  98. stub_status on;
  99. access_log off;
  100. allow 127.0.0.1;
  101. deny all;
  102. }
  103.  
  104. # 集中后端php的状态
  105. location ~ ^/(back02_status|back02_ping)$
  106. {
  107. include fastcgi_params;
  108. fastcgi_pass 172.20.103.198:;
  109. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  110. }
  111. location ~ ^/(back03_status|back03_ping)$
  112. {
  113. include fastcgi_params;
  114. fastcgi_pass 172.20.103.196:;
  115. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  116. }
  117. location ~ ^/(back04_status|back04_ping)$
  118. {
  119. include fastcgi_params;
  120. fastcgi_pass 172.20.103.194:;
  121. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  122. }
  123. location ~ ^/(back05_status|back05_ping)$
  124. {
  125. include fastcgi_params;
  126. fastcgi_pass 172.20.103.195:;
  127. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  128. }
  129. location ~ ^/(back06_status|back06_ping)$
  130. {
  131. include fastcgi_params;
  132. fastcgi_pass 172.20.103.192:;
  133. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  134. }
  135. location ~ ^/(back07_status|back07_ping)$
  136. {
  137. include fastcgi_params;
  138. fastcgi_pass 172.20.103.193:;
  139. fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
  140. }
  141.  
  142. #error_page /.html;
  143.  
  144. error_page /50x.html;
  145. location = /50x.html {
  146. root html;
  147. }
  148. }
  149. include vhost.d/*;
  150.  
  151. }

1.编写自动发现脚本

  1. [root@eus_nginx:/usr/local/zabbix_agents_3.2.0/scripts]# cat back_php_status.sh
  2. #!/bin/bash
  3. # function:monitor php connect status from zabbix
  4.  
  5. web_ip_discovery () {
  6. WEB_IP=($(cat /usr/local/zabbix_agents_3.2.0/scripts/php_backs.txt|grep -v "^#"))
  7. printf '{\n'
  8. printf '\t"data":[\n'
  9. for((i=;i<${#WEB_IP[@]};++i))
  10. {
  11. num=$(echo $((${#WEB_IP[@]}-)))
  12. if [ "$i" != ${num} ];
  13. then
  14. printf "\t\t{ \n"
  15. printf "\t\t\t\"{#SITENAME}\":\"${WEB_IP[$i]}\"},\n"
  16. else
  17. printf "\t\t{ \n"
  18. printf "\t\t\t\"{#SITENAME}\":\"${WEB_IP[$num]}\"}]}\n"
  19. fi
  20. }
  21. }
  22.  
  23. web_site_code () {
  24. ip=`echo $|awk -F ':' '{print $1}'`
  25. #echo $ip
  26. curl -s -k --connect-timeout -m -o /dev/null -w %{http_code} "http://${ip}"
  27. }
  28.  
  29. case "$1" in
  30. web_ip_discovery)
  31. web_ip_discovery
  32. ;;
  33. web_site_code)
  34. web_site_code $
  35. ;;
  36. *)
  37.  
  38. echo "Usage:$0 {web_ip_discovery|web_site_code [URL]}"
  39. ;;
  40. 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

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

  1. 分布式监控系统Zabbix3.2添加自动发现磁盘IO并注册监控

     zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加. 由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务 ...

  2. zabbix自动发现功能实现批量web url监控

    需求: 现在有大量url需要监控,形式如http://www.baidu.com ,要求url状态不为200即报警. 需求详细分析: 大量的url,且url经常变化,现在监控用的是zabbix,如果手 ...

  3. zabbix使用自动发现功能批量监控服务器端口的可用性

    使用自动发现脚本批量监控服务器端口的可用性 .编写自动发现脚本 # cat /usr/local/zabbix_agents_3.2.0/scripts/web_site_code_status.sh ...

  4. zabbix实现自动发现功能添加磁盘监控

    zabbix实现对磁盘动态监控 - Lenwood 原文  http://www.cnblogs.com/baizhantang/p/3253246.html 主题 Linux命令 zabbix 前言 ...

  5. zabbix3.x自动发现主机

    在服务器比较多的情况下,配置加入群组,添加模板是非常费时费力的,所以利用自动发现主机.自动添加群组和模板是非常好的办法. 两步走 1.配置发现规则 2.配置发现动作 1.前提在服务器是上部署了agen ...

  6. zabbix3.4.8配置自动发现主机并监控

    一.       自动发现功能简介 Zabbix服务器端通过网络或者主机名等方式进行客户端的扫描发现,从进行加入到监控的主机队列中,适用于批量加入多主机监控的场景. 二.       自动发现功能实施 ...

  7. Zabbix的自定义键值和自动发现功能监控Oracle数据库的表空间

    前面介绍了利用Orabbix监控了,参考zabbix通过Orabbix监控oracle数据库,这里我们原先的模板中进行了修改,使用自动发现功能实现监控tablespace的使用情况. 1. 在被监控的 ...

  8. Zabbix自动发现并监控磁盘IO、报警

    本文转载自: https://www.93bok.com 引言 Zabbix并没有提供模板来监控磁盘的IO性能,所以我们需要自己来创建一个,由于一台服务器中磁盘众多,如果只有一两台可以手动添加,但服务 ...

  9. zabbix_server的自动发现,实现批量添加主机,并链接到模板

    一.需求 zabbix 服务器可以手动加入zabbix-agent客户端,对于少量的机器,这没有什么.但到了线上,我们有大量的服务器需要监控时,如果再一个个的手动加的话,工作量势必会增加很多.这时,z ...

随机推荐

  1. MVC和MVVM

    MVC和MVVM的qu'bie 1. Mvvm定义MVVM是Model-View-ViewModel的简写.即模型-视图-视图模型.[模型]指的是后端传递的数据.[视图]指的是所看到的页面.[视图模型 ...

  2. ##Django中Application labels aren't unique解决方法##

    pip更新了所有插件,发现了按平常编码遇到些问题,记录下. Django错误 django.core.exceptions.ImproperlyConfigured: Application labe ...

  3. dva

    import React, { PureComponent } from "react"; import { Chart, Geom, Axis, Tooltip, Coord, ...

  4. array数组(n,1)和(n,)互相转换

    data.shape #(172,1) result = [arr[0] for arr in data] result.shape #(172,) (172,1)表示是一个(172,1)shape大 ...

  5. 偶写的第一个控件,一个用选择代替输入的Edit控件…

    FDataSource :=TDataSource.Create(self); FDBGrid.FreeNotification(self); FADOQuery.FreeNotification(s ...

  6. CMakeList.txt设置OpenCv路径

    源文件imageBasics.cpp #include <iostream> #include <chrono> using namespace std; #include & ...

  7. mysql left join 优化

      参考 https://www.cnblogs.com/zedosu/p/6555981.html

  8. Python 防止mysql 注入的两种方式

    Python防止sql注入一般有两种方法 1.escape_string   MySQLdb.escape_string(param) 注意:如果报错出现 'ascii' codec can't en ...

  9. vue(初探预渲染)

    ---恢复内容开始--- 一.前言 1.简介预渲染                     2.案例演示(不配置预渲染)                     3.配置预渲染, 二.主要内容 1.简 ...

  10. I/O模型系列之三:IO通信模型BIO NIO AIO

    一.传统的BIO 网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地址和监听端口),客户端通过连接操作向服务端监听的地址发起连接请 ...