zabbix监控nginx状态

时间:2021-05-27 08:49:33

一、zabbix客户端配置

  首先修改一下zabbix客户端的配置,习惯上将zabbix的配置文件拷贝到自建的/etc/zabbix/目录,方便管理:

[root@localhost ~]# sed -e '/^$/d;/^#/d'  /etc/zabbix/zabbix_agentd.conf
PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
Server=192.168.199.79
ServerActive=127.0.0.1
Hostname=zabbix client1
Include=/etc/zabbix/zabbix_agentd.conf.d/   #启用一个专门保存配置文件的目录,减少直接修改zabbix_agentd.conf文件。
UnsafeUserParameters=1   #代表是否启用“不安全的用户参数”,0不启用,1启用。如果不启用可能导致zabbix不识别某些参数,比如即将用到的requests。

  修改之后重启zabbix_agent,并且创建/etc/zabbix/zabbix_agentd.conf.d/目录。

二、配置nginx可以查看nginx状态  

  zabbix监控nginx状态,是通过nginx的stub_staus模块来获取参数的值。所以需要在编译nginx的时候加上--with-http_stub_status选项。如果不知道编译的时候有没有加上这个选项,可以使用/usr/local/nginx/sbin/nginx -V来查看,如下图所示:

zabbix监控nginx状态

  修改nginx的配置文件,在server{}中添加stub_status配置:

 48         location /status {            #location匹配规则 49             stub_status on; 50             allow 127.0.0.1; 51             allow 192.168.199.79;   #zabbix服务端ip,必须允许 52             allow 192.168.199.80;   #zabbix客户端ip,可以允许,方便测试 53             allow 192.168.199.186;  #本地windows的ip,可以允许,方便测试 54             deny all; 55         }

  修改之后重启nginx。

  通过浏览器访问192.168.199.80/status,就可以看到关于nginx状态的信息了,如下图:

zabbix监控nginx状态

  如果看不到效果,应该检查nginx是否允许此ip通过浏览器查看nginx状态,或者nginx中定义的路径是否正确。

三、编写脚本

  通过编写脚本来获取nginx状态各个参数的值,这个脚本的路径没有限制,脚本内容如下:

[root@localhost ~]# cat /etc/zabbix/nginx_status.sh#!/bin/bash#author: zhen#date: 2016/7/15PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/binHOST=192.168.199.80PORT=80function active {  /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==1{print $3}'  }function accept {  /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==3{print $1}'  }function handled {  /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==3{print $2}'  }function requests {  /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==3{print $3}'  }function reading {  /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==4{print $2}'  }function writing {  /usr/bin/curl $HOST:$PORT/status2>/dev/null | awk 'NR==4{print $4}'  }function waiting {  /usr/bin/curl $HOST:$PORT/status 2>/dev/null | awk 'NR==4{print $6}'  }$1      #“$1”一定不要落下,否则zabbix就读取不到值了。

四、增减zabbix配置

  在zabbix客户机上增加下面的配置:

[root@localhost ~]# cat /etc/zabbix/zabbix_agentd.conf.d/nginx_status.confUserParameter=nginx.active,/etc/zabbix/nginx_status.sh activeUserParameter=nginx.accept,/etc/zabbix/nginx_status.sh acceptUserParameter=nginx.handled,/etc/zabbix/nginx_status.sh handledUserParameter=nginx.requests,/etc/zabbix/nginx_status.sh requestsUserParameter=nginx.reading,/etc/zabbix/nginx_status.sh readingUserParameter=nginx.writing,/etc/zabbix/nginx_status.sh writingUserParameter=nginx.waiting,/etc/zabbix/nginx_status.sh waiting

  userparameter的格式:UserParameter=key,shell command

  写完之后还是要重启zabbix客户端的。

  切换到zabbix的服务端,测试是否能获取到客户端的key值,如下:

[root@zhen ~]# /usr/local/zabbix/bin/zabbix_get -k nginx.active -s 192.168.199.80 -p 100501

  -k:指定key   -s:指定主机ip  -p:指定端口,默认端口不需要指定

  将各个key都测试一下,没有问题就可以下一步了。如果获取不到值或者不支持,最可能的原因就是权限问题,可以将需要的文件属主都改为zabbix,或者执行visudo命令,为zabbix用户添加sudo权限,让zabbix可以执行/etc/zabbix/nginx_status.sh。再有就是检查一下key是否输入正确。

五、在zabbix的web页面上添加监控

1、创建模版:

  对于大量服务器都可能用到的监控,应该创建专门的template,在添加主机的时候直接添加template就可以,而不需要挨个主机去添加item。

登录zabbix页面,在“Configuration――Templates”下右上角单击“Create Template”,填写“Template name”,“group”,也可以创建一个新的组,完成之后点击“save”保存,如下图:

zabbix监控nginx状态

2、创建应用集

  为这个模版添加一个应用集“application”,点击下图中的Application:

zabbix监控nginx状态

  在右上角有“create application”,单击,填写内容如下:

zabbix监控nginx状态

  只需要定义应用集的名称,保存。

3、创建item

  保存之后,创建item。在“Configuration――Template”下找到刚刚创建的模版“nginx status”,单击“items”,如下图:

zabbix监控nginx状态

  单击左上角的“create item”,如下图:

zabbix监控nginx状态

  填写item的名称,key不用选择,填写在zabbix客户机配置文件中定义的key,设置“update interval”(更新间隔),选择“application”(应用集),保存。按照这样的步骤,为其他key也创建item。

4、创建graph

  保存之后,创建item。在“Configuration――Template”下找到刚刚创建的模版“nginx status”,单击“Graphs”,如下图:

zabbix监控nginx状态

  单击右上角的“create graph”,如下图:

zabbix监控nginx状态

  填写graph的名称,自定义宽、高,单击“add”,选择要加入graph的item,点击“save”保存。

5、为主机链接模版

  在“Configuration――Hosts”下的name一栏点击主机名,在“”Templates

下选择“nginx status”,点击“add”“save”。

zabbix监控nginx状态

6、查看添加的图形

  在“Monitoring――Dashboard”下的“Favourate graphs”添加graph,如下图:

zabbix监控nginx状态

  在弹出的窗口中选中nginx status,select就可以完成添加了。然后点击“nginx status”就可以查看图形。


本文出自 “宁静” 博客,请务必保留此出处http://zhen0522.blog.51cto.com/11834939/1828850