一.簡介
監控日志也是zabbix的一個很好的功能。像redis集群崩潰,會重組,但端口不會出問題,這就導致監控端口不會發現redis已經出現問題。
結構:
監控項篩選固定的內容進行記錄,觸發器對內容再次篩選或匹配,符合后進行告警
環境:
zabbix-3.4.2
二.操作
1.在客戶端搭建一個httpd服務器
yum -y install httpd
systemctl start httpd
2.讓zabbix客戶端有權限查看,具體權限看情況設置
chmod -R 777 /var/log/httpd/
3.自定義一個監控項,基於主機的
#被動模式不行
類型:主動式
#log[文件位置,篩選內容]
鍵值:log[/var/log/httpd/access_log,/admin.html]
#日志格式
信息類型:日志
#y表示年,M表示月,d表示日,p和:表示占位符,h表示小時,m表示分鍾,s表示秒。
日志時間格式:yyMMddphh:mm:ss
4.瀏覽器訪問http://1.1.1.1/admin.htmlx
5.檢測 -> 最新數據 -> 異常訪問admin
6.觸發器規則,我這里設置200報警,其實可以設置200正常,其它報警,規則可以再看看。
7.訪問http://1.1.1.1/admin.htmlx ,過一會再訪問http://1.1.1.1/admin.html ,看是否觸發器會有提示
8.再訪問正確地址,會發現報警取消了。
三.其它說明
key
首先要了解key
log[ file ,<regexp>,<encoding>,<maxlines>,<mode>,<output>]
file:文件名,寫絕對路徑
regexp:要匹配內容的正則表達式,或者直接寫你要檢索的內容也可以,例如我想檢索帶ERROR關鍵詞的記錄
encoding:編碼相關,留空即可
maxlines:一次性最多提交多少行,這個參數覆蓋配置文件
zabbxi_agentd.conf中的’MaxLinesPerSecond’,我們也可以留空
mode:默認是all,也可以是skip,skip會跳過老數據
output:輸出給zabbix server的數據。可以是\1、\2一直\9,\1表示第一個正則表達式匹配出得內容,\2表示第二個正則表達式匹配錯的內容。
logrt
logrt的file可以用正則表達式,防止日志切割。例如access_*.log
logrt[ file ,<regexp>,<encoding>,<maxlines>,<mode>,<output>]
注意說明
- zabbix server和zabbix agent 會追蹤日志文件的大小和最后修改時間,並且分別記錄到字節計數器和最新時間計數器中
- agent會從上次讀取日志的地方開始讀取日志
- 字節計數器和最新時間計數器的數據會被記錄在zabbix數據庫,並且發送給agent,這樣能夠保證agent從上次停止的地方開始讀取
- 當日志文件大小小於字節計數器的數字時,字節計數器會變成0,從頭開始讀取文件,用於日志切割
- 所有符合配置的文件,都會被監控
- 一個目錄下的多個文件如果修改時間相同,會按照字母順序來讀取
- 到每個update interval的時間時,agent會檢查一次目錄下的文件
- zabbix-agent每秒發送的日志數據,有一個日志行數的上限,這是為了防止網絡和cpu負載過高,這個數字是zabbix_agent.conf中的MaxLinesPerSecond。
- 發送的日志量最多是agent設置的buffer size的50%,就算只有日志類監控(即沒有其它類型的item),也是只有50%。同時,由於有maxlines,故需要將zabbix_agent.conf中的BufferSize設置為maxlines的2倍
- 當anget沒有log類型的監控的時候,所有BufferSize都會為其它類型item服務。如果這時新建了日志文件類型的監控,會將BufferSize中最老的50%數據清空給日志文件item使用。
- 在logrt中,正在表達式只對文件名有效,對文件目錄無效。