Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1654640
  • 博文数量: 135
  • 博客积分: 2820
  • 博客等级: 少校
  • 技术积分: 2544
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-16 13:33
文章分类

全部博文(135)

文章存档

2015年(1)

2014年(8)

2013年(16)

2012年(43)

2011年(56)

2010年(11)

分类: LINUX

2013-07-16 11:42:57


环境说明:
OS :CentOS 5.4 64位
nginx (0.8.46):192.168.100.135
zabbix server(2.0.6) :192.168.100.105

首先 zabbix  监控nginx 是根据nginx的Stub Status 模块,抓取Status模块所提供的数据。

如果想启用Stub Status 模块,在编译nginx 的时候要加上参数 --with-http_stub_status_module 例如:

./configure --user=www --group=www --prefix=/opt/app/nginx --with-http_stub_status_module --with-http_ssl_module

在nginx.conf 里添加 Status 配置,端口801(自己随意),

点击(此处)折叠或打开

  1. server {
  2.         listen 801;
  3.         server_name 192.168.100.135;

  4.         location /webstatus {
  5.             stub_status on;
  6.             access_log off;
  7.             allow 127.0.0.1;
  8.             allow 192.168.100.105;
  9.             allow 192.168.100.135;
  10.             deny all;
  11.         }
  12.     }

访问Status 如下图:

nginx Status 说明:

Active connections:  对后端发起的活动连接数。

server accepts handled requests
 64603417 64603417 90009784           nginx 总共处理了64603417个连接,成功创建了64603417次握手,总共处理了90009784请求。

Reading: 11 Writing: 2 Waiting: 488       Reading: nginx 读取客户端的header数, Writing: nginx 返回给客户端的header数, Waiting: nginx 请求处理完成,正在等待下一 请求指令的连接。

在zabbix 加入配置

点击(此处)折叠或打开

  1. [man@web-nginx02 ~]$ vim /etc/zabbix/zabbix_agentd.conf

  2. 加入

  3. #nginx
  4. UserParameter=nginx.accepts,/usr/local/sbin/nginx_status.sh accepts
  5. UserParameter=nginx.handled,/usr/local/sbin/nginx_status.sh handled
  6. UserParameter=nginx.requests,/usr/local/sbin/nginx_status.sh requests
  7. UserParameter=nginx.connections.active,/usr/local/sbin/nginx_status.sh active
  8. UserParameter=nginx.connections.reading,/usr/local/sbin/nginx_status.sh reading
  9. UserParameter=nginx.connections.writing,/usr/local/sbin/nginx_status.sh writing
  10. UserParameter=nginx.connections.waiting,/usr/local/sbin/nginx_status.sh waiting

新建脚本,注意修改自己的HOST,PORT 变量

点击(此处)折叠或打开

  1. [man@web-nginx02 ~]$ cat /usr/local/sbin/nginx_status.sh

  2. #!/bin/bash
  3. # Script to fetch nginx statuses for tribily monitoring systems
  4. # Author: krish@toonheart.com
  5. # License: GPLv2

  6. # Set Variables
  7. BKUP_DATE=`/bin/date +%Y%m%d`
  8. LOG="/etc/zabbix/webstatus.log"
  9. HOST=`/sbin/ifconfig eth1 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'`
  10. PORT="801"

  11. # Functions to return nginx stats

  12. function active {
  13.         /usr/bin/curl "" 2>/dev/null| grep 'Active' | awk '{print $NF}'
  14.         }

  15. function reading {
  16.         /usr/bin/curl "" 2>/dev/null| grep 'Reading' | awk '{print $2}'
  17.         }

  18. function writing {
  19.         /usr/bin/curl "" 2>/dev/null| grep 'Writing' | awk '{print $4}'
  20.         }

  21. function waiting {
  22.         /usr/bin/curl "" 2>/dev/null| grep 'Waiting' | awk '{print $6}'
  23.         }

  24. function accepts {
  25.         /usr/bin/curl "" 2>/dev/null| awk NR==3 | awk '{print $1}'
  26.         }

  27. function handled {
  28.         /usr/bin/curl "" 2>/dev/null| awk NR==3 | awk '{print $2}'
  29.         }

  30. function requests {
  31.         /usr/bin/curl "" 2>/dev/null| awk NR==3 | awk '{print $3}'
  32.         }

  33. # Run the requested function
  34. $1
[man@web-nginx02 ~]$ chmod +x /usr/local/sbin/nginx_status.sh


二,在zabbix 导入模板,并把主机加入模板中。
nginx_status.xml


重启agent
在zabbix server 端进行zabbix_get测试,取到数据了,说明没问题。

点击(此处)折叠或打开

  1. [pomelo@jumper ~]$ zabbix_get -s 192.168.100.135 -p 10050 -k "nginx.connections.active"
  2. 559

三,查看图型




阅读(8659) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

shikai8501042015-09-30 10:10:15

我也是获取不到数据,提示Unsupported item key
脚本执行和zabbix_get都是可以正常返回值的,就是server提示无效的KEY

zongg2015-09-11 18:15:47

haiyixiang:按照这个做了,在server端可以get到数据,但是图像那显示的是no data,为什么呢

需要等几分钟。

回复 | 举报

haiyixiang2015-09-11 11:19:09

按照这个做了,在server端可以get到数据,但是图像那显示的是no data,为什么呢