zabbix3.4.7主動模式監控日志(多關鍵字)


日志監控原理

1、Zabbix Server和Zabbix Agent會追蹤日志文件的大小和最后修改時間,並且分別記錄在字節計數器和最新的時間計數器中。
2、Agent會從上次讀取日志的地方開始讀取日志。
3、字節計數器和最新時間計數器的數據會被記錄在Zabbix數據庫,並且發送給Agent,這樣能夠保證Agent從上次停止的地方開始讀取日志。
4、當日志文件大小小於字節計數器中的數字時,字節計數器會變為0,從頭開始讀取文件。
5、所有符合配置的文件,都會被監控。
6、一個目錄下的多個文件如果修改時間相同,會按照字母順序來讀取。
7、到每個Update interval的時間時,Agent會檢查一次目錄下的文件。
8、Zabbix Agent每秒發送日志量,有一個日志行數上限,防止網絡和CPU負載過高,這個數字在zabbix_agentd.conf中的MaxLinePerSecond。

log文件的item解釋

log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]

file - 日志文件的全路徑。
regexp - 過濾日志的正則表達式。
encoding - 字符編碼,默認為英文單字節SBCS(Single-Byte Character Set)。
maxlines - agent每秒發送給server(或proxy)的數據的最大行數,這個參數會覆蓋掉zabbix_agentd.conf配置文件里的’MaxLinesPerSecond’參數。
mode - 可填參數:all(默認),skip(跳過舊數據)。
output - 自定義格式化輸出,默認輸出regexp匹配的整行數據。轉義字符’\0’表示regexp。
maxdelay-The ‘maxdelay’ parameter in log items allows ignoring some older lines from log files in order to get the most recent lines analyzed within the ‘maxdelay’ seconds.(這一句我翻譯不准,所以上上英文~)
備注:我推薦大家使用第二個參數,如果只使用第一個參數,將會導致日志文件里的內容統統丟給zabbix_server記錄。加上第二個參數時,過濾后的日志內容才會傳給zabbix server,大大減少了日志內容占用的空間。

監控端 zabbix_Agentd.conf 的配置調整

zabbix客戶端配置主動模式尤為重要。在/etc/zabbix/zabbix-agentd.conf中進行修改

LogFile=/tmp/zabbix_agentd.log
StartAgents=0          #客戶端agent模式,設置為0表示關閉被動模式
Server=**.**.**.**   如果設置為純被動模式,則應該注釋掉這一條指令
ServerActive=**.**.**.**    #主動模式的server IP地址
Hostname=test_host    #重要:客戶端的hostname,一般使用本機ip
RefreshActiveChecks=120    #被監控端到服務器獲取監控項的周期,默認120s即可
BufferSize=200        #被監控端存儲監控信息的空間大小
Timeout=10            #超時時間

創建監控項

在zabbix后台管理頁面中,選中主機添加監控項。

其中:類型選擇Zabbix客戶端(主動式)
鍵值:log[/eric/error_log-20170724.log,”abc|yyy”,,,skip,,]
鍵值含義見前面item解釋。
日志時間格式:yyyy-MM-dd hh:mm:ss,為“年-月-日:小時-分鍾-秒”。
類型:Zabbix主動式。
zabbix agent檢測分為主動(agent active)和被動(agent)兩種形式,主動與被動的說法均是相對於agent來討論的。簡單說明一下主動與被動的區別如下:
主動:agent請求server獲取主動的監控項列表,並主動將監控項內需要檢測的數據提交給server/proxy
被動:server向agent請求獲取監控項的數據,agent返回數據。

創建觸發器

表達式:{zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].iregexp(ERROR|error)}=1 and  {zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].nodata(60)}=0

拆開解析:{zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].iregexp(ERROR|error)}=1 ,iregexp(ERROR|error)}=1 意味着如果匹配到ERROR和error關鍵字其中一個就告警,iregexp意味着正則表達式匹配。

                  {zabbix:log[/etc/zabbix/a.log,"ERROR|error",,,skip,,].nodata(60)}=0,nodata(60)}=0意味着如果60秒內有數據產生則表達式為真,即60秒內如果沒有新數據了,則表達式為假,以防一直采集原有的關鍵字,不是采集新生成的關鍵字(重要)

      and表示同時滿足兩個條件,觸發器才會觸發。

查看數據

手動添加此兩個關鍵字的日志記錄,然后在檢測中——最新數據中,可以看到攔截這兩個關鍵字的日志記錄。出現此兩個關鍵字說明攔截到。
在首頁-儀表盤中會看到相關警報。

 




免責聲明!

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



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