一、 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的实战案例,并给出一个桌面监控告警工具。

文档更新时间: 2019-03-06 16:04   作者:李延召