zabbix 與 nginx (五)


zabbix監控nginx的大概流程為:
 
1:被監控端的nginx開啟stub_status模塊
2:通過腳本的方式獲取nginx的狀態值
3:修改被監控端的配置文件,Userparameter=item.key[*],command
4:創建模版  添加應用集、監控項、觸發器、圖像等
5:添加主機,添加nginx模版,創建動作
6:測試
 
一、nginx的stub_stauts模塊
 
stub_status模塊主要用於查看nginx的一些狀態信息
 
1)若在機器上,還未安裝nginx,那么在編譯安裝的時候,要加上stub_status模塊參數      

    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/lnmp/pcre-7.9
 
2)若機器上已經安裝了nginx,查看是否安裝的時候,是否安裝了--with-http_stub_status_module
 
    [root@lile Downloads]#/usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.8.0
    built by gcc 4.4.720120313(RedHat4.4.7-16)(GCC)
    built with OpenSSL1.0.1e-fips 11Feb2013
    TLS SNI support enabled
    configure arguments:--prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_ssl_module --with-pcre=/usr/local/lnmp/pcre-7.9

 

若沒有,那么進到安裝目錄執行(這里需要加的參數都要加上,而不是只加stub_status的)
 
    ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_gzip_static_module --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/lnmp/pcre-7.9
 
 然后make, 不要make install
 
    make
 
然后把新編譯的nginx替換到舊的(這里可以先把原來的nginx執行腳本備份一下)
 
    cp /home/lile/nginx-1.8.0/objs/nginx /usr/local/nginx/sbin/nginx
 
這個時候再使用/usr/local/nginx/sbin/nginx -V 查看的時候,configure arguments這里就有stub_status的模塊參數了
 
3)修改nginx的配置文件,在server里加上:
 
    location /ngx_status {
    stub_status on;
    access_log off;
    allow 127.0.0.1;
    allow 10.0.0.146;
    }

 

4)啟動nginx
 
5)瀏覽器訪問: http://10.0.0.13/ngx_status ,返回這樣一個數據
 
 
我的理解的意思:(通過做實驗,理解出來的)
Active connections:當前活躍的客戶端連接數,比如打開了3個瀏覽器窗口
accepts:接受客戶端訪問的總次數
handled:處理的連接總次數
requests:客戶端請求的總次數
reading:nginx正在讀取請求頭的連接數
writing:nginx正將請求返回給客戶端的連接數
waiting:當前等待客戶端請求的空閑連接數
 
官網的解釋:
 
二、寫腳本,分別獲取上面的值
 
nginx.sh  把這個腳本放在被監控端的服務器,然后在配置文件里指定位置
 
    #!/bin/bash
    Host=10.0.0.13
    Port=80

ping(){ /bin/pidof nginx |wc -l } active(){ curl $Host:$Port/ngx_status 2>/dev/null |grep 'Active'|awk -F":"'{print $NF}' } Reading(){ curl $Host:$Port/ngx_status 2>/dev/null |grep 'Reading'|awk '{print $2}' } Writing(){ curl $Host:$Port/ngx_status 2>/dev/null |grep 'Writing'|awk '{print $4}' } Waiting(){ curl $Host:$Port/ngx_status 2>/dev/null |grep 'Waiting'|awk '{print $6}' } accepts(){ curl $Host:$Port/ngx_status 2>/dev/null |awk NR==3|awk -F" "'{print $1}' } handled(){ curl $Host:$Port/ngx_status 2>/dev/null |awk NR==3|awk -F" "'{print $2}' } requests(){ curl $Host:$Port/ngx_status 2>/dev/null |awk NR==3|awk -F" "'{print $3}' } $1

 

vim 除了:wq!保存退出   ZZ 也可以保存退出
 
三、修改被監控端的zabbix-agent的配置文件
 
添加UserParameter值 vim  zabbix-agent/etc/zabbix_agentd.conf
 
    LogFile=/tmp/zabbix_agentd.log
    Server=10.0.0.146
    ServerActive=10.0.0.146
    Hostname=Zabbix agent1
    UserParameter=nginx.status[*],/home/lile/zabbix-agent/nginx.sh $1

 

UserParameter:用戶自定義key
格式: UserParameter=key[],command
            key:[*]    key里可以傳遞多個參數,item-key
            command:key里傳遞的參數分別對應$1,$2......
 
四、測試
在zabbix服務端,使用zabbix-get命令進行檢測:
 
使用方法:
 
    [root@lile alertscripts]#/usr/local/zabbix-3.2.6/bin/zabbix_get
    usage:
    zabbix_get -s host-name-or-IP [-p port-number][-I IP-address]-k item-key
    zabbix_get -h
    zabbix_get -V

 

在服務端先使用zabbix-get檢測看是否能得到值:只有這樣能到到返回值,才能在zabbix界面顯示出來
 
    [root@lile alertscripts]#/usr/local/zabbix-3.2.6/bin/zabbix_get -s 10.0.0.13-k 'nginx.status[accepts]'
    43

 

五:創建nginx模版
 
1:創建模版
 
 
 
 
2:在剛剛的nginx模版上創建應用集
 
 
 
3:創建監控項,把所有的需要監控的創建監控項,鍵值就是我們在配置文件里寫的item-key,我的是nginx.status[*],把所有的全部創建起來  active Reading Writing Waiting accepts handled requests
 
 
 
 
 
4:創建觸發器,我這里只是對nginx進程不存在的進行觸發,這里的表達式根據腳本里寫的ping函數,他的返回值來進行修改
 
 
 
5:創建圖形
 
對剛剛nginx進程存不存在創建圖像
 
 
 
其他狀態信息創建一個圖形
 
 
 
六、使用這個nginx模版
 
和原來的一樣,進行測試
1:添加主機
2:在這個主機上添加nginx模版
3:添加動作
4:分別在被監控的主機上停止和啟動nginx,進行測試,看是否會報警
 
這是恢復的報警
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM