1. 程式人生 > >2018.4.16 16周4次課

2018.4.16 16周4次課

Linux學習

十六周四次課(4月16日)

19.12 添加自定義監控項目

19.13/19.14 配置郵件告警

19.15 測試告警

19.16 不發郵件的問題處理

19.12 添加自定義監控項目

前面提到過zabbix的優勢,其中之一就是很方便地添加自定義監控項目,它雖然提供了豐富的模板,但依然不能滿足各種各樣的特殊需求。比如,想要監控Nginx的訪問日誌條數,此類個性化需求在zabbix的模板中是沒有的。下面舉一個實際的例子來教你添加自定義的監控項目,這涉及編寫shell腳本。需求是:監控某臺web服務器80端口的並發連接數,並設置圖形。

先來分析一下該需求,有兩步,第一是要創建自定義監控項,第二是要針對該監控項設置成圖形。而該監控項不能在zabbix自帶模板中找到,只能自己手動創建,監控項目有一個核心的元素就是數據源,有了數據源就可以創建監控項了,並且也很容易成圖形。所以,問題的焦點在於:如何獲取服務器80端口的並發連接數

需求:監控某臺web的80端口連接數,並出圖

兩步:1)zabbix監控中心創建監控項目;2)針對該監控項目以圖形展現

在前面的章節中,曾經介紹過一個命令netstat,其中它有一個用法nestat -ant可以查看系統 TCP連接狀態情況,在各個狀態中有一個ESTABLISHED'它表示正在連接中。由此,就可以獲取80端口的並發連接數,具體命令為:netstat -ant |grep ':80 ' |grep ESTABLISHED

80後面多了一個空格,這是為了更加精準,如果不加空格,8080這樣的端口也會包含在內了。

對於第一步,需要到客戶端定義腳本

vim /usr/local/sbin/estab.sh //內容如下

#!/bin/bash

##獲取80端口並發連接數

netstat -ant |grep ':80 ' |grep -c ESTABLISHED

更改權限:chmod 755 /usr/local/sbin/estab.sh

客戶端上編輯配置文件 vim /etc/zabbix/zabbix_agentd.conf //增加

UnsafeUserParameters=1 //表示使用自定義腳本

UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh //自定義監控項的key為my.estab.count,後面的[*]裏面寫腳本的參數,如果沒有參數則可以省略,腳本為/usr/local/sbin/estab.sh,[*]:*表示後面的腳本沒有參數,如果有參數就寫在中括號裏,用逗號分隔

重啟zabbix-agent服務:systemctl restart zabbix-agent

首先到服務端驗證,執行命令

zabbix_get -s 192.168.37.104 -p 10050 -k 'my.estab.count' //得到的數字是0,如果不是說明腳本執行不對;-s:指定客戶端IP;-p:指定端口,如果不指定就是用默認的10050;-k:指定鍵

技術分享圖片

檢查網絡防火墻:

技術分享圖片

然後在zabbix監控中心(瀏覽器)配置增加監控項目

鍵值寫my.estab.count

添加該項目後,到“監測中”→“最新數據”查看剛添加的項目是否有數據出現

依次點擊“配置" →“主機",找到aming-06主機,然後點擊“創建監控項",名稱寫“並發連接數",鍵值寫類型保持默認,即被動模式,如果選擇"zabbix客戶端(主動式)"則為主動模式。鍵值寫my.estab.count。其他項保持默認,點擊最下面的“添加"按鈕

技術分享圖片

目前還不確定是否正確添加監控項,依次點擊”監測中”→“最新數據",主機那一欄選擇aming-06,名稱填寫“ 80端口",然後點擊“應用"按鈕,則會過濾出剛剛添加的“並發連接數"監控項,可以看一下最新數據是什麽。最新數據為0,這說明沒有問題。

有了數據就可以添加圖形了

“配置” “主機” “圖形” “創建圖形

技術分享圖片

如果需要報警的話,還可以做一個觸發器

“配置” “主機” “觸發器” “創建觸發器”

技術分享圖片

19.13/19.14 配置郵件告警

使用126或者QQ郵箱發告警郵件

首先登錄你的126郵箱,設置開啟POP3、IMAP、SMTP服務

開啟並記錄授權碼

然後到監控中心設置郵件告警

“管理”,“報警媒介類型”,“創建媒體類型”

{ALERT.SENDTO} ,{ALERT.SUBJECT},{ALERT.MESSAGE} //分布在python腳本的三個參數裏

依次點擊“管理"→“報警媒介類型",在右上角點擊“創建媒體類型",名稱填寫baojing, 類型為“腳本",腳本名字填寫mail.py。腳本參數這裏點擊“添加",然後填寫{ALERT. SENDTO};繼續點 “添加" , 填寫{ALERT.SUBJECT} ;繼續點 “添加",填寫{ALERT.MESSAGE} 。也就是說 ,三個參數需要添加三次,最後點擊下方的“添加" 藍色按鈕。

技術分享圖片

上一步僅僅是定義了告警媒介,但還未創建腳本,也未定義腳本的路徑等信息。首先通過zabbix_server的配置文件確定告警郵件的腳本應該放到哪裏

編輯服務端配置文件:vim /etc/zabbix/zabbix_server.conf

AlertScriptsPath=/usr/lib/zabbix/aIertscripts

創建報警腳本mail.py

vim /usr/lib/zabbix/alertscripts/mail.py //內容參考https://coding.net/u/aminglinux/p/aminglinux-book/git/blob/master/D22Z/mail.py

其中gserver = 'smtp.xxx.com' //更改為自己郵箱的smtp服務器

sendqqmail('郵箱地址,'郵箱的客戶端授權密碼','郵箱地址',to,subject,content)

更改腳本權限:chmod 755 /usr/lib/zabbix/alertscripts/mail.py

執行腳本:python /usr/lib/zabbix/alertscripts/mail.py 郵箱地址 “標題”“內容“

技術分享圖片

創建一個接受告警郵件的用戶,“管理”→“用戶”→“創建用戶”→“報警媒介”,類型選擇“baojing”,註意用戶的權限,如果沒有需要到選擇的用戶組去設置權限

技術分享圖片

技術分享圖片

技術分享圖片

設置動作,“配置”→“動作”→“創建動作”,名稱寫“sendmail”(自定義),

技術分享圖片

“操作”頁面,內容如下

HOST:{HOST.NAME} {HOST.IP} //定義的主機名和IP

TIME:{EVENT.DATE} {EVENT.TIME} //發生的日期和時間

LEVEL:{TRIGGER.SEVERITY} //定義的示警度

NAME:{TRIGGER.NAME} //告警的觸發器名

messages:{ITEM.NAME}:{ITEM.VALUE} //出現告警時的狀態信息

ID:{EVENT.ID} //事件的ID

“新的觸發條件”,A維護狀態 非在 維護,B觸發器示警度>=未分類

“操作”,選擇發送的用戶為剛創建的用戶“aming“,僅送到選擇“baojing”

技術分享圖片

切換到“恢復操作”,把信息改成如下

HOST:{HOST.NAME} {HOST.IP}

TIME:{EVENT.DATE} {EVENT.TIME}

LEVEL:{TRIGGER.SEVERITY}

NAME:{TRIGGER.NAME}

messages:{ITEM.NAME}:{ITEM.VALUE}

ID:{EVENT.ID}

點擊“新的”,“操作”,選擇發送的用戶為剛創建的用戶aming,僅送到選擇“baojing”

技術分享圖片

19.15 測試告警

創建一個自定義的觸發器

技術分享圖片

測試:

技術分享圖片

查看郵箱,報警郵件收到


2018.4.16 16周4次課