Nagios 是一個插件式的監控系統,可以監控服務的運作狀态和網絡資訊等,并能監視所指定的本地或遠端主機參數以及服務,同時提供異常告警通知功能等。Nagios 支援用戶端的資料采集,通過編寫用戶端插件,可以擷取各種監控資料,并提供了 Web 管理界面進行資料查詢。其産品的主要功能側重于監控服務的可用性,根據設定的閥值進行告警,但大部分告警邏輯都是通過監控插件實作的。
目前 Nagios 告警支援的通知方式有短信和郵件,但是很明顯,這兩種通知方式會導緻重要級别的告警無法及時檢視,并解決相關問題,而且在産生告警風暴的時候,這兩種通知方式就更無法滿足使用者的多樣化通知需求,于是如何将告警通過使用者的多樣化需求達到多種化通知方式,并且有效的避免告警風暴,就成了目前的首要解決問題。
智能告警平台 Cloud Alert 是睿象雲自研的一款告警管理平台,就能夠完美解決這個問題!使用者可以将告警通過不同的需求,指定多種化通知方式,目前支援的通知方式有電話、短信、微信、郵件、APP、釘釘等;并且當告警風暴來臨時,使用者可以通過勾選算法智能降噪或設定告警壓縮規則,使得相同類型的告警進行壓縮,有效的避免告警風暴。使用者也可以将不同的監控平台接入到 Cloud Alert 内進行統一化管理。
接下來就說下是如何設定的吧~
主要分為三大部分,首先是将 Nagios 內建到此平台當中,其次設定分派政策,也就是指定條件(使用者自定義)下的告警發生時通知的人,最後是設定通知政策,根據使用者自身需求設定多元化的通知方式。
首先肯定是進入官網 www.aiops.com,登入賬号。

一.Nagios內建
- 在 Cloud Alert 中建立 Nagios 應用,點選內建 — 監控工具 — Nagios
Nagios 如何實作自定義多功能告警 - 填寫“應用名稱”,點選“儲存并擷取應用key”
Nagios 如何實作自定義多功能告警 - 下載下傳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
}
- 檢視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"}
二.設定分派政策
點選配置 — 分派政策 — 建立分派
- 輸入分派政策名稱 — 選擇應用 — 設定分派人(告警發生時通知的人),點選儲存
這一步驟的可選擇性就比較多了,使用者可以根據【告警級别】【告警内容】【主機】【服務】【告警對象】【hostgroups】【servicegroups】等條件,來添加指定條件分派通知。
三.設定通知政策
- 點選【配置】—【通知政策】-【建立通知】
Nagios 如何實作自定義多功能告警 - 通知政策的可選擇性也是很高的,使用者可選擇的地方有:告警狀态、告警級别、通知方式、時間設定、延遲政策、通知人等,其中的意思分别如下:
告警狀态:選擇告警通知的狀态。分别有發生時、認領時、關閉時、全選,4種選擇。
告警級别:選擇告警通知的級别。分别有提醒、警告、嚴重、所有,4種選擇。
通知方式:選擇告警通知的方式。分别有電話、短信、郵件、微信、APP,5種選擇。
時間設定:選擇告警通知的時間。分别有任何時間、工作時間、非工作時間,3種選擇。
延遲政策:選擇告警通知是否延遲。
通知人:選擇告警通知的人。
例如:任何時間告警發生時嚴重級别的告警立刻微信通知所有人。
告警狀态 — 發生時;告警級别 — 嚴重;通知方式 — 微信;時間設定 — 任何時間;延遲政策 — 立刻;通知人 — 全選
Nagios與CA告警級别映射關系
以上設定就滿足了不同的告警需求,多樣化的通知方式,使得告警達到通知必達的效果。