Zabbix4.0监控Nginx1.16.1
Zabbix默认自带了很多有用的监控模板,通常对主机运行状态使用默认的模板就可以了,有时候我们需要根据实际情况自定义一些监控信息。本文记录一下Zabbix监控Nginx服务的配置过程。捋一捋思路,整个配置过程大致如下:
1. 确定监控内容
思考一下nginx有哪些信息可以监控,nginx内置了一个status状态的功能,通过配置可以看到nginx的运行情况,status显示的内容包括当前连接数,处于活动状态的连接数,已经处理的请求数等等,关于status状态页的配置在nginx启用status状态页文章有介绍,这里不再多说。
nginx内建了一个状态页,通过查看状态页信息可以连接到nginx服务负载情况,还可以利用状态页信息配zabbix监控,这里先介绍nginx的status状态页的使用。
location = /status/ { stub_status on; allow 127.0.0.1; # deny all; # access_log off; }
需要注意Nginx配置文件中location段的匹配顺序,在Nginx的配置文件中我还做了动静分离和负载均衡,如下图:
staus状态页配置比较简单,要注意的是status定义内容只能存在location{}中
访问查看:http://IP地址/status/
上面的内容信息如下:
Active connections:当前所有处于打开状态的活动连接数
accepts :已经接收连接数
handled : 已经处理过的连接数
requests : 已经处理过的请求数,在保持连接模式下,请求数量可能会大于连接数量
Reading: 正处于接收请求的连接数
Writing: 请求已经接收完成,处于响应过程的连接数
Waiting : 保持连接模式,处于活动状态的连接数
2. 编写agent端监控脚本
通过脚本获取status页面信息的关键值,zabbix server通过这些关键值才能生成数据图像,获取status的关键值脚本如下:
mkdir /home/scripts
vim ngx_status.sh
#! /bin/bash #date: 2020-01-18 # Description:Zabbix4.0监控Nginx1.16.1性能以及进程状态 # Note:此脚本需要配置在被监控端 HOST="192.168.5.51" PORT="80" # 检测Nginx进程是否存在 function ping { /sbin/pidof nginx | wc -l } # 检测Nginx性能 function active { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Active‘ | awk ‘{print $NF}‘ } function reading { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Reading‘ | awk ‘{print $2}‘ } function writing { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Writing‘ | awk ‘{print $4}‘ } function waiting { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| grep ‘Waiting‘ | awk ‘{print $6}‘ } function accepts { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk ‘{print $1}‘ } function handled { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk ‘{print $2}‘ } function requests { /usr/bin/curl "http://$HOST:$PORT/status/" 2>/dev/null| awk NR==3 | awk ‘{print $3}‘ } # 执行function $1
赋予脚本可执行权限
chmod a+x /home/scripts/ngx_status.sh
在本地测试脚本
/home/scripts/ngx_status.sh active
配置zabbixd.conf,定义监控脚本key
要使用脚本监控需要将zabbixd.conf文件中的
UnsafeUserParameters=1 开启
在脚本中添加定义以下各项的键值
UserParameter=nginx.status[*],/home/scripts/ngx_status.sh $1
重启zabbix-agent
systemctl restart zabbix-agent
zabbix服务端使用zabbix_get 测试获取数据
zabbix_get -s 192.168.5.51 -k nginx.status[active]
服务端测试正常后就可以在web界面配置监控了,zabbix配置都是通过界面配置,要熟练配置监控,要了解zabbix的每个组件的功能及各个组件之间的关系,否则看着一堆菜单选项会无从下手。
zabbix的配置流程大致如下:
创建主机组—>添加主机—>创建监控模板—>创建应用集—>创建监控项—>创建图像—>创建触发器—>创建事件—>创建处理动作—>创建用户组与用户—>创建告警方式
由于前面已经创建了主机组和主机,这里从配置模板开始,我们可以通过配置监控模板的方式,让所有相同的监控需求的主机都统一调用这个监控模板,这样就不用一个一个地添加监控项了。
这篇文章只做创建监控模板—>创建应用集—>创建监控项—>创建图像这三项的步奏,监控告警的内容以后再做。
登录zabbix web配置台
下面开始页面配置
创建模板
填写模板信息
返回模板页已经看到创建的模板已经生成,这时创建的模板是空模板,要在这个模板中创建应用集,监控项等,点击下图中的应用集就可以直接创建。
本文参考自: