zabbix筆記之告警配置


告警配置

告警的必要性

為什么要有告警?

在服務器性能出現異常的時候,以做到實時收取告警信息,便於系統維護人員及時避免或解決系統故障

告警原理

ZABBIX告警的原理是什么?

每個zabbix觸發器是由一個唯一的trigger id進行標識,觸發器滿足條件的時候,zabbix生成事件,例如CPU使用率連續5分鍾大於90%是一個條件,根據這個條件可以定義一個觸發器。CPU使用率的數據在zabbix的術語中叫做一個item監控項。Zabbix監控大量的item,例如CPU,磁盤,網絡帶寬,ping狀態,web服務的可用性等等

觸發器有切只有兩種狀態:OK和PROBLEM,OK表示正常狀態,PROBLEM表示出現問題,超出了規定的閾值,當觸發器的狀態變化的時候,一個event發生了。進入了 Problem狀態的觸發器,就是一個zabbix problem

用來對應一個event的動作叫做action,一個action是一個操作及其結果,例如發送告警信息,執行遠程操作等等

告警方式

ZABBIX的告警方式有以下幾種:

  1. 電子郵件

  2. 腳本

  3. 短信

  4. Jabber

  5. EZ簡訊

這里主要是講解郵件告警和微信告警(腳本告警)

郵件告警

zabbix主機上配置

 #檢測是否已經安裝mailx軟件,如果安裝則跳過,未安裝則安裝mailx
[root@zabbix ~]# rpm -qa | grep mailx  && echo "mailx 已經安裝" || yum install mailx  -y
配置mailx服務,我的告警郵箱是騰訊企業郵箱
[root@zabbix ~]#vim /etc/mail.rc
# 設置zabbix告警發件箱,配置smtp域名
set from=郵箱名  smtp=smtp.exmail.qq.com  
# zabbix告警發件箱的用戶名和登陸密碼
set smtp-auth-user=郵箱名  smtp-auth-password=郵箱密碼
# 將zabbix告警發件箱設置成自動登陸
set smtp-auth=login  
[root@zabbix ~]#echo "test" | mail -s "zabbix"  收件箱  //測試郵件能否正常發送郵件,如果可以正常發送郵件就表明你的配置沒有問題,可以繼續下一步

web端配置

配置告警媒介類型

 

 

 

我的告警媒介類型配置如下

名稱:Email
類型:電子郵件
SMTP服務器:smtp.exmail.qq.com
SMTP服務器端口:465
SMTP HELO:exmail.qq.com.cn

配置告警郵件收件人

配置動作

克隆zabbix自帶的動作,然后編輯

 

 

 

 

 

 

 

 

 

故障告警:{TRIGGER.NAME}
告警主機:{HOST.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警項目:{TRIGGER.KEY}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}

 

 

 

配置恢復操作,與配置操作的步驟一樣

 

 

 

告警主機:{HOST.NAME}
主機IP地址:{HOST.IP}
恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警項目:{TRIGGER.KEY}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}

測試郵件告警

修改觸發器的觸發條件,即可完成測試

企業微信告警

企業微信web端配置

注冊企業微信賬號或使用公司的企業微信賬號,並創建應用

https://work.weixin.qq.com/

主要流程如下:

 1.創建微信用戶成員。

 2.創建應用,這是關鍵,企業微信創建的應用ID為1000002

 3.創建應用管理組,添加組成員(也就是設置哪些用戶可以接收到報警的通知信息)。

 4.創建成功后需要獲取到以下信息:CropID 和Secret 當然還包括創建的用戶信息。

  申請企業微信,創建對應的組成員這些就不介紹了,按照注冊向導創建即可,主要寫下創建應用獲取應用Secret 和CorpID

企業微信配置

創建應用並獲取Agentld和Secret

 

獲取Agentld和secert

 

 

獲取CorpID

 獲取部門ID

zabbix服務端配置

#ZABBIX腳本配置
#找到放置告警腳本的目錄
[root@zabbix ~]# find  / -name alertscripts
/usr/lib/zabbix/alertscripts
#進入目錄配置腳本
[root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
[root@zabbix alertscripts]# vim weixin.sh
#!/bin/bash
# @Date: 2019-09-26 21:05:59
# @Author: zhangcheng (3359957053@qq.com)
# @Description: 微信告警腳本
 
#####################################
#填寫企業ID
CropID='wx9ac8f9478320ea89 '
 
#應用的secret,下面的GURL和PURL 地址無需變動
Secret='qUwDxMnL73w0VAR807O0X57KAaI7GJ4YP_RFau5quEI'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
 
function body() {                
        #這里是創建的應用ID 
        local int AppID=1000002                
        #接收消息用戶,系統傳參
        local UserID=$1                              
        #接收消息的部門ID
        local PartyID=2                             
        local Msg=$(echo "$@" | cut -d" " -f3-)
        printf '{\n'
        printf '\t"touser": "'"$UserID"\"",\n"
        printf '\t"toparty": "'"$PartyID"\"",\n"
        printf '\t"msgtype": "text",\n'
        printf '\t"agentid": "'" $AppID "\"",\n"
        printf '\t"text": {\n'
        printf '\t\t"content": "'"$Msg"\""\n"
        printf '\t},\n'
        printf '\t"safe":"0"\n'
        printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL

#腳本權限配置
[root@zabbix alertscripts]# chown zabbix.zabbix weixin.sh 
[root@zabbix alertscripts]# chmod -v +x weixin.sh

web端配置

這里的設置和郵件告警的步驟基本相同了,創建【動作】、【示警媒介】、【接收消息的用戶】

腳本傳參: {ALERT.SENDTO}   {ALERT.SUBJECT}   {ALERT.MESSAGE}

 用戶這里添加需要增加用戶的示警媒介【管理】-【用戶】-選擇對應的用戶-【示警媒介】添加的收件人 則為企業微信中的賬號

 

配置action
告警動作
服務器:{HOST.NAME}出現故障!\n
主機:{HOSTNAME1}\n
IP地址:{HOST.IP}\n
時間:{EVENT.DATE} {EVENT.TIME}\n
等級:{TRIGGER.SEVERITY}\n
信息: {TRIGGER.NAME}\n
項目:{TRIGGER.KEY1}\n
詳情:{ITEM.NAME}:{ITEM.VALUE}\n
狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}\n
事件ID:{EVENT.ID}\n
注意:恢復信息中 時間:{EVENT.DATE} {EVENT.TIME}\n 要修改為 時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}\n 否則不能獲取到正確的恢復時間。

 

 測試告警,和郵件告警一樣


免責聲明!

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



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