zabbix應用教程:基於Nginx頁面響應的日誌監控用例

乐维_lwops發表於2024-08-01

作者 樂維社群(forum.lwops.cn)許遠

背景:某公司基於 Nginx 伺服器搭建的網站,需要監控頁面響應耗時的資料,因此該公司搭建了zabbix開源監控系統,當監控到頁面響應時間超過3000ms閾值時,就進行告警通知。本文將透過日誌關鍵字的監控來實現對頁面響應時間感知,示例Zabbix版本:5.0.9

日誌檔案監控介紹

監控日誌的兩種keyloglogtr),本文只針對log 進行介紹。

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

file:日誌檔案(必須填寫絕對路徑)。

regexp:要匹配內容的正規表示式,或者直接寫你要檢索的內容也可以,例如我想檢索帶ERROR關鍵詞的記錄

encoding:編碼相關,留空即可

maxlines:一次性最多提交多少行,這個引數覆蓋配置檔案zabbxi_agentd.conf中的’MaxLinesPerSecond’,我們也可以留空

mode:預設是all,也可以是skipskip會跳過老資料

output:輸出給zabbix server的資料。可以是\1\2一直\9\1表示第一個正規表示式匹配出得內容,\2表示第二個正規表示式匹配錯的內容。

maxdelay: 最大延遲(秒)。 型別:float。 值:0-(預設)不忽略日誌檔案行; > 0.0-忽略舊行,以便在“maxdelay”秒內獲取最近分析的行。

日誌監控注意事項

Zabbix ServerZabbix 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

成功觸發告警

測試完成。

以上就是本期的全部內容,更多運維技巧歡迎關注樂維社群,更多運維問題也歡迎到樂維社群留言提問。

相關文章