假設我們配置了壹些監控項和觸發器,現在當觸發器狀態改變時會獲取壹些發生的事件,是時候考慮下壹步行動了。
我們不可能壹直盯著觸發器或者事件列表,當發生壹些標誌性的事件時發送警告再好不過。當問題發生,關註這些的用戶都會被通知。
zabbix提供主要的功能就是發送告警就是這個原因。哪些人?在什麽時候?應該收到哪些信息是可以被定義的。
為了發送和接收來自zabbix的告警,妳必須:
定義媒介
配置發送信息到定義媒介的動作
動作由 觸發條件 和 操作 組成。基本上當條件符合時,操作被執行。兩個主要的操作是 發送消息 和 執行遠程命令
為了發現和自動註冊創建的事件,壹些額外的操作是可用的,包含添加或者刪除主機,鏈接模板等
壹、媒介(Media types)
概述
Media 是用於發送zabbix的消息與告警的遞送通道
可以定義壹下媒介類型
SMS
Jabber
Ez Texting
Custom alertscripts
1、 E-mail
為消息定義E-mail發送通道,需要配置e-mail 作為媒介類型並且傳遞指定的地址給用戶
配置
依次點擊 管理——>報警媒介類型,點擊創建媒介類型(或者點擊預先定義的媒介類型 E-mail)
媒介類型表包含通常的媒介類型屬性
所有重要的字段都會標記紅星
Name 媒介類型名字
Type 選擇Email作為類型
SMTP server 設置stmp服務器作為處理信息的出口
SMTP server port 設置smtp服務的端口,這個參數從zabbix3.0開始支持
SMTP helo 這是正確的stmp鏈接值,通常為域名
SMTP email 這個地址會被用於信息發送者,用來發送消息,添加發送者的顯示名 如 Zabbix_info則zabbix_info<gaoxiaoxu@126.com>
幾個可以生效的配置:
gaoxiaoxu@126.com 只有郵箱地址,不需要尖括號
zabbix_info<gaoxiaoxu@126.com> 顯示名與郵件地址,地址寫在尖括號中
監控系統<gaoxiaoxu@126.com> 使用UTF-8格式的顯示名
Connection security 選擇鏈接安全級別,None為不使用ssl選項,starttls 使用 CURLOPT_USE_SSL參數,SSL/TLS則CURLOPT_USE_SSL可選
SSL verify peer 標記checkbox同步SMTP服務的SSL證書,
Authentication 認證方法
Username 用戶名
Password 密碼
Enabled 啟用媒介
註意 : 為了使SMTP中的authentication 選項可用,zabbix在編譯時,需要帶--with-libcurl參數 使用cURL7.20.0或更高版本
第二個選項卡options
第二個選項卡options配置了告警的處理流程。同樣的options配置在其他的媒介類型中也存在。
所有媒介都是並行處理的,當前最大會話每個媒介自己定義,但是zabbix服務的告警處理總數被參數(zabbix_sever.conf)StartAlerters所限制。同壹觸發器生成的告警會序列化的處理
options表
concurrent sessions 並發會話數,三個選項,one(壹個),unlimited(不限制),custom(自定義)
Attempts 嘗試發送告警的次數,如果設置為1,則zabbix會發送以此通知,並且失敗時不會重發
Attempts interval? 重發通知的頻率,發送失敗時重發的間隔
配置用戶的媒介
依次點擊 Administration(管理)--->Users(用戶)
點擊用戶的屬性表,在Media(媒介)表中點擊add
type 選擇Email作為類型
send to 指定email地址,可以點擊add添加多個地址,同理此地址也可設置顯示名如Zabbix_admin<gaoxiaoxu@126.com>或者gaoxiaoxu@126.com
when active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏
Use if severity 指定想要接受的告警等級
status 啟用與否
2、SMS
zabbix發送短信,使用串行GSM調試解調器連接到zabbix server的serial port
先決條件:
串行設備(正常情況下在linux的/dev/ttyS0)的速度取決於modem。zabbix不設置串行鏈接的速度。
zabbix user擁有對串行設備的讀寫權限,運行ls -l /dev/ttyS0查看當前權限
GSM調試解調器擁有PIN碼,PIN也可以禁用使用命令 AT+CPIN="NNNN"輸入PIN, 必須有雙引號。
已經測試好的modem Siemens MC35 Teltonika ModemCOM/G10
配置SMS作為發送通道,需要配置SMS作為媒介類型並且在用戶界面配置接收手機號
配置
依次點擊 Administration--->Media types,點擊創建media type或使用預先的配置
sms的Media type表屬性
Description media type名
Type 選擇SMS
GSM modem 選擇設備如 /dev/ttyS0
options選項卡見E-mail
配置用戶媒介
依次點擊 Administration(管理)--->Users(用戶)
點擊用戶的屬性表,在Media(媒介)表中點擊add
types 選擇SMS作為媒介
Send to 輸入用戶手機號
When active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏
Use if severity 指定想要接受的告警等級
status 啟用與否
3、Jabber (略)
4、Ez Texing(略)
5、Custom alertscripts
如果不滿足於存在的媒介來發送警告,可以自定義腳本進行發送
警告腳本在zabbix server上執行,這些腳本位於server配置文件AlertScriptsPath變量(默認/usr/local/share/zabbix/alertscripts)
腳本示例:
#!/bin/bash
to=$1
subject=$2
body=$3
cat <<EOF |mail -s "$subject" "$to"
$bodyEOF
從3.4開始zabbix會檢查exit code(shell執行返回碼,0為成功),若exit code 不等於0,則認為執行失敗,zabbix會重復執行
script不保存環境變量,所以環境變量要精確指定
配置
依次點擊 Administration--->Media types,點擊創建media type
mediatype表屬性
Name 輸入媒介的名字
Type 選擇Script作為類型
Script name 輸入腳本的名字(zabbix server中的腳本文件)
Script parameters 添加命令行參數到腳本
可支持ALERT.SENDTO}、{ALERT.SUBJECT}、{ALERT.MESSAGE}等宏,
{ALERT.SENDTO} 用戶媒介中的send to(收件人)的值
{ALERT.SUBJECT} 動作配置中的Default subject(默認標題)
{ALERT.MESSAGE} 動作配置中的Default message(消息內容)
options表中定義了處理流程,見E-mail的說明
配置用戶媒介User media
依次點擊 Administration(管理)--->Users(用戶)
點擊用戶的屬性表,在Media(媒介)表中點擊add
用戶媒介屬性
Type 選擇自定義腳本的媒介類型
Send to 指定告警接收人
When active 設置發送時間如工作日(1-5,09:00-18:00)可以使用宏
Use if serverity 指定想要接受的告警等級
status 啟用與否
二、動作
如果妳希望發生事件時會觸發壹些操作,那麽妳需要配置action
動作可以定義回應所有支持的事件類型,
事件類型:
Trigger events觸發器事件,當觸發器狀態從ok改變到problem或相反。
Discovery events 當自動發現產生
Auto registration events當新的agent自動註冊時,或者經註冊過的主機元數據改變
Internal events當監控項變為不支持或觸發器狀態變為unknown時
配置壹個動作
依次 Configuration ——>Actions
從event source中選擇需要的源(分為:觸發器源,自動發現源,自動註冊源,事件源)
點擊創建動作
選擇操作執行的條件
選擇具體操作
選擇恢復操作
動作表的屬性
Name 唯壹動作名
Type of calcaulation 選擇條件觸發的計算方法
And 必須符合所有條件
Or 只要壹個條件符合即可
And/Or 結合二者,不同類型的條件用And,同壹類型的條件用Or
Custom expression 用戶自定義
Conditions 觸發動作的壹系列條件、
New condition 選擇新的動作觸發條件
Enabled 啟用動作
條件設置
基於觸發器的條件
Application 應用集
Host group 主機組
Template 模板
Host 主機
Tag 標簽(串)
tag value 標簽值
Trigger 觸發器
Trigger name 觸發器名字
Trigger severity 觸發器等級
Time period 觸發時間
Problem is suppressed 觸發問題是否意料之中,如主機維護
基於自動發現的條件
Host IP 指定主機ip地址自動發現範圍 格式: 單獨的ip:192.168.1.33 範圍ip: 192.168.1-101.1-254? Ip mask: 192.168.4。0/24
Service type 服務類型
service port 服務端口
Discovery rule 指定自動發現規則
Discovery check
Discovery object
Discovery status
Uptime/Downtime
Received value
Proxy
基於自動註冊的條件
Host metadata 由zabbix_agentd.conf 文件中的HostMetadata變量定義
Host name
Proxy
基於內部事件的條件
Application
Event type
Host group
Template
Host
條件匹配後,就需要執行響應的動作了
可以支持以下動作
send a message
execute a remote command
add host
remove host
enable host
disable host
add to host group
remove from host group
link to template
unlink from template
set host inventory mode
執行遠程命令
確保配置文件中(zabbix_agentd.conf)EnableRemoteCommands 參數設置為1
加入zabbix用戶到sudo,vim /etc/sudoer
zabbix ALL=NOPASS: ALL #所有命令不需密碼
zabbix ALL=NOPASS: /etc/init.d/apache restart? #指定某壹命令不需要密碼
觸發操作後,使用宏 編輯信息
如 告警信息模板
標題 服務器:{HOST.NAME} - 發生: {TRIGGER.NAME}故障
信息 告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
恢復信息
標題 服務器:{HOST.NAME} - {TRIGGER.NAME} 已恢復
信息 告警主機:{HOST.NAME}
告警地址:{HOST.IP}
監控項目:{ITEM.NAME}
監控取值:{ITEM.LASTVALUE}
告警等級:{TRIGGER.SEVERITY}
當前狀態:{TRIGGER.STATUS}
告警信息:{TRIGGER.NAME}
告警時間:{EVENT.DATE} {EVENT.TIME}
恢復時間:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持續時間:{EVENT.AGE}
事件ID:{EVENT.ID}