Nagios 是一個插件式的監控系統,可以監控服務的運行狀態和網絡信息等,並能監視所指定的本地或遠程主機參數以及服務,同時提供異常告警通知功能等。Nagios 支持客戶端的數據採集,通過編寫客戶端插件,可以獲取各種監控數據,並提供了 Web 管理界面進行數據查詢。其產品的主要功能側重於監控服務的可用性,根據設置的閥值進行告警,但大部分告警邏輯都是通過監控插件實現的。
目前 Nagios 告警支持的通知方式有短信和郵件,但是很明顯,這兩種通知方式會導致重要級別的告警無法及時查看,並解決相關問題,而且在產生告警風暴的時候,這兩種通知方式就更無法滿足用戶的多樣化通知需求,於是如何將告警通過用戶的多樣化需求達到多種化通知方式,並且有效的避免告警風暴,就成了目前的首要解決問題。
智能告警平臺 Cloud Alert 是睿象雲自研的一款告警管理平臺,就能夠完美解決這個問題!用戶可以將告警通過不同的需求,指定多種化通知方式,目前支持的通知方式有電話、短信、微信、郵件、APP、釘釘等;並且當告警風暴來臨時,用戶可以通過勾選算法智能降噪或設置告警壓縮規則,使得相同類型的告警進行壓縮,有效的避免告警風暴。用戶也可以將不同的監控平臺接入到 Cloud Alert 內進行統一化管理。
接下來就說下是如何設置的吧~
主要分爲三大部分,首先是將 Nagios 集成到此平臺當中,其次設置分派策略,也就是指定條件(用戶自定義)下的告警發生時通知的人,最後是設置通知策略,根據用戶自身需求設置多元化的通知方式。
首先肯定是進入官網 www.aiops.com,登錄賬號。
一.Nagios集成
- 在 Cloud Alert 中創建 Nagios 應用,點擊集成 — 監控工具 — Nagios
- 填寫“應用名稱”,點擊“保存並獲取應用key”
- 下載Agent安裝包
在 Nagios 服務器中,使用 root 或 nagios 用戶下載
wget
https://download.aiops.com/ca_agent/nagios/ca_agent-4.1.3.1-linux-x64.tar.gz
- 安裝Agent
注:下文以Nagios默認安裝路徑/user/local/nagios/爲例,如果你的Nagios服務器不是安裝在該目錄,請自行替換。
tar -xzf ca_agent-4.1.3.1-linux-x64.tar.gz
cp -R ca_agent /usr/local/nagios/libexec/
cp ca_agent/plugin/nagios-plugin/nagios /usr/local/nagios/libexec/
chmod +x /usr/local/nagios/libexec/nagios
cp ca-agent/plugin/nagios-plugin/cloudalert.cfg /usr/local/nagios/etc/objects/
- 修改配置
①修改/usr/local/nagios/etc/objects/cloudalert.cfg
,設置pager
爲剛纔點擊保存所獲取的appkey
vi /usr/local/nagios/etc/objects/cloudalert.cfg
define contact{
contact_name cloudalert ; The name of this contact template
alias ca ;
service_notification_period 24x7 ;
service notifications can be sent anytime
host_notification_period 24x7 ;
host notifications can be sent anytime
service_notification_options w,u,c,r,f,s ;
send notifications for all service states, flapping events, and scheduled downtime events
host_notification_options d,u,r,f,s ;
send notifications for all host states, flapping events, and scheduled downtime events
service_notification_commands notify-service-by-cloudalert ; send service notifications via email
host_notification_commands notify-host-by-cloudalert ; send host notifications via email
pager --
–處填入您新建應用時生成的appkey ;
}
② 修改/usr/local/nagios/etc/objects/contacts.cfg
,新增cloudalert
到默認聯繫組
vi /usr/local/nagios/etc/objects/contacts.cfg
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members nagiosadmin,cloudalert
}
③ 修改/usr/local/nagios/etc/nagios.cfg
,將cloudalert.cfg
新增到nagios.cfg
中
vi /usr/local/nagios/etc/nagios.cfg
cfg_file=/usr/local/nagios/etc/objects/cloudalert.cfg
④ 可選:爲了讓告警信息顯示更加友好,建議修改nagios.cfg
由原來us
更改爲iso8601
vi /usr/local/nagios/etc/nagios.cfg
- 重啓Nagios
重啓前請檢查配置是不是正確
/usr/local/nagios/bin/nagios
-v /usr/local/nagios/etc/nagios.cfg
請使用root賬號重啓Nagios
service nagios restart
- 集成結果驗證
登錄Nagios頁面控制檯發送通知
注:請確認對應服務的notifications_enabled爲1
define service{
use local-service ; Name of service template to use
host_name localhost
service_description Tomcat18080
check_command check_http18080
notifications_enabled 1
}
8. 查看agent日誌,出現success字樣代表成功
tail -f
/usr/local/nagios/libexec/ca_agent/log/agent.log
10-05-2015 15:48:53,056 CST INFO [main]
[com.upyoo.agent.NagiosClient@45] start to call alert ...
10-05-2015 15:48:53,063 CST INFO [main] [com.upyoo.agent.CommandClient@82] ``alarmName:PROBLEM Service Alert: 127.0.0.1/Tomcat18080 is CRITICAL
10-05-2015 15:48:53,064 CST INFO [main] [com.upyoo.agent.CommandClient@82] ``alarmContent:localhost/127.0.0.1/Tomcat18080 ``connect to address 127.0.0.1 and port 18080:
Connection refused Date/Time: 2015-05-10 15:48:52
10-05-2015 15:48:53,064 CST INFO [main] [com.upyoo.agent.CommandClient@82] ``entityName:127.0.0.1/Tomcat18080
10-05-2015 15:48:53,066 CST INFO [main] [com.upyoo.agent.CommandClient@82]
priority:CRITICAL
10-05-2015 15:48:53,066 CST INFO [main] [com.upyoo.agent.CommandClient@82] ``app:9c4bc722-6677-9fc9-fbdc-003d8977d17e
10-05-2015 15:48:53,067 CST INFO [main] [com.upyoo.agent.CommandClient@82]
10-05-2015 15:48:53,068 CST INFO [main] [com.upyoo.agent.CommandClient@82]
10-05-2015 15:48:53,068 CST INFO [main] [com.upyoo.agent.CommandClient@82]
10-05-2015 15:48:53,069 CST INFO [main] [com.upyoo.agent.CommandClient@82]
10-05-2015 15:48:53,105 CST INFO [main]
[com.upyoo.agent.CommandClient@58] start to post url:http://api.aiops.com/alert/api/event
10-05-2015 15:48:53,180 CST INFO [main]
[com.upyoo.agent.CommandClient@65] body:{"app":"9c4bc722-6677-9fc9-fbdc-``003d8977d17e","alarmContent":"localhost/127.0.0.1/Tomcat18080 connect to address 127.0.0.1 and port 18080: Connection refused Date/Time: 2015-05-10 ``15:48:52","eventId":"8G8OGOYUCOOLOENYOGGENOOOOONYNOLU","priority":"3","alarmName":"PROBLEM Service Alert: 127.0.0.1/Tomcat18080 is CRITICAL","eventType":"trigger","entityName":"127.0.0.1/Tomcat18080"}
10-05-2015 15:48:53,775 CST INFO [main] [com.upyoo.agent.CommandClient@68] result:{"result":"success","message":null,"data":"3516","totalCount":0,"code":"200"}
二.設置分派策略
點擊配置 — 分派策略 — 新建分派
2. 輸入分派策略名稱 — 選擇應用 — 設置分派人(告警發生時通知的人),點擊保存
這一步驟的可選擇性就比較多了,用戶可以根據【告警級別】【告警內容】【主機】【服務】【告警對象】【hostgroups】【servicegroups】等條件,來添加指定條件分派通知。
三.設置通知策略
- 點擊【配置】—【通知策略】-【新建通知】
- 通知策略的可選擇性也是很高的,用戶可選擇的地方有:告警狀態、告警級別、通知方式、時間設置、延遲策略、通知人等,其中的意思分別如下:
告警狀態:選擇告警通知的狀態。分別有發生時、認領時、關閉時、全選,4種選擇。
告警級別:選擇告警通知的級別。分別有提醒、警告、嚴重、所有,4種選擇。
通知方式:選擇告警通知的方式。分別有電話、短信、郵件、微信、APP,5種選擇。
時間設置:選擇告警通知的時間。分別有任何時間、工作時間、非工作時間,3種選擇。
延遲策略:選擇告警通知是否延遲。
通知人:選擇告警通知的人。
例如:任何時間告警發生時嚴重級別的告警立刻微信通知所有人。
告警狀態 — 發生時;告警級別 — 嚴重;通知方式 — 微信;時間設置 — 任何時間;延遲策略 — 立刻;通知人 — 全選
Nagios與CA告警級別映射關係
以上設置就滿足了不同的告警需求,多樣化的通知方式,使得告警達到通知必達的效果。