十六週一次課

19.12 添加自定義監控項目

zabbix的監控項目是在模板裏面體現,但是有時候就會有些個性化的需求:某一個業務的數據,例如:運營人員想知道網站會員註冊量,會員活躍度;實際上,這些數據,都可以通過數據庫裏面的表的數字來體現,但是zabbix模板是不可能提供那麼相信的監控項目;遇到這種情況,就需要通過編程工具,寫成腳本,最後通過zabbix監控項目,形成圖表,就可以實現;

自定義的監控項目

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

• 解決方案: 1.zabbix監控中心創建監控項目; 1.針對該監控項目以圖形展現

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

vim /usr/local/sbin/estab.sh //內容如下
#!/bin/bash
##獲取80端口併發連接數
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

配置一個能夠讓zabbix用戶執行的權限

chmod 755 /usr/local/sbin/estab.sh

• 客戶端上編輯配置文件

vim /etc/zabbix/zabbix_agentd.conf  //增加
#1表示使用自定義腳本
UnsafeUserParameters=1
#自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,如果沒有參數則可以省略,腳本爲/usr/local/sbin/estab.sh,my.estab.count 是zabbix監控項裏的一鍵值
UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh

• 重啓zabbix-agent服務

systemctl restart zabbix-agent

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

[root@zabbix ~]# zabbix_get -s 172.16.22.246 -p 10050 -k 'my.estab.count' //-p端口,-k 鍵值
3

web 管理頁

• 然後在zabbix監控中心(瀏覽器)配置增加監控項目(併發鏈接數)
配置-->創建模板-->監控項
十六週一次課
十六週一次課
十六週一次課
十六週一次課

• 鍵值寫my.estab.count

添加圖形
十六週一次課
十六週一次課
十六週一次課
然後給對應的主機添加剛纔創建的模板,配置完主機後去瀏覽器訪問
配置好以後,就可以在監控中心查看圖表清空

  1. 進入監控中心
  2. 進入圖表
  3. 選擇需要查看的客戶端
  4. 選擇需要查看的圖表類型
    十六週一次課
    總結:
    在服務端上獲取數值(通過腳本實現),給予服務端訪問腳本的權限,在zabbix監控中心添加對應的監控項目(輸入鍵值),即可

    19.13/19.14 配置郵件告警

    • 使用gmail發告警郵件

• 首先登錄gmail郵箱,設置轉發,開啓POP3、IMAP、SMTP服務;允許低安全應用

• 開啓並記錄授權碼(需要牢記)

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

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

{ALERT.SENDTO}收件人,{ALERT.SUBJECT}主題,{ALERT.MESSAGE}郵件內容  //這三個東西分佈在py腳本參數下

要實現報警,首先py腳本能發出郵件

定義腳本報警 在配置文件定義 在服務端上定義

vim /etc/zabbix/zabbix_server.conf
AlertScriptsPath=/usr/lib/zabbix/alertscripts  //報警腳本所在路徑

• 創建報警腳本mail.py

• vim /usr/lib/zabbix/alertscripts/mail.py   
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
import getopt
import smtplib
from email.MIMEText import MIMEText
from email.MIMEMultipart import MIMEMultipart
from subprocess import *

def sendqqmail(username,password,mailfrom,mailto,subject,content):
gserver = 'smtp.qq.com'
gport = 25

try:
msg = MIMEText(unicode(content).encode('utf-8'))
msg['from'] = mailfrom
msg['to'] = mailto
msg['Reply-To'] = mailfrom
msg['Subject'] = subject

smtp = smtplib.SMTP(gserver, gport)
smtp.set_debuglevel(0)
smtp.ehlo()
smtp.login(username,password)

smtp.sendmail(mailfrom, mailto, msg.as_string())
smtp.close()
except Exception,err:
print "Send mail failed. Error: %s" % err

def main():
to=sys.argv[1]
subject=sys.argv[2]
content=sys.argv[3]
##定義QQ郵箱的賬號和密碼,你需要修改成你自己的賬號和密碼(請不要把真實的用戶名和密碼放到網上公開,否則你會死的很慘)
sendqqmail('[email protected]','aaaaaaaaaa','[email protected]',to,subject,content)

if __name__ == "__main__":
main()

#####腳本使用說明######
#1. 首先定義好腳本中的郵箱賬號和密碼
#2. 腳本執行命令爲:python mail.py 目標郵箱 "郵件主題" "郵件內容"

給予腳本讀寫權限

chmod 755 /usr/lib/zabbix/alertscripts/mail.py

測試mail.py是否能發郵件

# python mail.py [郵箱] "test1" "zabbix;mail;test"
# date
Mon Jul  9 01:46:51 CST 2018

創建一個接受告警郵件的用戶,“管理”,“用戶”,“創建用戶”
選擇羣組,歸屬於那個羣組,這個涉及到之後的權限是否能發送郵件
密碼,用於,登錄,接收,發送郵件
登錄系統時,默認顯示的界面
十六週一次課
“報警媒介”,類型選擇“Email”,注意用戶的權限,如果沒有需要到用戶組去設置權限

別忘了點添加
十六週一次課
默認的權限是無,需要去修改羣組,給予權限
十六週一次課

1、選擇讀寫 2、點擊“選擇”添加所有組 3、選擇好一切以後,添加權限
十六週一次課
如果沒有設置觸發器,需添加一個觸發器

十六週一次課
十六週一次課
• 設置動作,“配置”,“動作”,“創建動作”,名稱寫“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

•“操作”,選擇發送的用戶爲剛創建的用戶,僅送到選擇"Email"

十六週一次課
• 切換到“恢復操作”,把信息改成如下 (客戶端狀態恢復了,需要確認已經恢復狀態)

HOST:{HOST.NAME} {HOST.IP}
TIME:{EVENT.DATE}  {EVENT.TIME}
LEVEL:{TRIGGER.SEVERITY}
NAME:{TRIGGER.NAME}
messages:{ITEM.NAME}:{ITEM.VALUE}
ID:{EVENT.ID}

• 點擊“新的”,“操作”,選擇發送的用戶爲剛創建的用戶,僅送到選擇“Email”
十六週一次課
最後查看動作主界面

看到最後有一個“已啓用”證明配置成功
十六週一次課

19.15 測試告警

手動調節觸發器,以實現報警,發郵件
包剛纔的5000改爲5
十六週一次課
再次修改爲5000
十六週一次課

19.16 不發郵件的問題處理

爲虛擬機,可能存在一些bug,第一次配置的時候,經常會出現zabbix發現問題,做了郵件告警,但是郵箱卻沒有收到郵件的問題;重新恢復快照以後再做一次,就又能正常發送郵件,接收郵件了

配置郵件告警總結

1、到gmail郵箱開啓SMTP服務,並記錄授權碼,沒有開啓,腳本里面就沒有寫的密碼

2、設置郵件告警
首先設置一個報警媒介;三個參數必須填寫正確,順序也不能錯誤

3、編輯郵件告警腳本

/usr/lib/zabbix/alertscripts

路徑不能錯誤,必須在這個路徑下,添加一個腳本
創建好之後,記得給腳本755權限

4、配置用戶
配置用戶之前,把用戶羣組的權限改一下,讓組有一個讀寫權限
用戶加到指定的羣組裏
報警媒介,添加自己的郵箱,自己給自己發,這個成功率會比較高

5、配置動作

操作修改默認信息(發送郵件的格式),操作需要添加一個“新的”給誰發郵件;恢復操作同樣

6、測試一下告警是否能成功發送郵件

人爲創建一個觸發器,設置一個系統最低運行都會觸發報警的觸發器
也可以在客戶端上斷開連接(停止客戶端的zabbix服務)

PS: 客戶端主動模式和被動模式,在監控項裏,選擇一個監控項打開,選擇類型是客戶端主動,客戶端;客戶端主動即爲主動模式,客戶端爲被動模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章