作者 樂維社群(forum.lwops.cn)許遠
背景:某公司基於 Nginx 伺服器搭建的網站,需要監控頁面響應耗時的資料,因此該公司搭建了zabbix開源監控系統,當監控到頁面響應時間超過3000ms閾值時,就進行告警通知。本文將透過日誌關鍵字的監控來實現對頁面響應時間感知,示例Zabbix版本:5.0.9。
日誌檔案監控介紹
監控日誌的兩種key(log和logtr),本文只針對log 進行介紹。
log[file,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>]
file:日誌檔案(必須填寫絕對路徑)。
regexp:要匹配內容的正規表示式,或者直接寫你要檢索的內容也可以,例如我想檢索帶ERROR關鍵詞的記錄
encoding:編碼相關,留空即可
maxlines:一次性最多提交多少行,這個引數覆蓋配置檔案zabbxi_agentd.conf中的’MaxLinesPerSecond’,我們也可以留空
mode:預設是all,也可以是skip,skip會跳過老資料
output:輸出給zabbix server的資料。可以是\1、\2一直\9,\1表示第一個正規表示式匹配出得內容,\2表示第二個正規表示式匹配錯的內容。
maxdelay: 最大延遲(秒)。 型別:float。 值:0-(預設)不忽略日誌檔案行; > 0.0-忽略舊行,以便在“maxdelay”秒內獲取最近分析的行。
日誌監控注意事項
Zabbix Server和Zabbix Agent會追蹤日誌檔案的大小和最後修改時間,並且分別記錄在位元組計數器和最新的時間計數器中。
Agent會從上次讀取日誌的地方開始讀取日誌。
位元組計數器和最新時間計數器的資料會被記錄在Zabbix資料庫,並且傳送給Agent,這樣能夠保證Agent從上次停止的地方開始讀取日誌。
當日志檔案大小小於位元組計數器中的數字時,位元組計數器會變為0,從頭開始讀取檔案。
Zabbix Agent每秒傳送日誌量,有一個日誌行數上限,防止網路和CPU負載過高,這個數字在zabbix_agentd.conf中的MaxLinePerSeco
建立日誌監控項
名稱: 自定義。
型別: Zabbix客戶端(主動式)。(日誌型別監控必須使用主動式)
鍵值: log[/itops/nginx/logs/nginx.log,頁面響應耗時:,UTF-8,,skip,]
鍵值含義:
/itops/nginx/logs/nginx.log # 日誌絕對路徑
頁面響應耗時: # 正規表示式,匹配日誌中包含“頁面響應耗時:”行。
UTF-8 # 日誌檔案編碼
skip # 跳過舊資料的處理 (僅影響新建立的監控項)。
資訊型別: 選擇“日誌”。
建立觸發器
表示式:
{192.168.3.28:log[/itops/nginx/logs/nginx.log,頁面響應耗時:,UTF-8,,skip,].iregexp("(?<=頁面響應耗時:)([3-9]\d{3,}|[1-9]\d{4,})")}=1
引數含義:
iregexp("(?<=頁面響應耗時:)([3-9]\d{3,}|[1-9]\d{4,})") # 當監測到符合正規表示式條件(頁面響應耗時大於3000)時,觸發器將設定為觸發。
測試方法:
echo [24-7-9 14:31:29:100 CST] 頁面響應耗時:3000 >> nginx.log
成功觸發告警
測試完成。
以上就是本期的全部內容,更多運維技巧歡迎關注樂維社群,更多運維問題也歡迎到樂維社群留言提問。