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

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

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

user  apache users;
worker_processes ; worker_cpu_affinity ; 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 ;
} 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 ;
#----for upload file
client_max_body_size 8M;
client_body_buffer_size 2M;
#--- for resolve error
client_header_buffer_size 64k;
large_client_header_buffers 64k;
proxy_connect_timeout 60s;
proxy_read_timeout 60s;
#60s内后端服务器需要返回成功
proxy_send_timeout 60s;
proxy_buffer_size 16k;
proxy_buffers 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 16k;
gzip_http_version 1.0;
gzip_comp_level ;
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 ; # -------------- firewall ----------
include blackip.conf; geo $whiteiplist {
default ;
include whiteip.conf;
} map $whiteiplist $limit {
$binary_remote_addr;
"";
} 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 ;
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:;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
location ~ ^/(back03_status|back03_ping)$
{
include fastcgi_params;
fastcgi_pass 172.20.103.196:;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
location ~ ^/(back04_status|back04_ping)$
{
include fastcgi_params;
fastcgi_pass 172.20.103.194:;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
location ~ ^/(back05_status|back05_ping)$
{
include fastcgi_params;
fastcgi_pass 172.20.103.195:;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
location ~ ^/(back06_status|back06_ping)$
{
include fastcgi_params;
fastcgi_pass 172.20.103.192:;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
}
location ~ ^/(back07_status|back07_ping)$
{
include fastcgi_params;
fastcgi_pass 172.20.103.193:;
fastcgi_param SCRIPT_FILENAME $fastcgi_script_name;
} #error_page /.html; error_page /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=;i<${#WEB_IP[@]};++i))
{
num=$(echo $((${#WEB_IP[@]}-)))
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 $|awk -F ':' '{print $1}'`
#echo $ip
curl -s -k --connect-timeout -m -o /dev/null -w %{http_code} "http://${ip}"
} case "$1" in
web_ip_discovery)
web_ip_discovery
;;
web_site_code)
web_site_code $
;;
*) 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

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. PHP开发高可用高安全App后端

    基于thinkphp5开发的APP,涵盖阿里大于,七牛云图片上传,RestfulApi,短信验证, 需要联系我:QQ:1844912514

  2. Linux(Ubuntu)使用日记------markdown文件与pdf,doc,docx文件的相互转化(pandoc使用)

    安装: sudo apt-get install pandoc 使用: man pandoc   查看帮助文档 直接转换,命令如下: pandoc -f markdown -t docx ./test ...

  3. Java8新特性(一)_interface中的static方法和default方法

    什么要单独写个Java8新特性,一个原因是我目前所在的公司用的是jdk8,并且框架中用了大量的Java8的新特性,如上篇文章写到的stream方法进行过滤map集合.stream方法就是接口Colle ...

  4. Linux下一些简单常用命令的总结

    Cent os常用命令 查看当前目录信息: l s a:显示所有包括隐藏文件 l :列表显示数据 h:显示数据大小 查看命令帮助: XXX --help[比如:l shel p] 清除控制台信息: c ...

  5. ubuntu 安装 evpp

    ubuntu 安装 evpp 来源 https://www.cnblogs.com/wisdomyzw/p/9402440.html Ubuntu虚拟机安装开源库evpp说明: EVPP为奇虎360基 ...

  6. JavaScript - proxy

    Proxy 对象用于定义基本操作的自定义行为(如属性查找,赋值,枚举,函数调用等). 来看看常用的方法 handler.get() let o = { name: 'liwenchi', age: 1 ...

  7. P1417 烹调方案 (0/1背包+贪心)

    题目背景 由于你的帮助,火星只遭受了最小的损失.但gw懒得重建家园了,就造了一艘飞船飞向遥远的earth星.不过飞船飞到一半,gw发现了一个很严重的问题:肚子饿了~ gw还是会做饭的,于是拿出了储藏的 ...

  8. Spring Cloud 微服务

    https://mp.weixin.qq.com/s?__biz=MzU0OTE4MzYzMw==&mid=2247486301&idx=2&sn=f6d45860269b61 ...

  9. jdbc 连接各种数据库 CRUD

    一,jdbc简介 SUN公司为了简化.统一对数据库的操作,定义了一套Java操作数据库的规范(接口),称之为JDBC.这套接口由数据库厂商去实现,这样,开发人员只需要学习jdbc接口,并通过jdbc加 ...

  10. java强引用 软引用 弱引用 虚引用

    https://www.cnblogs.com/yw-ah/p/5830458.html Java四种引用包括强引用,软引用,弱引用,虚引用. 强引用: 只要引用存在,垃圾回收器永远不会回收Objec ...