1. 程式人生 > >Zabbix(六):項目實戰之--自動發現nginx調度器及後端web服務集群、自定義參數監控

Zabbix(六):項目實戰之--自動發現nginx調度器及後端web服務集群、自定義參數監控

zabbix 自動發現 nginx

項目:

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 $1}'

UserParameter=nginx.handled,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print $2}'

UserParameter=nginx.requests,curl -s http://172.16.1.99/status | awk '/^[[:space:]]+[0-9]/{print $3}'


保存退出,重啟服務

[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,剛才自定義配置監控都成功了。

技術分享圖片


Zabbix(六):項目實戰之--自動發現nginx調度器及後端web服務集群、自定義參數監控