准备三台虚拟机,确保三台都能够上网,我的第一台机器为192.168.150.129,第二台为192.168.150.130,第三台为192.168.150.131,三台虚拟机都是centos7操作系统,并且关闭防火墙。
1.zabbix-server端
zabbix-server端还是在Linux集群 监控zabbix的部署_大白将的博客-CSDN博客这一篇的基础上进行,所以zabbix-server端无需改动
2.Nginx-server端
192.168.150.130位Nginx主机,进行Nginx的部署,首先安装Nginx。
[root@localhost ~]# wget http://nginx.org/download/nginx-1.4.2.tar.gz #下载Nginx包
[root@localhost ~]# tar -zxvf nginx-1.4.2.tar.gz #解压这个Nginx包
[root@localhost ~]# yum -y install pcre pcre-devel zlib zlib-devel #安装Nginx对应的依赖
[root@localhost ~]# cd nginx-1.4.2 #进入Nginx包
[root@localhost nginx-1.4.2]# ./configure --prefix=/usr/local/nginx --with-http_stub_status_module #因为我们监控Nginx的状态统计,所以也要安装状态统计所依赖的包
[root@localhost nginx-1.4.2]# make && make install #编译并安装
在进行配置文件的编写,添加状态统计,并开启Nginx
[root@localhost zabbix]# vi /usr/local/nginx/conf/nginx.conf
location /nginx_status {
stub_status on; #在配置文件中加入这三行,开启监控统计
access_log off;
}
在浏览器进行测试:192.168.150.130/nginx_status,可见配置成功
接下来我们就要对这些数据进行检测,但是Linux和zabbix不支持直接检测,所以我们要采用脚本的方式进行编写,脚本如下:这个脚本的意思就是摘取Nginx状态统计的这些数值进行反馈
[root@localhost ~]# vi nginx-status.sh
#!/bin/bash
HOST="127.0.0.1"
PORT="80"
function ping {
/sbin/pidof nginx | wc -l
}
function active {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null | grep 'Active' | awk '{print $NF}'
}
function reading {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null | grep 'Reading' | awk '{print $2}'
}
function writing {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null | grep 'Writing' | awk '{print $4}'
}
function waiting {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null | grep 'Waiting' | awk '{print $6}'
}
function accepts {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null | awk NR==3 | awk '{print $1}'
}
function handled {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null | awk NR==3 | awk '{print $2}'
}
function requests {
/usr/bin/curl "http://$HOST:$PORT/nginx_status/" 2>/dev/null | awk NR==3 | awk '{print $3}'
}
$1
[root@localhost ~]# chmod a+x nginx-status.sh #赋予权限
[root@localhost ~]# bash nginx-status.sh active #执行查看数值,我们就能看到数值
下一步就是安装zabbix-agent端
[root@localhost ~]# rpm -ivh http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-release-3.2-1.el7.noarch.rpm
[root@localhost ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
[root@localhost ~]# yum -y install zabbix-agent
安装完成后,我们要在zabbix-agent的配置文件中,打开脚本监控的功能,并且将hostname,serverip,serveractive相应的IP地址进行更改,这里UnsafeUserParameters意思就是支持脚本,将0改为1,并在下面UserParamete进行配置更改
UserParameter=nginx.status[*],/etc/zabbix/zabbix_agentd.d/nginx-status.sh $1
因为后续我们使用的就是nginx.status[*],所以我们在这里直接写上即可,后面跟着脚本的路径,这里我将脚本放到了/etc/zabbix/zabbix_agentd.d/目录下
然后我们进入到zabbix的web页面进行配置
我们是监控的Nginx状态统计,所以要自行导入Nginx模板 配置>模板>导入>选择文件(模板文件我放到文章最后,可自行下载)>导入
导入成功后,我们在 模板中就可以发现我们所导入的模板
点击Template App NGINX 的监控项,如下显示,我们可以看到这个触发器,就是根据ping返回的至进行触发
我们再将Nginx主机添加上,点击配置>主机>创建主机
监控项我们选择这几个
添加成功
3.进行第三台主机的配置
我们第三台主机主要就是进行测试,直接装好正常的配置环境,无需安装任何软件。
直接 while 2>1 do curl 192.168.150.130; done 这样就会一直访问,我们就可以在图形中看到所监控的数据。点击监测中>图形>群组选择nginx>主机选择Nginx服务器>图形选择Nginx status server查看 ,检测成功
4.web场景的监测
在zabbix的web端,点击配置>主机>选择我们刚才的主机Nginx服务器,点击应用集,创建应用集
创建一个应用集为http-code,然后点击web场景,创建web场景,这些值都可以自己设定
然后点击步骤,在新弹出的页面中输入名称以及要访问监测的页面,要求返回的状态码为200,因为只有是200时才是正常的。
web场景构建完毕后,我们在进行触发器的设置点击触发器>创建触发器
名称随便定义,严重性设为严重,表达式进行添加,点击添加表达式时弹出新的页面,我们选择如图所示的这个,然后功能选择最新的T的值不是N,N为200,这样就说名T不是200的时候就会触发报警,插入,这里我们多添加两行,并用and连接,更改last的值,这也就是三次都要可以
这里web场景监测就完成了,我们点击监测中>仪表盘进行查看,测试页面正常时,没有警告的东西,当我们把测试页面删除后,在进行查看
我们把测试页面删除后,会出现严重警告,我们看到问题就是我们所创建的web检测异常
5.聚合图形的绘制
点击监测中>聚合图形>创建聚合图形,名称为重要信息,行和列我们不在这里动
创建完成后,就会有了,点击进入,编辑聚合图形,点击相应的+号,选择想选择的信息即可完成
这个是我提供给大家的zabbix监控Nginx的模板文件以及脚本文件,大家可自行下载。zbx_export_templates-Linux文档类资源-CSDN下载