分布式監控告警平台Centreon快速使用


一、 Centreon概述

Centreon是一款功能強大的分布式IT監控系統,它通過第三方組件可以實現對網絡、操作系統和應用程序的監控:首先,它是開源的,我們可以免費使用它;其次,它的底層采用nagios作為監控軟件,同時nagios通過ndoutil模塊將監控到的數據定時寫入數據庫中,而Centreon實時從數據庫讀取該數據並通過Web界面展現監控數據;,最后,我們可以通過Centreon管理和配置nagios,或者說Centreon就是nagios的一個管理配置工具,通過Centreon提供的Web配置界面,可以輕松完成nagios的各種繁瑣配置。

此外,Centreon還支持NRPE、SNMP、NSClient等插件,可以通過這些插件構建分布式的監控報警系統。

二、 Centreon的結構

一個典型的Centreon監控系統一般有六大部分組成,分別是Centreon Web、centengine、Centreon Broker SQ、Centreon Broker RRD、centcore和cbmod,下面重點看看每個組成部分是如何協調工作的,如下圖所示。

對上圖的結構介紹如下:

Centreon Web界面是基於Apache Web服務器,用來配置和展示。
centengine是Centreon的底層監控引擎,主要完成監控報警系統所需的各項功能,是Centreon監控系統的核心。另外,Centreon還支持Nagios、Icinga等監控引擎。這里介紹官方的centengine監控引擎。
Centreon Broker SQL將信息存儲到MariaDB數據庫,並將其轉發給Centreon Broker RRD。
Centreon Broker RRD使用數據生成和更新RRD文件,以顯示狀態、性能圖。
centcore主要用於centreon的分布式監控系統中,在系統中centcore是一個基於perl的守護進程,主要負責中心服務器(central server)和擴展節點(pollers)間的通信和數據同步等操作,例如centcore可以在中心服務器上執行對遠程擴展節點上centengine服務的啟動、關閉和重啟操作,還可以運行、更新擴展節點上的配置文件。
cbmod是將centengine與數據庫進行連接的工具,它可以將centengine的實時狀態寫入數據庫,以供其他程序去調用,最終可以實現在一個控制台上完成所有擴展節點的數據入庫操作。

三、安裝Centreon監控系統

Centreon的安裝有一定的復雜性,在安裝上有ISO鏡像安裝、VM虛擬機安裝、源碼編譯安裝和yum源安裝四種方式,源碼編譯安裝較復雜,出錯幾率也較高,因此這里推薦采用ISO鏡像安裝方式進行安裝。

https://download.centreon.com/ 下載需要的版本即可,這里下載iso鏡像,使用最新的centreon-18.10-5.el7.x86_64版本。將下載下來的鏡像克隆成光盤,或者直接在虛擬機下以iso模式進行引導,即可開始安裝系統,其實這個iso鏡像就是一個centos操作系統鏡像,只不過系統中集成了centreon的安裝環境和安裝包,只要將操作系統安裝完成,那么centreon也就安裝好了,可以直接使用,這是最簡單的一種安裝方式。

下面簡單說下centreon的iso鏡像安裝過程。

將iso刻錄為光盤或者U盤,然后引導,進行安裝,首先進入第一步,如下圖所示:

接着,選擇一種語言,如下圖所示:

語言選擇默認英文即可,然后點擊“Continue”進入下一步,如下圖所示:

在這個主界面下,可以對安裝系統進行各種設置,這里對安裝類型要進行選擇,點擊“Installation type”,進入如下界面:

這里有四個選項供選擇,分別是:

Central with database:表示安裝Centreon(Web界面和數據庫),監控引擎和代理。也就是完全安裝。
Central without database:安裝Centreon(僅限Web界面),監控引擎和代理。
poller:僅安裝輪詢器(僅限監視引擎和代理)。
database only:僅僅安裝數據庫服務器。

這里選擇第一個即可,然后點擊左上角的“Done”即可返回主界面,接着開始對磁盤進行分區設置,如下圖所示:

點擊“INSTALLATION DESTINATION”進行磁盤分區設置,如下圖所示:

這里選擇“ I will configure partitioning”,也就是自定義分區,然后點擊左上角的“Done”進入下一步,如下圖所示:

在這個自定義分區界面中,建議按照上圖的設置進行分區。分區完成點擊左上角的“Done”進入下一步,

根據提示,選擇“Accept Changes”返回主界面,接着,在主界面選擇“NETWORK &HOST NAME”進行主機名和網絡配置,網絡配置選擇手動配置靜態IP,如下圖所示:

網絡配置完成,保存退出,返回網絡和主機名配置界面,如下圖所示:

網絡配置完成后,點擊左上角的“Done”返回主界面,最后選擇主界面下的“DATE & TIME”進入時間和時區配置,如下圖所示:

時區選擇亞洲/上海即可,然后點擊左上角的“Done”返回主界面,至此,系統安裝配置全部完成,如下圖所示:

點擊“Begin Installation”開始安裝系統。

系統安裝完成后,系統里面集成的centreon服務會自動啟動,接着就可以初始化centreon配置了,打開瀏覽器訪問centreon服務地址:

通過URL登錄Centreon Web界面:http:// [SERVER_IP] /centreon。將顯示Centreon設置向導。如下圖所示:

這是centreon歡迎界面,單擊“ next”,如下圖所示:

繼續單擊“ next”,如下圖所示:

這些默認的配置都無需修改,直接單擊“ next”,如下圖所示:

繼續單擊“ next”,如下圖所示:

這里是設置centreon管理員用戶admin的密碼和用戶信息,手動輸入后,單擊“next”,如下圖所示:

這里只需要輸入數據庫用戶centreon的密碼即可,centreon用戶會自動創建。手動輸入后,單擊“next”,如下圖所示:

單擊“ next”,如下圖所示:

單擊“install”,安裝模塊和插件,如下圖所示:

單擊“ next”,如下圖所示:

安裝完成。單擊Finish。

四、配置Centreon監控系統

配置Centreon並不復雜,所有操作都能在web管理界面完成,如果對nagios的配置過程比較了解,那么配置Centreon就變得非常簡單。下面先來熟悉一下Nagios中配置文件之間的關系。

在Nagios的配置過程中涉及幾個定義:主機、主機組、主機模板,服務、服務組、服務模板,聯系人、聯系人組、監控時間和監控命令等,從這些定義可以看出,Nagios的各個配置文件之間是互為關聯,彼此引用的。成功配置一台Nagios監控系統,必須要弄清楚每個配置文件之間依賴與被依賴的關系,其中,最重要的有四點:第一要定義監控哪些主機、主機組、服務和服務組;第二要定義這個監控要通過什么命令實現;第三要定義監控的時間段;最后要定義主機或服務出現問題時要通知的聯系人和聯系人組。

Centreon的配置邏輯和過程與Nagios完全相同,因此,清楚了Nagios的配置重點和各個配置文件之間的依賴關系,Centreon的配置將變得比Nagios更加簡單。

4.1 添加主機和主機組

在Centreon早期版本中,安裝完成后,會有一些初始的主機或服務的監控項,但是在centreon最新版本中,去掉了默認的主機,服務和模板,而是通過插件的形式提供模板、通知等基礎功能,但這並不影響我們的學習和使用。

1、創建一個check_host_alive命令

監控命令(Commands)是Centreon分布式監控系統運行的基礎,無論是主機還是服務,都是通過監控命令完成狀態檢查和報警的。經常使用的監控命令分為兩種,分別是檢測(Check)命令和通知告警(Notification)命令。

在Centreon系統中,選擇Configuration—>Commands—>Checks,即可看創建監控檢測命令,選擇Configuration—>Commands—>Notifications,即可看到自帶的通知告警命令,例如常用的host-notify-by-email、service-notify-by-email等。

選擇Configuration—>Commands—>Checks,點擊add創建一個命令,如下圖所示:

其中,“Command Name”為check_host_alive;“Command Type”為“Check”;“Command Line”是命令的具體執行方式,命令中“$USER1$”是一個變量,其實就是nagios插件或centreon插件的存放路徑,“$HOSTADDRESS$”是個主機宏,用於取主機定義里的IP地址或者主機名,這些內容的含義與在Nagios下表示的含義完全相同,這里不再過多介紹。

2、配置主機模板generic-host

登錄centreon web,在左側導航中,選擇Configuration > Hosts >
Templates,然后點擊“add”按鈕,先創建一個模板文件,如下圖所示:

主機模板,顧名思義,是對主機默認屬性或通用屬性的設置。只有主機引用了這個模板,那么此模板的設置值就繼承到主機里面了。一些基礎的主機監控,比如主機檢查屬性、報警通知屬性、自定義宏屬性等都可以在主機模板中進行設置,當然也可以在定義主機監控的時候設置這些屬性。

主機模板的一個最大特點是繼承性,如果一個主機引用了這個模板,那么此主機模板下的所有監控屬性都被自動繼承過來了,例如要對1000台主機做ping連通性檢查,首先可以創建一個check_ping命令,然后將這個命令引用到generic-host模板中,最后在創建主機的時候,所有1000台主機都引用generic-host這個主機模板即可,引用主機模板的好處是,如果監控屬性發生了變化,只需修改generic-host配置即可,而無需一個主機一個主機的修改,方便快捷。

有時候可能會發現一個監控屬性既在generic-host模板中設置了,也在主機定義中設置了,此時就有一個優先級的問題,在這種情況下,監控屬性的生效值以主機中的設置為准。例如,已經在generic-host中設置了Check
Period為“24x7”,而在某主機的定義中也引用了generic-host模板,同時將Check Period設置改為“workhours”,那么此主機監控周期最終生效的設置是“workhours”。

在上圖可以看到一些主機檢查屬性值,例如,“Max Check Attempts” 表示最大檢查嘗試次數,“Normal Check Interval”表示正常檢查間隔,單位是分鍾,“Retry Check Interval”表示重試檢查間隔,單位是分鍾。這些主機檢查屬性值都需要根據實際情況進行修改或添加。

點擊上圖中的“Notification”標簽,用來設置告警通知屬性模板,如下圖所示:

告警通知屬性主要是對是否啟用告警、告警聯系人、告警周期、告警類型等進行設置,上圖已經很清楚的描述了每個選項的含義,這里不再多說。

3、添加主機監控

選擇Configuration—>Hosts—>Hosts,點擊Add添加一個主機,如下圖所示。首先添加一個172.16.213.188主機,此主機無需設置更多的屬性,只需要引用模板即可,模板就選擇之前我們創建的“generic-host”,這樣,此主機的所有屬性就配置完成了,因為更多的主機屬性都通過指定的主機模板繼承進去了。

當然,我們也可以在主機屬性中重新指定配置項,例如可以在“Check
Command”項中添加一個新的用於檢測主機狀態的命令,這個命令定義以后,主機模板中定義的主機檢測命令就被覆蓋了。

要添加更多的主機,方法與上面完全相同。下面依次添加多台主機,如下圖所示:

在這個界面上,有很多操作屬性,可以用於對主機進行復制、刪除、修改、啟用和禁用等,由此可見,通過Centreon管理主機非常方便和簡單。

4、添加主機組監控

選擇Configuration—>Hosts—>Host Groups,點擊Add添加一個主機組,如下圖所示,依次輸入“Host Group Name”和“Alias”的值,然后在“Linked Hosts”中選擇此主機組需要加入的主機即可,添加完畢,點擊“Save”即可完成主機組的添加。

當一批主機有某些相同的服務需要監控的時候,將這些主機添加到一個主機組中,然后創建一個需要監控的服務,將這個主機組加到此服務中,這樣就完成了對批量主機的某些相同服務的監控,省去了一個主機添加一個服務的麻煩,非常方便。

從上圖可以看到,添加了一個名為hostgroup1的主機組,然后將8台主機添加到了這個組中。一個主機可以屬於多個主機組。

4.2 批量添加主機

添加一台主機非常簡單,但是如果有成千上萬台主機需要添加呢,一個個添加顯然是不行的,此時就需要通過批量添加主機的方法實現。這其實是借助於Centreon的模板功能完成的,其基本原理是:先把批量主機的共同屬性添加到主機模板中,然后在批量添加主機時,引用這個主機模板即可。這樣在添加每個主機時不同的屬性只有IP地址和主機名,只要把這兩個值寫入數據庫即可完成主機的添加。

下面是一個寫好的批量添加主機的perl腳本:

#!/usr/bin/perl use strict; use warnings; use DBI; use DBD::mysql; # ---------------------------------------------------- my $DB_HOST = "127.0.0.1"; #監控服務器的IP地址,建議修改為127.0.0.1 my $DB_USER = "centreon"; # Centreon web安裝時設置的數據庫訪問用戶,默認為centreon my $DB_PASSWD = "centreon"; # Centreon web安裝時設置的數據庫密碼,這里為centreon my $DB_NAME = "centreon"; # Centreon web 對應的數據庫名,默認是centreon my $dbh = DBI->connect("DBI:mysql:database=$DB_NAME;host=$DB_HOST", "$DB_USER", "$DB_PASSWD", { RaiseError => 1 }); # ---------------------------------------------------- my $file_path = "/var/tmp/hosts"; #hosts模板文件,需要自己創建 my $tpl_name = "generic-host"; #主機模板,填寫批量添加的主機需要繼承的模板 my $nagios_name = "Central"; #poller,默認為Central foreach my $arg (@ARGV) { # == file of hostname and ipaddress == if ($arg eq '-f') { $file_path = shift; } # == name of template == elsif ($arg eq '-t') { $tpl_name = shift; } # == name of nagios name == elsif ($arg eq '-n') { $nagios_name = shift; } else { &print_help(); exit 1; } } # ----------------------------------------------------- open (HOST, "$file_path") || die "Cannot open $file_path for read"; my $sql; my $sth; my $line; my ($host, $ipaddr); my ($host_id, $tpl_id, $nagios_id) = (0, 0, 0); while (defined($line = <HOST>)) { # == skip blank lines ================= next if ($line =~ /^\s*$/); # == skip if # ======================== next if ($line =~ /^\s*#/); # == get host and ipaddress =========== ($ipaddr, $host) = split(/\s+/, $line); next if ($ipaddr eq '' || $host eq ''); # == insert the host to table host ==== $sql = "insert host set host_template_model_htm_id='2',host_name='$host',host_alias='$host',host_address='$ipaddr',host_active_checks_enabled='2',host_passive_checks_enabled='2',host_checks_enabled='1',host_event_handler_enabled='2',host_flap_detection_enabled='2',host_process_perf_data='2',host_retain_status_information='2',host_retain_nonstatus_information='2',host_notifications_enabled='2',host_register='1',host_activate='1'"; $sth = $dbh->do($sql); sleep(1); # == get host_id ====================== $sql = "select host_id from host where host_name='$host'"; $sth = $dbh->prepare($sql); $sth->execute(); while (my $ref = $sth->fetchrow_hashref()) { $host_id = $ref->{'host_id'}; print "host_id is $host_id\n"; } next if ($host_id == 0); # == insert extended_host_information == $sql = "insert extended_host_information set host_host_id='$host_id'"; $sth = $dbh->do($sql); # == insert host_template_relation ===== $sql = "select host_id from host where host_name='$tpl_name'"; $sth = $dbh->prepare($sql); $sth->execute(); while (my $ref = $sth->fetchrow_hashref()) { $tpl_id = $ref->{'host_id'}; print "template id is $tpl_id\n"; } next if ($tpl_id == 0); $sql = "insert host_template_relation set host_host_id='$host_id',host_tpl_id='$tpl_id',`order`='1'"; $sth = $dbh->prepare($sql); $sth->execute(); # == insert ns_host_relation =========== $sql = "select id from nagios_server where name='$nagios_name'"; $sth = $dbh->prepare($sql); $sth->execute(); while (my $ref = $sth->fetchrow_hashref()) { $nagios_id = $ref->{'id'}; print "Poller id is $nagios_id\n"; } next if ($nagios_id == 0); $sql = "insert ns_host_relation set host_host_id='$host_id',nagios_server_id='$nagios_id'"; $sth = $dbh->prepare($sql); $sth->execute(); # == insert complete == print "insert $host to centreon successful\n"; } close(HOST); $dbh->disconnect(); exit 0; # -------------------------------------------------------------------------------- sub print_help { print "Usage ./batch_add_host.pl [-f path of host file] [-n nagios name] [-t template name]\n"; print "\n"; }

你可從這里直接下載此腳本:https://www.ixdba.net/centreon/batch_add_host.zip

要使用這個perl腳本,需要具備如下條件:

1) 一個已經配置好的主機模板文件,在上面腳本中為generic-host。
2) 一個IP和主機名對應的hosts文件,並且需要放到/var/tmp目錄下。

hosts文件的內容格式為“IP地址 主機名”,每行一個,將多個主機依次添加到這個hosts文件中即可。將上面腳本命名為batch_add_host.pl,放到監控服務器任意路徑下,授予其可執行權限,然后執行這個腳本即可完成主機的批量添加。

對於批量添加的主機,“Host Name”選項對應hosts文件中的主機名,“IP Address /DNS”選項對應hosts文件的IP地址。

4.3、 監控引擎管理

在完成主機和主機組添加后,這些主機信息並不會馬上生效,還需要將這些信息生成centreon配置文件進行保存,然后重新啟動監控引擎,這就是Centreon的監控引擎管理功能。在任何配置添加或修改完成后,都需要重啟監控引擎才能使這些配置生效。

選擇Configuration—> Pollers—> Pollers,如下圖所示:

在此圖中選擇“Export configuration”,如下圖所示:

上圖主要用於將創建好的配置導出,默認選擇“Generate Configuration Files”和“Run monitoring engine debug (-v)”兩個動作,當然也建議選擇后面三項。在“ Restart Monitoring Engine”一項中,可選的動作有二個,分別是Restart、Reload,其中Restart用於重新啟動監控引擎服務,例如新增加了一台主機,就可以使用Restart這個動作;而Reload是重新加載配置,例如修改了某個主機的配置參數,就可以使用Reload重新加載即可;

在通常情況下,Restart動作執行的時間較長,特別是當Centreon監控的主機或服務較多的時候,執行Restart操作會啟動得比較慢,而Reload操作僅僅是將新的配置加載生效,執行速度相對較快,因此,如何選擇這兩個動作參數,要結合實際情況而定。

4.4、添加服務和服務組

在完成主機和主機組添加后,下面開始添加需要監控的服務和服務組。

1、添加服務模板generic-service

這里的服務模板與之前介紹的主機模板類似,它們具有相同的作用,選擇Configuration—>Services—>Templates,點擊“ADD”即可添加一個服務模板,如下圖所示:

此界面中,對每個選項的含義都做了詳細的描述,這里不再多說。

generic-service服務模板中設置的屬性值都是通用的或公用的,主要用於在創建服務的時候進行引用。

2、創建監控命令

選擇Configuration—>Commands—>Checks,點擊add創建一個命令,如下圖所示:

這里是創建了一個“check_port”命令,此命令用來檢測遠程主機的端口狀態,可以看到此命令最終應用的監控命令是check_tcp,這個check_tcp是通過安裝nagios插件獲取的。

3、添加監控服務

添加監控服務的方法與添加主機基本一樣,選擇Configuration—>Services—>Services by host,點擊Add添加一個服務。這里添加了一個“zabbix_agent_10050”的服務,在“Service Template”中引用了服務模板generic-service,如下圖所示。

在添加監控服務過程中,只要引用了之前創建好的服務模板“generic-service”,那么大部分的屬性基本都不用配置了,因為已經在服務模板配置過了。

這里重點關注“check_port”中的args中的配置,可以看到,這個args有三個配置項,分別是端口、警告閾值和故障閾值。根據需要進行配置即可。這樣一個監控服務就添加完成了,如下圖所示:

在上圖的服務監控列表中,可以對每個服務進行復制、刪除、啟用、禁用等操作,這些功能對以后的監控系統運維是非常重要的。

4、添加主機組服務

選擇Configuration—>Services—>Services by host group,點擊Add按鈕添加一個服務組,如下圖所示,與之前添加服務方式一樣,這里添加了一個名為“host_ping”的服務組,並且應用了generic-service模板。

添加主機組的監控服務與添加針對主機的服務,步驟完全一樣,不同的是要選擇對應的主機組,而不是主機。看上圖“Linked with Host Groups”選項的內容可知。

在“Check Command”選項中,我們選擇了自定義的命令check_ping,這個命令通過icmp監控網絡連接狀態,在“Args”選項中,指定了發送的包的個數,以及警告和故障的閥值。

4.5、監控報警配置

監控報警配置是Centreon中一個非常重要的組成部分,在前面兩節中,主要介紹了主機和服務的添加,並且在主機和服務中都引用了各自的模板。而我們在模板中已經開啟了報警通知功能,那么,下面就重點講述下主機和服務的報警通知功能。

1、開啟主機報警通知

開啟主機報警通知功能有兩種方法,第一種方法是在定義主機時進行開啟,選擇Configuration—>Hosts—>Hosts,編輯已經創建好的主機172.16.213.220,這里重點看“Notification”選項,如下圖所示:

在默認情況下,“Notification Enabled”選項處於“Default”狀態,這個狀態表示一個繼承關系,也就是說如果此主機引用了generic-host模板,而在generic-host模板中開啟了報警通知功能,那么這個主機也就自動繼承報警通知功能。同理,如果在generic-host模板中沒有開啟報警通知功能,默認此主機也不會開啟報警功能,因此,在主機模板沒有開啟報警通知功能的時候,就需要在主機定義中指定開啟,這里選擇“Yes”選項,就開啟了主機的報警通知功能。

然后繼續選擇報警需要通知的聯系人和聯系人組,這里選擇“monitoring_server”作為通知聯系人,monitoring_server 就是admin用戶的全名,“選擇Supervisor”作為聯系人組。這里可以根據監控需要任意添加。

接着還可以選擇通知間隔、通知周期、通知類型、是否延時發送通知等選項。對於比較重要的主機可以選擇短一點的通知時間間隔,可以選擇通知周期為7×24,另外還可以選擇工作日(workhours)、非工作日(nonworkhours)兩個選項,可以選擇通知類型為宕機(Down)、不可到達(Unreachable)、恢復(Recovery)等。最后一個選項是設定第一次發送通知的延時時間,如果設置為0,則表示主機故障后立刻發送通知。

開啟主機報警的第二種方式是配置主機模板generic-host。在前面介紹的主機添加過程中,都引用了主機模板generic-host,而在主機模板配置中也可以開啟報警通知功能,開啟方法很簡單:編輯主機模板,找到“Notification”選項,設置方法與上圖完全一樣,當開啟了通知功能后,對應的這個主機就繼承了模板的設置,自動開啟了主機通知功能。

根據運維經驗,建議通過修改主機模板的方式開啟主機通知功能,因為當監控的主機有上千台之多時,一個一個修改主機配置變得不現實,此時只需通過修改主機模板generic-host的配置,即可開啟所有主機的報警通知功能,簡單又方便。當然這樣做的前提是所有主機都引用了generic-host模板。

2、 開啟服務報警通知

開啟服務報警通知的方法也有兩種:一種是在服務模板generic-service中配置,一種是在定義服務的時候指定,其實與開啟主機報警通知的方法完全一樣。選擇Configuration—>Services—>Services by host,編輯對應的服務,開啟“Notification”選項的報警功能,並配置各個報警參數即可。

要在服務模板generic-service中修改報警通知配置也是可以的,選擇Configuration—>Services—>Templates,然后編輯generic-service模板,開啟報警功能即可。這里也建議將所有添加的服務中都引用generic-service模板,這樣做便於日后的修改和運維。

3、 報警方式和聯系人配置

在開啟了主機和服務的報警通知功能后,還需要設置報警方式和報警聯系人。Centreon支持多種報警方式,可以選擇郵件報警、短信報警、MSN報警、QQ報警等方式,而郵件報警是默認方式,可以無需添加插件直接使用。

選擇Configuration—>Users—>Contacts/Users,然后編輯admin用戶,如下圖所示:

這是用戶設置的第一部分,“Full Name”其實就是admin登錄用戶的全名,“Email”就是報警郵箱的地址,在其中填寫真實有效的郵箱地址即可,“Pager”中填寫的是用於接收報警短信的手機號碼,如果配置了短信報警方式將會用到。接着配置“Group Relations”選項,此選項主要是配置聯系人組,admin用戶默認屬於“Supervisors”聯系人組。

接着看用戶設置的第二部分——如何配置報警通知命令,在用戶配置選項下也可以設置用戶的相關報警通知屬性,並且這里的配置優先級最高,可以根據用戶的等級,配置主機或服務報警的接收類型、接收時段等,這里重點關注一下主機通知和服務通知命令。如果是郵件報警,在主機通知命令中,可以選擇host-notify-by-email,而在服務通知命令中可以選擇service-notify-by-email。關於這兩個命令,可能要根據實際情況進行修改,修改方法很簡單:選擇Configuration—>Commands—>Notifications,編輯對應的命令即可。

在默認情況下,這兩個命令都是通過Linux系統自帶的“mail”命令發郵件的,這個命令不太好用,功能也不強大,因此推薦另一個利用命令行發郵件的工具“sendEmail”,這個命令行發郵件的工具功能非常強大,使用也非常簡單,強烈推薦。

下面簡單介紹sendEmail。

sendEmail的主頁是http://caspian.dotconf.net/menu/Software/SendEmail/, 它的安裝非常簡單,下載下來即可使用。可以將解壓出來的sendEmail可執行文件復制到/usr/local/bin下,直接運行sendEmail就會顯示詳細的用法,這里介紹幾個重要的使用參數。

-f,表示發送者的郵箱。
-t,表示接收者的郵箱。
-s,表示SMTP服務器的域名或者IP地址。
-u,表示郵件的主題。
-xu,表示SMTP驗證的用戶名。
-xp,表示SMTP驗證的密碼。
-m,表示郵件的內容。

下面介紹幾個簡單的使用例子。

cat 文件名 | /usr/local/bin/sendEmail -f centreon@test.com -t admin@ixdba.net -s mail.test.com -u “Centreon host-notify test” -xu centreon -xp xxxzzz

這個例子省去了“-m”參數,而是通過管道將郵件內容傳給了sendEmail。

下面是一個定義好的host-notify-by-email命令的內容:

/usr/bin/printf "%b" "*****Centreon Monitor Notification For HOST*****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $HOSTSTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$HOSTOUTPUT$" | /usr/local/bin/sendEmail -f www@163.com -t $CONTACTEMAIL$ -s smtp.163.com -u "** HOST $NOTIFICATIONTYPE$ alert - $HOSTNAME$ is $HOSTSTATE$ **" -xu www@163.com -xp 'zzzzzz' -o tls=no

在Configuration—>Commands—>Notifications中,編輯“host-notify-by-email”內容如下:

到這里為止,關於Centreon郵件報警方式的配置基本介紹完成了,下面再介紹一下其他報警方式的優缺點及使用經驗。

Centreon支持多種報警方式,上面介紹了默認的郵件報警,還有通過第三方插件配置短信報警、微信告警等。

郵件報警是最基礎的報警形式,它可以有多種擴展形式,目前很多郵箱都支持短信提醒功能,將郵箱綁定短信提醒后,就變相實現了短信報警的功能。另外,現在的手機基本都是智能機時代了,在手機上安裝一個郵件客戶端工具,然后綁定報警郵件地址,就可以隨時隨地收取報警郵件了,這種方式簡單、實用,唯一的成本就是要支付一部分手機的無線流量。

上面代碼可從這里下載:https://www.ixdba.net/centreon/sendEmail.zip

4、 查看監控報警狀態

Centreon通過Web UI界面展示了所有主機和服務的運行狀態,對於不同的運行狀態,Centreon分別用不同的顏色顯示,基本的狀態與顏色的定義如下:

正常運行狀態(OK),一般情況下用綠色表示。
警告狀態(Warning),通常用黃色表示。
故障、宕機狀態(Critical、Down),通常用紅色表示。
未知狀態(Unknown),通常用灰色表示。
掛起、不可到達狀態(Pending、Unreachable),通常用淺藍色表示。

選擇Monitoring > Status Details > Hosts即可查看所有主機、主機組、故障主機等的相關信息,如下圖所示:

從上圖可以看到所有主機的主機名稱、主機運行狀態、主機IP地址、最后一次檢查的時間、某種主機狀態持續的時間等,最后一列是主機狀態的檢查結果。在“Hosts”一列后面是對ping操作監控狀態的一個數據匯總,點擊這個圖標即可查看主機在某段時間內的ping狀態曲線圖。

Centreon查看主機或服務狀態的功能非常強大,支持根據主機名過濾查詢,還支持根據狀態查詢、根據主機組名稱查詢等。另外還可以對主機進行啟用通知、關閉通知、啟用檢查、關閉檢查等操作。

選擇Monitoring > Status Details > Services查看所有監控服務的狀態,如下圖所示。

從圖上可以看出,172.16.213.239主機對應的zabbix_agent_10050服務出現了故障,具體的監控出錯信息是“connect to address 172.16.213.239 and port 10050: Connection refused”,這種錯誤一般都是服務關閉或者中斷導致的。

點擊上圖“Services”列后面的柱狀小圖標,即可查看服務運行趨勢圖,如下圖所示:

可以看出,此圖是對host_ping服務的監控曲線圖,可以查看指定時段host_ping服務的運行狀態。

關於對監控狀態的查看,Centreon還給出了一個全局的狀態統計,在Centreon web最上方有一個表格,統計了所有主機和服務的運行狀態,如下圖所示:

在Centreon監控系統中,所有監控狀態頁面都是定時自動刷新的,這個刷新值可以自行修改,默認刷新間隔是一分鍾,所以只需要查看全局的這個狀態監控表格,就能知道哪些主機或服務出現了故障。

到這里為止,centreon web中主要的配置已經基本介紹完畢了,其實可以看出,centreon的使用思路和nagios基本一致,因此,可以完全套用nagios的使用思路來學習centreon。

本節就介紹到這里,下節將繼續介紹通過cenrreon監控apache、mysql、hadoop的實戰案例,並給出一個桌面監控告警工具。


免責聲明!

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



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