使用Zabbix來監控系統日誌

1、爲何要監控日誌?數據庫

Linux爲了跟蹤和監視系統(內核)自己各個組件及應用程序運行狀態而將產生的相關事件存儲在日誌文件中,當系統或者應用程序出現問題時,系統管理員能根據日誌快速定位到問題。而經過實時監控Linux日誌文件,系統管理員不只能夠及時掌控到服務器錯誤消息以及其它應用程序的詳細信息。還能夠監控到系統安全性,如非法登陸等事件。安全


2、哪些日誌須要被監控?服務器

一、/var/log/messages,對應Debian或Ubuntu日誌文件爲/var/log/syslog。該日誌文件用於記錄系統啓動期間的產生的日誌、應用程序相關的錯誤日誌。併發

/var/log/messages須要監控的關鍵字以下:ssh

Crit、crit、Warn、warn、Error、error、err、failed、segfault等ide


二、/var/log/secure,對應Debian或Ubuntu日誌文件爲/var/log/auth.log。該日誌文件用於記錄服務器中全部與用戶身份驗證相關的事件,如用戶sudo/ssh登陸信息、暴力***等未經受權的信息。post

/var/log/secure須要監控的關鍵字以下:spa

Failed、failed、Error、err等。3d


三、/var/log/boot.log,該日誌用於記錄系統啓動時的相關信息,包括應用程序開機自啓動。另外,非正常關機、意外重啓或引導失敗等相關問題均會被記錄。日誌

/var/log/boot.log須要監控的關鍵字以下:

WARNING、FATAL、ERROR、Failed等。


四、/var/log/dmesg,該日誌記錄了硬件設備以及驅動程序相關信息,當內核在引導過程當中檢測到硬件錯誤時會在該文件中記錄相關信息。

/var/log/dmesg須要監控的關鍵字以下:

Failed、failed、Error、err等。


另外還能夠監控系統相關應用日誌,包括/var/log/cron、/var/log/yum.log、/var/log/maillog或者用戶自定義的日誌文件等。

3、如何使用Zabbix監控日誌關鍵字?

咱們須要用到Zabbix監控日誌的兩種Key,log和logtr。

在配置log和logtr類型的Item時,item的Type必定要選擇Zabbix agent (active),即主動模式,所以全部Zabbix的Agent端zabbix_agentd.conf中須要配置ServerActive指向Zabbix Server。另外,zabbix用戶須要有被監控的日誌文件讀取權限,不然item添加後會報unsupported。

確保Zabbix Agent配置了ServerActive,以下圖所示。

image.png

② 確保要監控的日誌zabbix用戶有讀取權限,可執行以下命令。

/usr/bin/setfacl -m u:zabbix:r-- /var/log/secure

/usr/bin/setfacl -m u:zabbix:r-- /var/log/messages

/usr/bin/setfacl -m u:zabbix:r-- /var/log/boot.log

/usr/bin/setfacl -m u:zabbix:r-- /var/log/dmesg


經過修改/etc/logrotate.d/syslog,確保日誌滾動後仍然可被zabbix用戶讀取。  

# cat /etc/logrotate.d/syslog  

/var/log/cron

/var/log/maillog

/var/log/messages

/var/log/secure

/var/log/spooler

/var/log/dmesg

/var/log/boot.log

{

  missingok

  sharedscripts

  postrotate

      /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/secure

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/messages

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/boot.log

      /usr/bin/setfacl -m u:zabbix:r-- /var/log/dmesg

  endscript

}


④ 使用log[]或者logrt[]添加items。

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

logrt[file_regexp,<regexp>,<encoding>,<maxlines>,<mode>,<output>,<maxdelay>,<options>]

詳細可參考官檔中文說明(https://www.zabbix.com/documentation/4.0/zh/manual/config/items/itemtypes/log_items


建立item前,咱們先建立一個模板如"Template System Logs",專門用於系統日誌監控。

image.png

而後,再建立一個名爲"Template System Logs"的Applications

image.png

最後再建立items,建立items注意事項以下圖所示。

image.png

建立觸發器

image.png

添加到主機

image.png

最後模擬登陸失敗(輸錯密碼便可),觸發告警,以下圖所示。

image.png

使用Grafana展現以下圖所示。

1589118387789-27ea4ed6-5a44-4792-8d5c-ce0dcfa2d048.jpeg

同理,其餘應用日誌監控都可以使用上述方法,但日誌保留週期不要太長,尤爲是錯誤日誌較多狀況下。若無特殊要求,保留1-2周便可。


總結:Zabbix Agent每次從上次中止的點開始繼續讀取日誌文件。當Agent剛剛啓動或已收到之前被禁用或不支持的監控項的狀況下,已經分析的字節數(大小計數器)和最後修改時間(時間計數器)存儲在Zabbix數據庫中併發送到Agent,以確保Agent今後位置開始讀取日誌文件。可是,若是Agent從服務器接受非零大小的計數器, 而logrt[] 和 logrt.count[] 監控項沒有找到,也沒找到匹配的文件,若文件稍後出現,大小計數器將重置爲0,將從頭開始分析。另外,當日志文件大小小於計數器中的數字時(日誌發生了滾動),計數器會變爲0,Agent將從頭開始分析文件。

相關文章
相關標籤/搜索