zabbix监控nginx状态

一、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来查看,如下图所示:

wKioL1eR0q6y7GOCAAAzfbhEoYY541.png

  修改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状态的信息了,如下图:

wKiom1eR077Ay28DAAAkoNJ8iYA541.png-wh_50

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

三、编写脚本

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

[root@localhost ~]# cat /etc/zabbix/nginx_status.sh
#!/bin/bash
#author: zhen
#date: 2016/7/15
PATH=/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
HOST=192.168.199.80
PORT=80
function 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.conf
UserParameter=nginx.active,/etc/zabbix/nginx_status.sh active
UserParameter=nginx.accept,/etc/zabbix/nginx_status.sh accept
UserParameter=nginx.handled,/etc/zabbix/nginx_status.sh handled
UserParameter=nginx.requests,/etc/zabbix/nginx_status.sh requests
UserParameter=nginx.reading,/etc/zabbix/nginx_status.sh reading
UserParameter=nginx.writing,/etc/zabbix/nginx_status.sh writing
UserParameter=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 10050
1

  -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”保存,如下图:

wKioL1eR1VKD8iP_AADJFGq8bVo659.png-wh_50

2、创建应用集

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

wKiom1eR1ZOxKRHlAABiZNvLDfw532.png-wh_50

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

wKiom1eR1eCjBf7dAAAYCkMRqlY146.png-wh_50

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

3、创建item

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

wKiom1eR1qmRvvl7AABhmRbPeEw688.png-wh_50

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

wKiom1eR1uCibJnoAACZwsfnxOc426.png-wh_50

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

4、创建graph

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

wKioL1eR1x7x9wHCAABhNLZeQ4c765.png

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

wKiom1eR11KjPjVxAAC1LogBV4I595.png-wh_50

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

5、为主机链接模版

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

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

wKiom1eR15bAX8lOAACwFdxyHAA553.png-wh_50

6、查看添加的图形

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

wKioL1eR2ALD_r_yAADFu6UlcO8639.png-wh_50

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章