經過zabbix 3.4 實現nginx web監控

這個文章是兩年前發的,最近整理了一下系統使用。只針對nginx前端web進行簡單監控,具體再根據業務需求進行詳細調用。後續的web場景、後端的服務器 這裏不包含,需單獨作,另外日誌分析不建議這裏添加,以避免增長 系統負載尤爲是io。日誌分析處理單獨拿ELK或自主開發的系統監控。前端

1,nginx開啓nginx-status支持。
未安裝該模塊的,能夠參考 《原已經安裝好的nginx如何查看已經安裝模塊和添加一個未被編譯安裝的模塊》安裝。
配置站點文件添加以下location模塊:nginx

location = /nginx-status  {
        stub_status   on;
        access_log   off;
    }

開啓之後訪問http://www.21yunwei.com/nginx-status是以下結果:web

Active connections: 11
server accepts handled requests
946 946 4249
Reading: 1 Writing: 1 Waiting: 9
2,配置zabbix
2.1 導入模板,並須要將監控的主機連接到該模板
連接: http://download.21yunwei.com/zabbix/nginx/`tem_zbx_nginx`.tar.gz
2.2 根據模板中的參數key寫shell
shell腳本獲取參數以下:shell

#!/bin/bash
#use zabbix to monitor nginx status
#author:21yunwei
#監控 httpd code,eg:500.多個站點能夠考慮循環實現 。這裏只針對本身博客21yunwei作狀態碼監控。
accesslog="/logs/nginx/21yunwei/21yunwei.log"
cat ${accesslog} | awk '{print $8}' |sort |uniq | grep 500 >/dev/null 2>&1 ;httpcode=$?
#監控nginx存活狀態,基於端口監聽。另外需加web url監控防止假死。
netstat -tnlp | grep 80 >/dev/null 2>&1 ;status=$?
url="http://www.21yunwei.com/nginx-status"
#監控參數匹配
case $1 in
"active" )
/usr/bin/curl $url 2>/dev/null | grep -i $1 | awk '{print $NF}' ;;
"accepts")
/usr/bin/curl $url 2>/dev/null | awk 'NR==3{print $1}' ;;
"handled")
/usr/bin/curl $url 2>/dev/null | awk 'NR==3{print $2}' ;;
"requests")
/usr/bin/curl $url 2>/dev/null | awk 'NR==3{print $NF}' ;;
"reading")
/usr/bin/curl $url 2>/dev/null | awk 'NR==4{print $2}' ;;
"writing")
/usr/bin/curl $url 2>/dev/null | awk 'NR==4{print $4}' ;;
"waiting")
/usr/bin/curl $url 2>/dev/null | awk 'NR==4{print $NF}' ;;
"ping")
echo $status ;;
"httpcode")
echo $httpcode ;;後端

  • )
    echo "argu error";;
    esac

chmod a+x nginx_zbx.sh
chmod +s /bin/netstat
調整zabbix_agentd下的配置文件,添加以下參數:bash

#nginx monitor
UserParameter=nginx.status[*],/home/yunwei/nginx_zbx.sh $1
配置完成之後重啓agent服務。
1服務器

簡單的整個系統負載監控:
1運維

好了,獲取成功。
這裏只作了監控監控,知道 nginx的運行狀態、鏈接數、、錯誤日誌報警和防假死(web場景添加的)功能,本身想要監控nginx其餘參數,請自行修改模板添加監控項並設置key,經過命令或shell獲取 展示便可。 curl

轉載請註明:21運維 » 經過zabbix 3.4 實現nginx web監控ide

相關文章
相關標籤/搜索