通常狀況下,日誌最早反映出應用當前的問題,在海量日誌裏面找到咱們異常記錄,例如監控系統日誌、nginx、Apache、業務日誌,而後記錄下來,而且根據狀況報警。 nginx
一、日誌監控項介紹 正則表達式
最主要的是監控日誌文件中有沒有某個字符串的表達式,對應日誌輪轉與否,zabbix都支持。 數據庫
在配置Item的時候,Type選擇Zabbix agent (active),這裏主要須要配置的是Key。下面是監控日誌的兩種key——log和logtr。 網絡
log[/path/to/some/file,<regexp>,<encoding>,<maxlines>,<mode>,<output>] 編碼
logtr[/path/to/some/filename_format,<regexp>,<encoding>,<maxlines>,<mode>,<output>] spa
◆ regexp:要匹配內容的正則表達式,或者直接寫你要檢索的內容也能夠,例如我想檢索帶ERROR關鍵詞的記錄 日誌
◆ encoding:編碼相關,留空便可 regexp
◆ maxlines:一次性最多提交多少行,這個參數覆蓋配置文件zabbxi_agentd.conf中的'MaxLinesPerSecond',咱們也能夠留空 orm
◆ mode:默認是all,也能夠是skip,skip會跳過老數據 server
◆ output:輸出給zabbix server的數據。能夠是\一、\2一直\9,\1表示第一個正則表達式匹配出得內容,\2表示第二個正則表達式匹配錯的內容。
若是仔細看能夠發現,第一個參數不同,logrt的第一個參數可使用正則表達式。針對日誌回滾用得,例如咱們天天都切割nginx日誌,日誌名爲www.a.com_2015-01-01.log、www.a.com_2015-01-02.log等等,使用log確定不合適,若是文件名使用正則,那麼新增的日誌文件會當即加入監控。
備註:無論新日誌、老日誌,只要他們有變動,zabbix都會監控。
只要配置了<regexp>,Zabbix會根據<regexp>的正則表達式來匹配日誌中的內容。注意,必定要保證Zabbix用戶對日誌文件有可讀權限,不然這個Item的狀態會變成"unsupported"。
二、監控原理及注意事項
Zabbix Server和Zabbix Agent會追蹤日誌文件的大小和最後修改時間,而且分別記錄在字節計數器和最新的時間計數器中。
Agent會從上次讀取日誌的地方開始讀取日誌。
字節計數器和最新時間計數器的數據會被記錄在Zabbix數據庫,而且發送給Agent,這樣可以保證Agent從上次中止的地方開始讀取日誌。
當日志文件大小小於字節計數器中的數字時,字節計數器會變爲0,從頭開始讀取文件。
全部符合配置的文件,都會被監控。
一個目錄下的多個文件若是修改時間相同,會按照字母順序來讀取。
到每一個Update interval的時間時,Agent會檢查一次目錄下的文件。
Zabbix Agent每秒發送日誌量,有一個日誌行數上限,防止網絡和CPU負載太高,這個數字在zabbix_agentd.conf中的MaxLinePerSecond。
在logtr中,正則表達式只對文件名有效,對文件目錄無效。
示例:監控zabbix server日誌
三、建立日誌監控項
配置——>主機,找到zabbix server,監控項——>建立監控項
類型:必須選擇zabbix客戶端(主動式),由於數據是zabbix被監控的主動提交給server
鍵值:自定義,參數爲日誌文件的路徑等
信息類型:日誌
應用集:日誌
查看最新數據
四、建立觸發器
例如當重啓服務的時候進行報警,原理是經過過濾關鍵字進行報警
配置——>主機,找到zabbix server,觸發器——>建立觸發器
過濾關鍵字添加生成表達式
設置報警嚴重性級別爲"嚴重"
日誌監控至此完成,接下來就是觸發報警了