一、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来查看,如下图所示:
修改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状态的信息了,如下图:
如果看不到效果,应该检查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”保存,如下图:
2、创建应用集
为这个模版添加一个应用集“application”,点击下图中的Application:
在右上角有“create application”,单击,填写内容如下:
只需要定义应用集的名称,保存。
3、创建item
保存之后,创建item。在“Configuration——Template”下找到刚刚创建的模版“nginx status”,单击“items”,如下图:
单击左上角的“create item”,如下图:
填写item的名称,key不用选择,填写在zabbix客户机配置文件中定义的key,设置“update interval”(更新间隔),选择“application”(应用集),保存。按照这样的步骤,为其他key也创建item。
4、创建graph
保存之后,创建item。在“Configuration——Template”下找到刚刚创建的模版“nginx status”,单击“Graphs”,如下图:
单击右上角的“create graph”,如下图:
填写graph的名称,自定义宽、高,单击“add”,选择要加入graph的item,点击“save”保存。
5、为主机链接模版
在“Configuration——Hosts”下的name一栏点击主机名,在“”Templates
下选择“nginx status”,点击“add”“save”。
6、查看添加的图形
在“Monitoring——Dashboard”下的“Favourate graphs”添加graph,如下图:
在弹出的窗口中选中nginx status,select就可以完成添加了。然后点击“nginx status”就可以查看图形。
本文出自 “宁静” 博客,请务必保留此出处http://zhen0522.blog.51cto.com/11834939/1828850
原文地址:http://zhen0522.blog.51cto.com/11834939/1828850