zabbix添加nginx监控
nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,可以利用这个功能编写zabbix监控nginx的脚本。
一、agent端配置
1.编辑nginx配置文件,开启status功能
[root@stau66 ~]# vim /usr/local/nginx/conf/nginx.conf
location / {
root html;
index index.php index.html index.htm;
}
#nginx status
location /status {
stub_status on;
access_log off;
allow 192.168.10.0/24;
allow 127.0.0.1;
deny all;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
1.1 nginx状态解释
Active connections Nginx正处理的活动链接数个数;重要
server Nginx启动到现在共处理了多少个连接。
accepts Nginx启动到现在共成功创建几次握手。
handled requests Nginx总共处理了几次请求。
Reading Nginx读取到客户端的 Header 信息数。
Writing Nginx返回给客户端的 Header 信息数。
Waiting Nginx已经处理完正在等候下一次请求指令的驻留链接,开启。
Keep-alive的情况下,Waiting这个值等于active-(reading + writing)。
请求丢失数=(握手数-连接数)可以看出,本次状态显示没有丢失请求。
2.安装zabbix的agent端
2.1上传zabbix源码包
[root@stau66 ~]# ls
anaconda-ks.cfg zabbix-3.4.3.tar.gz
2.2 解压
[root@stau66 ~]# tar -xvzf zabbix-3.4.3.tar.gz -C /usr/local/src
2.3 创建用户
[root@stau66 zabbix-3.4.3]# useradd -M -s /sbin/nologin zabbix
2.4 编译和安装
[root@stau66 zabbix-3.4.3]# ./configure --prefix=/usr/local/zabbix --enable-agent &&make install
2.5复制并编辑开机启动脚本
[root@stau66 zabbix-3.4.3]# cp misc/init.d/fedora/core5/zabbix_agentd /etc/init.d
[root@stau66 zabbix-3.4.3]# vim /etc/init.d/zabbix_agentd
ZABBIX_BIN="/usr/local/zabbix/sbin/zabbix_agentd" #修改此行
2.6配置agentd的配置文件
[root@stau66 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf
Server=192.168.10.63 #zabbix server 地址,可以多个,用“,”隔开ServerActive=192.168.10.63 #主动检查的意思,主动检查主机的数据发送给 Zabbix server ServerHostname=stau66.top
UnsafeUserParameters=1
Include=/usr/local/zabbix/etc/zabbix_agentd.conf.d/*.conf #此行需要修改和打开
2.7编写nginx监控脚本,内容如下
[root@stau66 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monit.sh
#/bin/bash
#Description:Automated monitoring nginx performance and process status scripts
NGINX_PORT=80
NGINX_COMMAND=$1
nginx_ping(){
/sbin/pidof nginx |wc -l
}
nginx_active(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Active/ {print $NF}'
}
nginx_reading(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Reading/ {print $2}'
}
nginx_writing(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Writing/ {print $4}'
}
nginx_waiting(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk '/Waiting/ {print $6}'
}
nginx_accepts(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $1}'
}
nginx_handled(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $2}'
}
nginx_requests(){
/usr/bin/curl -s "http://127.0.0.1:"$NGINX_PORT"/status/" |awk 'NR==3 {print $3}'
}
case $NGINX_COMMAND in
ping)
nginx_ping
;;
active)
nginx_active
;;
reading)
nginx_reading
;;
writing)
nginx_writing
;;
waiting)
nginx_waiting
;;
accepts)
nginx_accepts
;;
handled)
nginx_handled
;;
requests)
nginx_requests
;;
*)
echo $"USAGE:$0 {ping|active|reading|writing|waiting|accepts|handled|requests}"
esac
2.8 给脚本添加执行权限
[root@stau66 ~]# chmod +x /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monit.sh
2.9编辑agent端监控nginx状态配置文件,内容如下
[root@stau66 ~]# vim /usr/local/zabbix/etc/zabbix_agentd.conf.d/userparameter_znginx.conf
#
# This is a sample zabbix_agentd config file.
# Put it to /etc/zabbix_agentd.conf.d or otherwise integrate into agent config.
# Edit to your needs.
#
UserParameter=status[*],/bin/bash /usr/local/zabbix/etc/zabbix_agentd.conf.d/nginx_monit.sh \$1
2.10 重启动服务
[root@stau66 ~]# systemctl enable zabbix_agentd
zabbix_agentd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig zabbix_agentd on
[root@stau66 ~]# systemctl restart zabbix_agentd
[root@stau66 ~]# systemctl reload nginx
二、服务端配置
1)server端验证是否能获取agent端的key值
[root@stau63 ~]# /usr/local/zabbix/bin/zabbix_get -s 192.168.10.66 -k status[active]
1
2)添加模板
模版名称:Template Nginx Web Status Monitor
可见的名称:NGINX STATUS MONITOR

3)定义应用集
名称:NGINX_STATUS

4)定义监控项:这里我只写了一个,其它类似添加
创建监控项要注意命名方式,能够见名知意,最关键的是键值 ,这里的键值一定要和agent端的配置文件中定义的键值一致
名称:Nginx_Status_Ping
键值:status[ping]

5)定义图形

6)自定义触发器
a. 超过50个并发连接就执行报警
名称:Excessive number of active links in nginx
表达式:{Template NGINX Web STATUS Monitor:status[active].last()}>50

b.NGINX服务down了执行报警
名称:Nginx down on {HOST.NAME}
表达式:{Template NGINX Web STATUS Monitor:status[ping].last(0)}=0

7)创建主机并关联模板


8)稍等一会,等待出图
开始出图

9)配合自动发送邮件脚本验证触发器效果
[root@stau66 ~]# systemctl stop nginx

收到邮件表示搭建监控nginx脚本完成

zabbix添加nginx监控的更多相关文章
- Zabbix 添加端口监控链接
zabbix 添加端口监控 连接数: zabbix 配置 添加 监控项: 其他检测 方式也是 示例: zabbix 客户端配置文件添加: 编辑 zabbix_agentd.conf 添加 端口 ...
- [Zabbix3.0 ]添加Nginx监控
通过Nginx的http_stub_status_module模块提供的状态信息来监控,所以在Agent端需要配置Nginx状态获取的脚本,和添加key信息等,然后在Server端配置Nginx的监控 ...
- zabbix的nginx监控+邮件报警
nginx监控 下载nginx的监控模板
- zabbix 自定义 nginx 监控模板
打开zabbix首页→配置→模板→创建模板模板名称:Template App NGINXagent 需添加自定义监控项:UserParameter=nginx.status[*],/bin/bash ...
- 给zabbix添加percona监控模板
简单说明一下给zabbix添加的percona的监控模板. 在percona官方网站有说明怎么安装,这里记录下步骤.首先搭建好的zabbix环境. 监控插件连接 : 链接:https://pan.ba ...
- zabbix添加Tomcat监控
参靠了网上一些关于zabbix添加Tomcat的监控配置,自己整理了下: 一.服务器端配置1.找到zabbix源码存放路径 # find / -name zabbix_java #/usr/local ...
- Zabbix 添加 WEB 监控
添加 WEB Monitorings Web Monitoring是用来监控web程序的,可以监控到web程序的下载速度.返回码及响应时间,还支持把一组连续的web动作作为一个整体来监控. 下面我们以 ...
- Zabbix 企业Nginx监控
Zabbix监控Nginx状态 1 修改Nginx配置文件,开启Nginx监控 location /nginx_status { stub_status on; access_log off; all ...
- zabbix 添加jvm监控
1. zabbix 服务端安装,监控jmx 需要--enable-java zabbix 客户端不需要 --enable-java 2.zabbix_server端安装jdk 安装jdk [root@ ...
随机推荐
- Linux 的文件软链接如何删除
Linux 的文件软链接如何删除创建软链接即用 ln -s 原始文件或文件夹 目标文件或文件夹 举例:[root@recover test]# pwd/test[root@recover test]# ...
- 02_编写Table的CRUD
1.使用EF的Code First模式生成DbContext和表对应的实体类 2.编写CRUD接口: 3.集成Swagger接口生成工具,方便测试使用: https://www.cnblogs.com ...
- 二叉搜索树(BST)学习笔记
BST调了一天,最后遍历参数错了,没药救了-- 本文所有代码均使用数组+结构体,不使用指针! 前言--BFS是啥 BST 二叉搜索树是基于二叉树的一种树,一种特殊的二叉树. 二叉搜索树要么是一颗空树, ...
- C博客01——分支,顺序结构
C博客01--分支,顺序结构 1. 本章学习总结 1.1 思维导图 请以思维导图总结本周的学习内容. 1.2 本章学习体会及代码量体会 1.2.1 学习体会 对于C语言课程的理解,我有点吃力,不是说老 ...
- The requested URL /xxxx.html was not found on this server
The requested URL /xxxx.html was not found on this server 的原因是,Apache没有开启重写 apache 打开 httpd.conf 文件找 ...
- DNS的功能-域名空间、域名注册和域名解析
DNS的主要功能包括以下三个: 域名空间:定义一个包括所有可能出现的主机名字的域名空间. 域名注册:保证每台主机域名的唯一性. 域名解析:提供一种有效的域名与IP地址转换机制. DNS域名空间 (1) ...
- mysql安装密码策略插件
https://blog.csdn.net/kk185800961/article/details/79447754 注意linux安装密码策略的插件 validate_password.so
- Mac谷歌浏览器跨域
1.创建一个文件夹,这个文件夹是用来保存关闭安全策略后的用户信息的,名字可以随意取,位置也可以随意放,我用的是MyChromeDevUserData open -n /Applications/Goo ...
- vue-cli3 一直运行 /sockjs-node/info?t= 解决方案
sockjs-node 是一个JavaScript库,提供跨浏览器JavaScript的API,创建了一个低延迟.全双工的浏览器和web服务器之间通信通道. 服务端:sockjs-node(https ...
- python练习题_03
1.写函数: 根据范围获取其中3和7整除的所有数的和,并返回调用者: 符合条件的数字个数以及符合条件的数字的总和,如:def func(start,end): def func(start,end): ...