zabbix監控DNS服務


為了方便公司內部訪問jira、wiki等內網應用服務,我們搭建了DNS服務,為全公司提供域名解析服務,重要性可想而知,因此,有了監控的需求,這里記錄下使用zabbix來監控dns的過程。

監控DNS分為三部分

    1. 端口監控(53)
    1. 日志監控(/var/log/messages中出現named.*fatal)
    1. 解析域名監控(腳本定時dig www.baidu.com)

監控實施:

為了方便遷移,結構清晰,使用創建模板,在模板中定義監控項(Items)、觸發器(trigger),然后在主機中鏈接模板。這樣以后再增加或者遷移dns服務,直接套用模板就行了。

端口監控

配置—模板–創建模板—-輸入模板名稱,然后點保存。
模板創建成功后,開始創建監控項:
配置—模板—DNS模板—-監控項—-創建監控項

填寫名稱、類型、鍵值,其他默認即可。創建完成后,點保存。

創建監控項,監控項可以去獲取數據了。但是想要報警還需要添加觸發器(trigger)來觸發報警。
配置—-模板—DNS模板—觸發器—創建觸發器

日志監控

同樣在DNS模板中創建日志的監控項。

這里需要重點說一下監控項中的:鍵值(key)
log[/var/log/messages,named.*fatal,,skip,]

zabbix的日志文件監控,它最主要的是監控日志文件中有沒有某個字符串的表達式,對應日志輪轉與否,zabbix都支持。
在配置Item的時候,類型選擇Zabbix agent (active),這里主要需要配置的是鍵值(Key)。下面是監控日志的兩種key——log和logtr。
log[/path/to/some/file, , , , , ]
logtr[/path/to/some/filename_format, , , , , ]
regexp:要匹配內容的正則表達式,或者直接寫你要檢索的內容也可以,例如我想檢索帶ERROR關鍵詞的記錄
◆ encoding:編碼相關,留空即可
◆ maxlines:一次性最多提交多少行,這個參數覆蓋配置文件zabbxi_agentd.conf中的’MaxLinesPerSecond’,我們也可以留空
◆ mode:默認是all,也可以是skip,skip會跳過老數據
◆ output:輸出給zabbix server的數據。可以是\1、\2一直\9,\1表示第一個正則表達式匹配出得內容,\2表示第二個正則表達式匹配錯的內容。
logtr和log唯一的區別是:logtr支持文件名的正則表達式,如日志名位www.a.com_2015-01-01.log、www.a.com_2015-01-02.log等等,log監控不了,這時候就需要用logtr了。

監控原理及注意事項

1、Zabbix Server和Zabbix Agent會追蹤日志文件的大小和最后修改時間,並且分別記錄在字節計數器和最新的時間計數器中。
2、Agent會從上次讀取日志的地方開始讀取日志。
3、字節計數器和最新時間計數器的數據會被記錄在Zabbix數據庫,並且發送給Agent,這樣能夠保證Agent從上次停止的地方開始讀取日志。
4、當日志文件大小小於字節計數器中的數字時,字節計數器會變為0,從頭開始讀取文件。
5、所有符合配置的文件,都會被監控。
6、一個目錄下的多個文件如果修改時間相同,會按照字母順序來讀取。
7、到每個Update interval的時間時,Agent會檢查一次目錄下的文件。
8、Zabbix Agent每秒發送日志量,有一個日志行數上限,防止網絡和CPU負載過高,這個數字在zabbix_agentd.conf中的MaxLinePerSecond。
9、在logtr中,正則表達式只對文件名有效,對文件目錄無效。

好,配置好監控項后,我們來配置觸發器:

表達式內容說明:如果監控項獲取的數據中出現了fatal則為1(真),如果60s之內沒數據,則為0(假),也就是說只有60s內出現了新數據,並且出現了fatal,這個時候觸發器表達式成立,才會觸發報警。

域名解析監控(dig)

測試DNS解析域名功能,這個zabbix自帶的監控項已經無法實現了。這時需要我們來自定義監控項。
自定義監控的配置過程如下:

  1. 編寫監控腳本,獲取監控項的具體值
  2. 在zabbix_agentd.conf文件中定義UserParameter
  3. 在界面配置item
    4.添加觸發器(Trigger)

編寫監控腳本

 
 
 
         
  1. #!/bin/bash
  2. URL=`dig www.baidu.com +time=3 +short @10.0.254.113|head -1`
  3. # 以10.0.254.113為dns服務器,解析www.baidu.com 超時3s。
  4. if [ $"$URL"x = 'www.a.shifen.com.'x ]
  5. then
  6. echo 1
  7. else
  8. echo 0
  9. fi

判斷得到的域名是不是百度的cname,這里要注意后邊都有個x,這個是重點,如果dig命令得到的結果為空的話,就是x = 'www.a.shifen.com.x',但如果沒有這個x,那么' ' = 'www.a.shifen.com.x' 這樣會報錯的。

在zabbix_agent.conf.d目錄下創建一個zabbix_checkdns.conf的文件

 
 
 
         
  1. cat /home/ddd/zabbix_agent/etc/zabbix_agentd.conf.d/zabbix_dns.conf
  2. UserParameter=chk.dns[*],/bin/bash /home/ddd/zabbix_agent/etc/scripts/zabbix_checkdns.sh

chk.dns就是在添加監控項(items)時的鍵值(key),當zabbix配置chk.dns這個key的時候,就會執行后邊配置的命令:/bin/bash /home/ddd/zabbix_agent/etc/scripts/zabbix_checkdns.sh,
而chk.dns[]表示[]可以接受參數,比如chk.dns[www.baidu.com,192.168.30.1],這時候執行腳本的時候就變成了 /bin/bash /home/ddd/zabbix_agent/etc/scripts/zabbix_checkdns.sh www.baidu.com 192.168.30.1,chk.dns[]中的值對應執行腳本的時候就會變成 1 2.。。,
這個大家可以根據需求在自定義腳本的時候使用。

在界面配置items:


這個就非常簡單了。

添加觸發器


最近三次的值都為0,則觸發器成立,觸發報警。


免責聲明!

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



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