添加自定義監控項目&配置郵件告警&測試告警&不發郵件的問題處理

19.12 添加自定義監控項目

zabbix的監控項目是在模板裏面體現,可是有時會有些個性化的需求。好比:某一個業務的數據,運營人員想知道網站會員註冊量,會員活躍度;實際上,這些數據,均可以經過數據庫裏面的表的數字來體現,可是zabbix模板不可能提供那麼詳細的監控項目;遇到這種狀況,就須要經過編程工具,寫成腳本,把數字統計出來,而後經過zabbix監控項目,造成圖表,就能夠實現分析天天的數據是多少。python

個性化需求

監控客戶端web的80端口鏈接數,並出圖linux

解決方法

第一步:zabbix監控中心建立監控項目web

第二步:針對該監控項目以圖形展示數據庫

客戶端定義腳本

針對第一步,須要在客戶端定義腳本,將所需數據統計出來編程

vim /usr/local/sbin/estab.sh

#!/bin/bash
##獲取80端口併發鏈接數
netstat -ant |grep ':80 ' |grep -c ESTABLISHED

腳本受權

容許客戶端執行這個腳本vim

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

編輯客戶端zabbix配置文件

vim /etc/zabbix/zabbix_agentd.conf 

搜索 /UnsafeUserParameters

將# UnsafeUserParameters=0
改成UnsafeUserParameters=1  
#表示使用自定義腳本

搜索 /UserParameter
將# UserParameter=
改成UserParameter=my.estab.count[*],/usr/local/sbin/estab.sh 
#表示自定義監控項的key爲my.estab.count,後面的[*]裏面寫腳本的參數,若是沒有參數則能夠省略,若是有參數寫入到 [ ] 裏面,用逗號分隔,腳本爲/usr/local/sbin/estab.sh

my.estab.count 這個是zabbix監控項裏的鍵值,即爲自定義腳本在zabbix監控中的名字bash

重啓 zabbix-agent 服務

systemctl restart zabbix-agent.service

服務端驗證客戶端腳本是否生效

[root@linux-5 ~]# zabbix_get -s 192.168.88.10 -p 10050 -k 'my.estab.count'
0

-s 指定客戶端的IP地址併發

-p 指定端口,不加-p,默認就是10050端口運維

-k 表示 鍵值工具

返回了具體數值,與直接執行腳本所得結果一致,說明客戶端腳本已生效

建立監控項

完成在客戶端的腳本定義後,須要在監控中心建立監控項

在配置-->主機-->lem-02的監控項,點擊建立監控項

填寫相應信息

  • 名稱 :自定義監控項
  • 類型 :選擇zabbix客戶端
  • 鍵值 寫:my.estab.count——>鍵值可自定義,是不固定的
  • 單位 :保持默認
  • 歷史數據保留時長(單位天):默認保持90天
  • 應用集:能夠不選擇,由於沒有定義應用集

建立圖形

在添加監控項後,還須要添加圖形,將監控所得數據製成圖表,配置-->主機-->圖形-->建立圖形

建立觸發器

完成監控項定義後,如需告警,可爲其建立觸發器

該觸發器表明了當自定義監控項數值大於200,產生警告級別的告警

19.13/19.14 配置郵件告警

實驗可使用163或者QQ郵箱發告警郵件,首先登陸163或qq郵箱,設置開啓POP三、IMAP、SMTP服務,開啓並記錄受權碼

設置郵件告警

建立報警腳本mail.py

報警腳本所在位置可經過查看zabbix服務的配置文件獲得

vim /etc/zabbix/zabbix_server.conf 

搜索 /alert
AlertScriptsPath=/usr/lib/zabbix/alertscripts #報警腳本所在路徑
vim /usr/lib/zabbix/alertscripts/mail.py
#!/usr/bin/env python
#-*- coding: UTF-8 -*-
import os,sys
reload(sys)
sys.setdefaultencoding('utf8')
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' #若是是163郵箱則是smtp.163.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('163或QQ郵箱','受權碼','163或QQ郵箱',to,subject,content)

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

腳本文件受權

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

測試發送郵件

python mail.py "收件人郵箱" "標題" "內容"

執行腳本後沒有任何提示就表示發郵件成功

這時打開qq郵箱,會看到郵件

若是發送郵件內容爲中文,且收到爲亂碼,這是由於在zabbix使用的是utf-8的字符集,而在郵箱裏使用的是GBK字符集,因此會亂碼

建立告警用戶

建立一個接受告警郵件的用戶(用於接收郵件),在建立用戶的前提是建立一個用戶組,用戶組可使用已經存在的, 因此這裏直接建立用戶,管理-->用戶-->建立用戶

設置告警郵箱

要將管理員與告警郵箱關聯起來,才能使運維zabbix平臺的運維人員時可以收取告警郵件

管理-->用戶-->選擇相應用戶-->報警媒介

設置用戶權限

注意用戶的權限,若是沒有權限,郵件是無法發的,更改權限要到用戶組裏 (管理-->用戶羣組)進行修改,默認的權限是無,須要修改羣組,給予權限。

設置動做

配置了觸發器,那麼觸發後zabbix服務應該去作什麼,須要爲服務配置動做。配置-->動做-->建立動做

設置動做發生的條件

維護狀態 非在 維護,表示處於維護狀態的機器不進行發郵件的動做

觸發器示警度(也就是信息,警告,通常嚴重...)大於等於未分類(未分類 表示 全部狀態)時,全部狀態均會發送郵件

存在多種條件時,可採用與/或邏輯運算的形式知足觸發條件

設置動做發生的操做

設置動做發生的恢復操做

當發生告警的問題被解決後,能夠選擇設置恢復操做,予以通知

最後動做的狀態是已啓用

19.15 測試告警

自定義測試觸發器

建立觸發器,以實現測試告警的目的

回到監控中心,主頁——>最近20個問題

若是提示爲啓用中,證實發現問題,正在啓用告警,顯示問完成,就證實已經發送郵件告警;如上圖所示,實驗成功。

查看郵箱,會看到收到了告警郵件

測試郵件告警成功

這時想要解決這個問題,只要將觸發器條件數值調整 >1 便可,再來查看監控中心,就會發現問題消失了,而且會給郵箱發送 OK 的郵件

19.16 不發郵件的問題處理

不發郵件的問題處理

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

配置郵件告警流程總結

準備工做

到163郵箱或QQ郵箱開啓SMTP服務,並記錄受權碼,沒有開啓,腳本里面就沒法去寫受權碼

設置郵件告警

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

編輯郵件告警腳本

/usr/lib/zabbix/alertscripts目錄下

#路徑不能錯誤,必須在該路徑下,添加一個腳本

建立好以後,給腳本755權限,不然zabbix用戶是沒法調用這個腳本的

配置用戶

  • 配置用戶以前,把用戶羣組的權限改一下,讓組有一個讀寫權限
  • 用戶加到指定的羣組裏
  • 報警媒介,添加本身的郵箱地址,本身給本身發,這個成功率會比較高

配置動做

  • 操做修改默認信息(發送郵件的格式),操做須要添加一個「新的」給誰發郵件;恢復操做一樣

測試告警可否成功發送郵件

  • 人爲建立一個觸發器,設置一個系統最低運行都會觸發報警的觸發器
  • 也能夠在客戶端上斷開鏈接(中止客戶端的zabbix服務)

更改主動和被動

客戶端主動模式和被動模式,在監控項裏,選擇一個監控項打開,選擇類型是Zabbix客戶端或者Zabbix客戶端(主動式),Zabbix客戶端(主動式)即爲主動模式,Zabbix客戶端爲被動模式

注:觸發器不能用中文命名,否則郵件顯示亂碼

相關文章
相關標籤/搜索