日誌監控的功能
Zabbix-Agent支持對日誌文件的監控,可以對日誌的關鍵字進行監控,然後告警。日誌監控支持普通的日誌文件,也支持日誌輪詢、切割的文件。當日志中出現特殊的字符串(列如,警告、報錯等字符串)時,可以發送通知給用戶。爲了使日誌監控能夠正常使用,必須滿足以下條件:
- Zabbix-Agent必須運行,且工作方式爲主動模式
- 日誌的Item必須設置,必須指定文件名
- Zabbix-Agent有讀取日誌權限,如日誌位於/home/用戶名/文件中,則會因爲權限的問題而導致無法讀取到文件
注意:zabbix日誌監控必須工作於主動模式下,在web前端配置的主機名(宏爲{HOST.HOST})必須和Zabbix-Agent端zabbix_agentd.conf中的Hostname值是一致的,並且這個Hostname值具有唯一性:否則,在主動模式下是無法正常採集到數據的。
日誌監控的監控指標
log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]
logrt[/path/to/file/reqexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]
log.count[/path/to/file/file_name, <regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]
logrt.count[/path/to/file/reqexp_describing_filename_pattern, <regexp>,<encoding>,<maxproclines>,<mode>,<maxdelay>,<options>]
參數 | 含義 |
file_name | 日誌文件所在的路徑或絕對路徑文件名 |
regexp | 匹配的正則表達式 |
encoding | 在Linuxunix系統下默認編碼爲UTF-8,在windows系統下默認編碼爲ANSI |
maxlines | 每次給zabbix-server或zabbix-proxy發送的日誌最大行數,此參數值會高於zabbix_agentd.conf中的MaxLinesPerSecond參數值。通過此參數,可以控制一次發送的日誌數據條數,如發送過多,可能會對Zabbix-Agent的負載和I/O有強大影響 |
mode | All爲默認參數,表示匹配所有的日誌,包括以前存在的日誌也會進行匹配 |
skip表示跳過已經存在的日誌數據,只有新的日誌纔會進行匹配 | |
output | 表示匹配輸出的正則表達式,1~9表示返回匹配的第幾個字符串,表示返回匹配的全部字符串。Zabbix3.2版本以後支持 |
maxdelay | 以秒爲單位的最大延遲,用於忽略老的日誌數據,及時獲取當前的日誌數據。Zabbix4.0版本以後支持。當處理的日誌過多,在更新週期內達到maxlines的發送上限,但還有日誌無法發送時,會導致大量堆積,在嚴重情況下,會造成日誌處理速度跟不上,這時使用此參數將忽略過期的日誌發送 輸入的數值類型可以是浮點數(float) 0是默認值,永遠不會忽略日誌文件行 >0.0,忽略較舊的行,以獲得在maxdelay秒內分析的最新行,會丟棄在規定時間內無法發送的數據 |
options | 日誌輪詢、切割的方式。從zabbix4.0版本開始支持 rotate,日誌輪詢、切割,默認值 copytruncate,先拷貝文件,然後清空日誌的輪詢方式。請注意:copytruncate不能與maxdelay一起使用,如使用此參數,maxdelay必須爲0或未指定 |
日誌監控ltem的配置
添加一個日誌監控Item
Key:log[/var/log/secure,session]
日誌監控的權限問題
如果zabbix用戶對日誌沒有讀取權限,則會提示權限拒絕導致數據獲取失敗(將zabbix_agentd進程開啓調試模式,就可以看到讀取日誌權限被拒絕)。
來查看這個文件的權限,由於普通用戶並沒有讀取權限,所以zabbix用戶也無法讀取到數據。
在這裏,爲了演示如何解決這個問題而改變文件的權限,使用如下命令:
[root@localhost log]# chown zabbix.root /var/log/secure
在最新數據中查看自定義log的Iten,可以看到所有獲取到的數據
zabbix監測logfile是否更新
2019-11-28
有時候服務出問題後,logfile就不再寫入新日誌,所有要通過zabbix監測logfile是否更新。
1、創建template datalogfile
2、創建應用集datalogfile
3、創建監控項
nochange of data-log
vfs.file.time[/data/logs/log.txt,change] 監測日誌是否更新,如果60s不更新報警
60s
vfs.file.regmatch[/data1/logs/log.txt,Expired] 日誌如果是否出現Expired字符,出現即報警
4、創建觸發器,警告
data-log on {HOST.NAME} longtime nochanged
{Template data-log:vfs.file.time[/data/logs/log.log,change].fuzzytime(60)}=0
出現Expired字符立即報警
{Template DbService-log:vfs.file.regmatch[/data1/logs/log.log,Expired].last()}=1
5、在zabbix-server監測測試
####
zabbix_get -s 10.30.1.73 -p 10050 -k'vfs.file.time[/dervice/logs/log.log]'
####44
zabbix_get -s 10.30.1.44 -p 10050 -k'vfs.file.time[/data/logs/log.log]'
####lazy1
zabbix_get -s 172.16.1.231 -p 10050 -k'vfs.file.time[/data/logs/log.log]'
####lazy2
zabbix_get -s 172.16.1.67 -p 10050 -k'vfs.file.time[/data/logs/log.log]'
6、常見錯誤
ZBX_NOTSUPPORTED: Cannot obtain file information: [2] No such file or directory
因爲文件或目錄的權限不允許zabbix用戶訪問:
解決:chmod 755 目錄
chmod 644 file.txt