zabbix log(logrt) key的使用


今天看了篇帖子是關於如何利用zabbix 自帶的key去讀log,監控linux異常登陸,一直以來都是自己寫腳本去讀log的.就想看看這個zabbix log 這個key怎么樣..
好吧開始:

官方文檔: 英語好的去看吧 

首先: log(logrt) key 只支持 active 模式....

那么

1.啟動active 模式的agent

sed -i s/^ServerActive=.*/ServerActive=192.168.1.17/ /etc/zabbix/zabbix_agentd.conf
sed -i s/^Hostname=.*/Hostname=log_test/  /etc/zabbix/zabbix_agentd.conf
sed -i /StartAgents=3/aStartAgents=0  /etc/zabbix/zabbix_agentd.conf

  修改 配置中的IP為自己的IP
  修改 Hostname為自己的name

2.添加host
  Hostname 是上邊的hostname
  IP是0.0.0.0 端口不要改
  其他的隨意,根據個人需求

過了20分鍾Availability圖標都沒亮,做了個zabbix Agent 的active 模式的template 加了進去還是不亮, 
最后搞了個Template OS Linux Active ..Availability圖標亮了, 把link Template 取消了還亮着..
(應該是有數據獲取到了才會亮.亮了不出問題是不會暗....) 好吧我們繼續..

我們來顯示登陸異常的提醒:

3. Linux 登陸異常的log文件在: /var/log/secure

Sep 22 03:38:57 web2 sshd[1587]: Accepted publickey for root from 192.168.1.156 port 52626 ssh2
Sep 22 05:15:55 web2 sshd[1878]: Failed password for root from 192.168.1.17 port 49665 ssh2

  #這是secure的一段,登陸成功和失敗的.

4. log key的格式

log[/path/to/file/file_name,<regexp>,<encoding>,<maxlines>,<mode>,<output>]
or
logrt[/path/to/file/regexp_describing_filename_pattern,<regexp>,<encoding>,<maxlines>,<mode>,<output>]

上邊是官方文檔的解釋:很詳細...也有樣例...

第一部分:/path/to/file/file_name log文件的路徑
第二部分: <regexp> 正則匹配
第三部分: <encoding> 文件的編碼格式
第四部分: <maxlines> agent每秒發送給server的最大行數
第五部分: <mode> 模式
第六部分: <output> 可選的輸出格式

Zabbix agent will filter entries of the log file by the content regexp, if present.
Make sure that the file has read permissions for the 'zabbix' user otherwise the item status will be set to 'unsupported'.
For more details see log and logrt entries in the supported Zabbix agent item keys section.
再看看官檔的解釋: 如果 regexp 部分存在的話,zabbix agent會去使用regexp去過濾日志文件的內容
確保zabbix對日志有可讀權限

5. 創建item
  name 隨便起個
  type  要選擇 zabbix agent(active)
  key 我們點擊 select選擇log[......] file 改成我們的日志文件/var/log/secure
  Type of Information 選擇log
  其他的隨意了
  如圖:

    
看看item 沒報錯就正常了,這里應該會報錯,缺少對log文件的讀權限
實驗我只是做了簡單的賦權:

chown zabbix.zabbix /var/log/secure

好了沒什么問題了!

6. 創建個trigger  

  name 隨便寫個
  Expression:

{log_test:log[/var/log/secure,"Failed password"].str(Failed)}=1 and  {log_test:log[/var/log/secure,"Failed password"].nodata(60)}=0

  # item 獲取的值中出現Failed 就報警, 如果60s 無數據就恢復.

  Severitey 選擇 Warning

好了一切都完成了....
模擬個失敗登陸試試.....

這是獲取的數據...

郵件也收到了報警..(前提是你要配置了郵件..)

完成了...

好了這個只是簡單的模擬了log的用法..我們匹配了Failed 我們也可以配置 key( log[/var/log/secure,"(Accepted|Failed) password"])  trigger相應改下.
根據不同的需求可以做響應的改變.
output可以改變輸出的結果 像第六步那張表, 輸出的都是截取到的內容,你可以讓輸出0,1 任何這樣就可以做一些其他的用途了.
有人問這個東西讀日志的效率,沒找到讀日志具體的描述,我覺得效率不會太低,應該和tail -f 一個原理...對於不會寫腳本去分析日志來說這個已經很簡單了...


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM