最近開發人員有一個需求,監控java程序的報錯日志,如日志中包含“ERROR”關鍵字的信息,就郵件告警,以下是具體實現方法。
一、創建模板
以上是已經創建好的模板,名為“Template App Java logs”
創建應用集
二、創建監控項
鍵值示例:log[/app/wutongshu/monitorlog/error.log,ERROR,,,skip,]
說明:1、"/app/wutongshu/monitorlog/error.log"表示日志路徑
2、"ERROR"表示匹配的關鍵字
3、"skip"為可選參數,表示跳過舊數據
參數介紹:
參數介紹:
file - 日志文件的全路徑。
regexp - 過濾日志的正則表達式。
encoding - 字符編碼,默認為英文單字節SBCS(Single-Byte Character Set)。
maxlines - agent每秒發送給server(或proxy)的數據的最大行數,這個參數會覆蓋掉zabbix_agentd.conf配置文件里的'MaxLinesPerSecond'參數。
mode - 可填參數:all(默認),skip(跳過舊數據)。
output - 自定義格式化輸出,默認輸出regexp匹配的整行數據。轉義字符'\0'表示regexp
三、創建觸發器
表達式:{Template App Java logs:log[/app/wutongshu/monitorlog/error.log,ERROR,,,skip,].str(ERROR)}=1 and {Template App Java logs:log[/app/wutongshu/monitorlog/error.log,ERROR,,,skip,].nodata(60)}=0
拆開解析:
{Template App Java logs:log[/app/wutongshu/monitorlog/error.log,ERROR,,,skip,].str(ERROR)}=1表示如果匹配到“ERROR”關鍵字,表達式為真。
{Template App Java logs:log[/app/wutongshu/monitorlog/error.log,ERROR,,,skip,].nodata(60)}=0表示60秒內有數據產生則表達式為真,即60秒內如果沒有新數據了,則表達式為假。
and表示同時滿足兩個條件,觸發器才會觸發。
轉載于:https://blog.51cto.com/13450126/2355649