项目:
1.自动发现nginx调度器及后端apache构建的web服务集群;
2.使用自定义参数监控调度器上nginx服务的相关统计数据及速率数据;
3.使用自定义参数监控后端apache服务的相关统计数据及速率数据;(选做)
4.制定出nginx调度器及后端apache服务的监控模板,在模板中定义出:items, trigger, graph;(选做)
-------------------------------------------------------------------------------------------------------
项目规划:
zabbix-server端:172.16.1.2
zabbix-agent端/nginx调度器:172.16.1.99
zabbix-agent端/后端RS1:172.16.1.3
zabbix-agent端/后端RS2:172.16.1.10
把nginx调度器的ip地址设置的大一些,是为了设置zabbix Discovery的时候,自动区分发现nginx调度器及后端apache构建的web服务集群,所以下面可以设置两个zabbix Discovery,分别发现不同作用的主机。
1.
zabbix-server端:
安装以下应用
yum install zabbix-server-mysql zabbix-web-mysql zabbix-web zabbix-agent zabbix-get -y
详细的server端配置请参照:http://blog.51cto.com/12667170/2044254
三个zabbix-agent端:
安装以下应用
yum install -y zabbix-agent zabbix-sender
详细的agent端配置请参照:http://blog.51cto.com/12667170/2044254
2.创建nginx调度器
在nginx.conf配置文件中的http段内添加upstream内容,将后端两台RS加入到该upstream中
upstream zrs {
server 172.16.1.3;
server 172.16.1.10;
}
server {
listen 80;
location / {
proxy_pass http://zrs;
proxy_set_header X-Real-IP $remote_addr;
}
}
两个后端rs各配置一个index.html方便测试,并开启httpd服务
测试可以看到使用了RoundRobin模式对后端rs访问。
[root@zrs2 ~]# for i in {1..10}; do curl http://172.16.1.99; done
<h1>172.16.1.3</h1>
<h1>172.16.1.10</h1>
<h1>172.16.1.3</h1>
<h1>172.16.1.10</h1>
<h1>172.16.1.3</h1>
<h1>172.16.1.10</h1>
<h1>172.16.1.3</h1>
<h1>172.16.1.10</h1>
<h1>172.16.1.3</h1>
<h1>172.16.1.10</h1>
3.自动发现nginx调度器及后端apache构建的web服务集群
创建nginx discovery
创建web discovery
分别打开nginx调度器端和后端rs主机上的zabbix-agent服务
查看Hosts,已经添加进了这三台主机
4.使用自定义参数监控调度器上nginx服务的相关统计数据及速率数据
为了监控nginx状态,在nginx的主配置文件的server中添加location监控nginx的状态值。
[root@zrs2 ~]# vim /etc/nginx/nginx.conf
location /status {
stub_status on;
}
[root@zrs2 ~]# systemctl restart nginx.service
[root@zrs2 ~]# curl 172.16.1.99/status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
监控nginx的状态,需要item的key,默认的没有,需要自定义参数UserParameters
5.自定义参数(UserParameters)
nginx自定义参数
vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.active,curl -s http://172.16.1.99/status | awk '/^Active/{print $NF}'
UserParameter=nginx.accepts,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print }'
UserParameter=nginx.handled,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print }'
UserParameter=nginx.requests,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print }'
保存退出,重启服务
[root@zrs2 zabbix_agentd.d]# systemctl restart zabbix-agent.service
在server端查看,可以不用eno查看状态,直接用第二种方法就能获取值,都成功了
[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k net.if.in[eno16777736,bytes]
285905110
[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.active
1
[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.accepts
9
[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.handled
10
[root@zrs1 ~]# zabbix_get -s 172.16.1.99 -k nginx.requests
11
接下来可以根据上面自定义的参数UserParameters,创建新的item项,可以输入刚才自定义的key。
在Hosts的172.16.1.99主机后面点击Items,然后Create item
如下创建4个监控项,也就是刚才设置的,注意的是preprocessing中改为Change per second
可以给这些监控创建一个graph
经过一段时间后,查看这个graph有了数值,表示自定义参数监控设置成功。
6.nginx调度器创建监控模板,在模板中定义出:items, trigger, graph。
创建nginx template
在这个模版上创建item,监控入站流量,注意的是preprocessing中改为Change per second
创建trigger
为了触发器被触发需要定义动作actions
这时需要定义Administration中users下面的media
再定义media types中的email中的media type
创建graph
7.后端apache服务配置监控模板,在模板中定义出:items, trigger, graph。
创建web template
在这个模版上创建item,监控出站流量,注意的是preprocessing中改为Change per second
创建trigger为了跟上面的trigger区分,这里Severity改为High
创建graph
8.链接应用模版
如下图,在172.16.1.99的host旁边,选择templates
链接nginx template
同样的步骤为两个后端rs链接模版
9.查看Hosts,刚才自定义配置监控都成功了。
原文链接:http://blog.51cto.com/12667170/2045749