天天看點

Nagios 如何實作自定義多功能告警

Nagios 是一個插件式的監控系統,可以監控服務的運作狀态和網絡資訊等,并能監視所指定的本地或遠端主機參數以及服務,同時提供異常告警通知功能等。Nagios 支援用戶端的資料采集,通過編寫用戶端插件,可以擷取各種監控資料,并提供了 Web 管理界面進行資料查詢。其産品的主要功能側重于監控服務的可用性,根據設定的閥值進行告警,但大部分告警邏輯都是通過監控插件實作的。

目前 Nagios 告警支援的通知方式有短信和郵件,但是很明顯,這兩種通知方式會導緻重要級别的告警無法及時檢視,并解決相關問題,而且在産生告警風暴的時候,這兩種通知方式就更無法滿足使用者的多樣化通知需求,于是如何将告警通過使用者的多樣化需求達到多種化通知方式,并且有效的避免告警風暴,就成了目前的首要解決問題。

智能告警平台 Cloud Alert 是睿象雲自研的一款告警管理平台,就能夠完美解決這個問題!使用者可以将告警通過不同的需求,指定多種化通知方式,目前支援的通知方式有電話、短信、微信、郵件、APP、釘釘等;并且當告警風暴來臨時,使用者可以通過勾選算法智能降噪或設定告警壓縮規則,使得相同類型的告警進行壓縮,有效的避免告警風暴。使用者也可以将不同的監控平台接入到 Cloud Alert 内進行統一化管理。

接下來就說下是如何設定的吧~

主要分為三大部分,首先是将 Nagios 內建到此平台當中,其次設定分派政策,也就是指定條件(使用者自定義)下的告警發生時通知的人,最後是設定通知政策,根據使用者自身需求設定多元化的通知方式。

首先肯定是進入官網 www.aiops.com,登入賬号。

Nagios 如何實作自定義多功能告警

一.Nagios內建

  1. 在 Cloud Alert 中建立 Nagios 應用,點選內建 — 監控工具 — Nagios
    Nagios 如何實作自定義多功能告警
  2. 填寫“應用名稱”,點選“儲存并擷取應用key”
    Nagios 如何實作自定義多功能告警
  3. 下載下傳Agent安裝包

在 Nagios 伺服器中,使用 root 或 nagios 使用者下載下傳

wget

https://download.aiops.com/ca_agent/nagios/ca_agent-4.1.3.1-linux-x64.tar.gz

  1. 安裝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/

  1. 修改配置

①修改

/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

  1. 重新開機Nagios

重新開機前請檢查配置是不是正确

/usr/local/nagios/bin/nagios

-v

/usr/local/nagios/etc/nagios.cfg

請使用root賬号重新開機Nagios

service nagios restart

  1. 內建結果驗證

登入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

}

Nagios 如何實作自定義多功能告警
  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"}

二.設定分派政策

點選配置 — 分派政策 — 建立分派

Nagios 如何實作自定義多功能告警
  1. 輸入分派政策名稱 — 選擇應用 — 設定分派人(告警發生時通知的人),點選儲存
Nagios 如何實作自定義多功能告警

這一步驟的可選擇性就比較多了,使用者可以根據【告警級别】【告警内容】【主機】【服務】【告警對象】【hostgroups】【servicegroups】等條件,來添加指定條件分派通知。

三.設定通知政策

  1. 點選【配置】—【通知政策】-【建立通知】
    Nagios 如何實作自定義多功能告警
  2. 通知政策的可選擇性也是很高的,使用者可選擇的地方有:告警狀态、告警級别、通知方式、時間設定、延遲政策、通知人等,其中的意思分别如下:

告警狀态:選擇告警通知的狀态。分别有發生時、認領時、關閉時、全選,4種選擇。

告警級别:選擇告警通知的級别。分别有提醒、警告、嚴重、所有,4種選擇。

通知方式:選擇告警通知的方式。分别有電話、短信、郵件、微信、APP,5種選擇。

時間設定:選擇告警通知的時間。分别有任何時間、工作時間、非工作時間,3種選擇。

延遲政策:選擇告警通知是否延遲。

通知人:選擇告警通知的人。

例如:任何時間告警發生時嚴重級别的告警立刻微信通知所有人。

告警狀态 — 發生時;告警級别 — 嚴重;通知方式 — 微信;時間設定 — 任何時間;延遲政策 — 立刻;通知人 — 全選

Nagios與CA告警級别映射關系

Nagios 如何實作自定義多功能告警

以上設定就滿足了不同的告警需求,多樣化的通知方式,使得告警達到通知必達的效果。

繼續閱讀