zabbix_sender主動上傳k/v監控nginx日誌狀態碼

  目前的zabbix監控了900臺左右服務器,大概有11萬items,zabbix在工作時根據agent的工作特點分爲主動模式和被動模式,實際上一般開啓兼容模式。在items多了後,有一些速度慢的items如果不採用主動模式,會把server端拖死,而zabbix_sender其實是一種變相的主動模式,配合計劃任務,主動將k/v上傳到zabbix,現將nginx日誌zabbix_sender實現狀態碼的監控拋磚引玉做下介紹。

一、agent端編寫腳本和計劃任務

  需求是監控nginx日誌的200、400、401、403、404、499、502、503、504狀態碼,按分鐘進行數量統計上報。編寫腳本入下:

#!/bin/bash
#writer:gaolixu
log_dir=/data1/ms/comos/logs/access.log #log目錄 
log_tmp_dir=/tmp/last_min_log           #過濾出最後1分鐘的日誌做臨時存放
senderfile=/tmp/sender_file             #用zabbix_sender發送的k/v文件
Hostname=`hostname`                     #獲取主機名,與server端主機名會有驗證
last_min=`date -d "1 minute ago" '+%Y:%H:%M'` #nginx裏的時間,1分鐘之前
tail -60000 ${log_dir} |grep "${last_min}" > ${log_tmp_dir}  #qps在500到800之間,增加性能,tail結尾60000條取出最後一分鐘日誌。
cat /tmp/last_min_log |awk -F'"' '{print $3}' |awk '{print $1}' |sort |uniq -c  >  /tmp/stat  #將狀態碼去重統計
>$senderfile    #清零zabbix_sender的發送文件
c_200=`awk '$2==200{print $1}' /tmp/stat`;[ -z $c_200 ] && c_200=0  #取出數量,如果沒有此狀態碼,數量初始化爲0
c_400=`awk '$2==400{print $1}' /tmp/stat`;[ -z $c_400 ] && c_400=0
c_401=`awk '$2==401{print $1}' /tmp/stat`;[ -z $c_401 ] && c_401=0
c_403=`awk '$2==403{print $1}' /tmp/stat`;[ -z $c_403 ] && c_403=0
c_404=`awk '$2==404{print $1}' /tmp/stat`;[ -z $c_404 ] && c_404=0
c_499=`awk '$2==499{print $1}' /tmp/stat`;[ -z $c_499 ] && c_499=0
c_502=`awk '$2==502{print $1}' /tmp/stat`;[ -z $c_502 ] && c_502=0
c_503=`awk '$2==503{print $1}' /tmp/stat`;[ -z $c_503 ] && c_503=0
c_504=`awk '$2==504{print $1}' /tmp/stat`;[ -z $c_504 ] && c_504=0
echo "$Hostname nginx_stat200 $c_200" >> $senderfile  #將k/v寫入zabbix_sender的發送文件,注意寫法,主機名、key、value
echo "$Hostname nginx_stat400 $c_400" >> $senderfile
echo "$Hostname nginx_stat401 $c_401" >> $senderfile
echo "$Hostname nginx_stat403 $c_403" >> $senderfile
echo "$Hostname nginx_stat404 $c_404" >> $senderfile
echo "$Hostname nginx_stat499 $c_499" >> $senderfile
echo "$Hostname nginx_stat502 $c_502" >> $senderfile
echo "$Hostname nginx_stat503 $c_503" >> $senderfile
echo "$Hostname nginx_stat504 $c_504" >> $senderfile
/usr/local/zabbix/bin/zabbix_sender -c /usr/local/zabbix/etc/zabbix_agentd.conf  -i $senderfile  #最終的向server發送

添加到計劃任務:

*/1 * * * * /usr/local/zabbix/script/nginxlog.sh 2>&1

二、配置server端和grafana進行繪圖

  配置項如下,將type設置爲Zabbix trapper

wKioL1jAxfegr4qDAABcKC_dSv8549.png


設置完畢後執行下腳本,結果如下:

wKiom1jAxnLxyBjNAAAWkDgvAvc074.png

最後將展示放在grafana裏,效果如下:

wKioL1jAy16Tu8TvAAB7sNyly-w932.png

自建個人原創站運維網咖社(www.net-add.com),新的博文會在網咖社更新,歡迎瀏覽

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章