前言:
Zabbix监控的大致流程是:
主机(主机组)->监控项->触发器->事件->动作->报警升级->媒介->通知。
术语说明:
主机/主机组(Host):ip/主机模版
监控项(Items):监控指标item是数据收集核心
触发器(Triggers):表达式,阈值,发生状态转换会产生事件
事件(Event):关注的事情
动作(Actions):事件发生后的处理方式
报警升级:发送报警或者自定义的方案
媒介(Media types):方式:email,wechat,msn
一.安装zabbix-agent端
1,下载编译
#groupadd zabbix
#useradd -g zabbix zabbix
#./configure –prefix=/usr/local/zabbix-agent –enable-agent&&make &&make install
2,编辑配置
# vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf
Server=115.29.150.215
ServerActive=115.29.150.215
Hostname=AY140404172834963f4aZ 想要通过主机名,需要添加hosts文件记录。
User=zabbix-agent
3,启动zabbix-agent
# /usr/local/zabbix-agent/sbin/zabbix_agentd -c /usr/local/zabbix-agent/etc/zabbix_agentd.conf
# ss -ntl | grep 10050 查看端口正常
LISTEN 0 128 *:10050 *:*
二.添加配置主机
在配置选项中,主机,添加主机。点击模版,选择好模版,然后点添加即可。
添加的步骤为:添加主机,添加监控项,最后添加图形。
三.监控nginx
原理:监控nginx的原理主要是通过调用nginx自身监控模块-with-http_stub_status_module来实现的。所以需要在编译nginx的时候编译进去。
1,下载所需我模版以脚本
# git clone https://github.com/kerncai/zabbix.git
[[email protected] nginx]# ls
nginx_status nginx_status.sh nginx_status.xml README.md
首先在nginx.conf配置文件中添加webstatus段配置。确保可以访问即可。
server {
listen 808;
server_name 115.29.150.216;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
allow 114.116.195.147; #授权的访问ip
deny all; }
}
[Active connections: 2 #对后端发起的活动连接数
server accepts handled requests #处理了40次连接,创建40次握手,共103请求。
40 40 103
Reading: 0 Writing: 1 Waiting: 1 # Reading:读取客户端header数,Writing:返回客户端header数,Waiting:请求完成,等待下一次连接。]
2,在zabbix-agent配置文件加入配置
# vim /usr/local/zabbix-agent/etc/zabbix_agentd.conf
#nginx
UserParameter=Active,/usr/local/zabbix-agent/bin/nginx_status.sh Active
UserParameter=Reading,/usr/local/zabbix-agent/bin/nginx_status.sh Reading
UserParameter=Writing,/usr/local/zabbix-agent/bin/nginx_status.sh Writing
UserParameter=Waiting,/usr/local/zabbix-agent/bin/nginx_status.sh Waiting
3,复制nginx_status.sh脚本并给权限
脚本内容如下:
#!/bin/bash
Active(){
wget –quiet -O – http://localhost:808/nginx_status?auto |awk ‘NR==1 {print$3}’}
Reading(){
wget –quiet -O – http://localhost:808/nginx_status?auto |awk ‘NR==4 {print$2}’}
Writing(){
wget –quiet -O – http://localhost:808/nginx_status?auto |awk ‘NR==4 {print$4}’}
Waiting(){
wget –quiet -O – http://localhost:808/nginx_status?auto |awk ‘NR==4 {print$6}’}
$1
# cp nginx_status.sh /usr/local/zabbix-agent/bin
# chmod +x /usr/local/zabbix-agent/bin/nginx_status.sh
# vim /usr/local/sbin/nginx_status.sh
# sed -i s/nginx_/web/g “nginx_status.sh” 修改原脚本nginx_为目前status路径。
4,重启agents之后,尝试用agent_get测试数据。
# /usr/local/zabbix-agent/bin/zabbix_get -s 115.29.150.216 -p 10050 -k “Active”
2
5,导入zabbix模版,并把主机加入到模版中
nginx_status.xml 把模版文件导入到zabbix模版中
导入模版之后,创建新的应用集把nginx主机连接到模版上去。最后监测是否出图。
四.总结
在整个nginx监控中,首先需要知道的是监控zabbix是通过nginx的status页面来实的,然后就是脚本和配置文件,nginx_status(在zabbix_agent配置文件中,主要就是对nginx_status的脚本对关键内容获取) nginx_status.sh(通过nginx_status页面实时数据做采集) nginx_status.xml(监控模版)。zabbix-agent和 zabbix-server目录和启动用户建议保持一致。
以上内容pdf版本下载:通过ngx_status实现zabbix对nginx的监控.pdf