分布式监控告警平台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 [email protected] -t [email protected] -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 [email protected] -t $CONTACTEMAIL$ -s smtp.163.com  -u "** HOST $NOTIFICATIONTYPE$ alert - $HOSTNAME$ is $HOSTSTATE$ **" -xu [email protected] -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的实战案例,并给出一个桌面监控告警工具。

原文地址:https://www.cnblogs.com/flytor/p/11440809.html

时间: 2024-10-27 08:08:23

分布式监控告警平台Centreon快速使用的相关文章

Ganglia与Centreon整合构建智能化监控报警平台

一.智能运维监控报警平台的组成 随着大数据时代的来临,运维工作的难度越来越大,每个运维人员都要面临不计其数的服务器和海量的数据,如何保证众多服务器和业务系统稳定高效地运行并尽量减少死机时间,成为考核运维工作的重要指标,而要实现大规模的运维,必须要有一套行之有效的智能运维监控管理系统,本章就详细介绍下如何构建一套完善的运维监控报警平台. 运维的核心工作可以分为运行监控和故障处理两个方面,对业务系统进行精确.完善的监控,保证能够在第一时间发现故障并迅速通知运维人员处理故障是运维监控系统要实现的基础功

《Zabbix企业级分布式监控系统》预售

<Zabbix企业级分布式监控系统>预售 一.预售网站链接如下 网站名称 链接 亚马逊 http://www.amazon.cn/3/dp/B00MN6QEYK 当当 京东 二.书籍封面如下 三.该书相关信息如下 本书的读者QQ群: Zabbix企业级分布式监控 271659981 (可申请加入,验证码:Zabbix监控) 四.随书资料 随书所带的附件托管在github上面,完全开源. https://github.com/itnihao/zabbix-book 五.书籍目录如下 第一部分Za

分布式监控软件Zabbix

2.1 Zabbix简介 Zabbix是一个基于Web界面的,提供分布式系统监视以及网络监视功能的企业级的开源解决方案.Zabbix能监视各种网络参数,保证服务器的安全运营,并提供弹性的通知机制让系统管理员快速定位并解决存在的各种问题. 2.2 Zabbix架构 Zabbix由Zabbix Server与可选组件Zabbix Agent两部分构成: Zabbix Server可以通过SNMP.Zabbix agent.ping.端口监视等方法提供对远程服务器/网络状态的监视.数据收集等功能,可以

基于Spark的异构分布式深度学习平台

导读:本文介绍百度基于Spark的异构分布式深度学习系统,把Spark与深度学习平台PADDLE结合起来解决PADDLE与业务逻辑间的数据通路问题,在此基础上使用GPU与FPGA异构计算提升每台机器的数据处理能力,使用YARN对异构资源做分配,支持Multi-Tenancy,让资源的使用更有效. 深层神经网络技术最近几年取得了巨大的突破,特别在语音和图像识别应用上有质的飞跃,已经被验证能够使用到许多业务上.如何大规模分布式地执行深度学习程序,使其更好地支持不同的业务线成为当务之急.在过去两年,百

zookeeper监控告警

一.ZooKeeper简介 ZooKeeper作为分布式系统中重要的组件,目前在业界使用越来越广泛,ZooKeeper的使用场景非常多,以下是几种典型的应用场景: l  数据发布与订阅(配置中心) l  负载均衡 l  命名服务(Naming Service) l  分布式通知/协调 l  集群管理与Master选举 l  分布式锁 zk环境搭建 这里不详细说明,提供详细blog说明. Zookeeper集群搭建:http://www.cnblogs.com/linuxbug/p/4840137

自动化运帷之分布式监控-zabbix 配置指南

zabbix 配置指南: Hosts zabbix中的hosts就是指你想监控的设备,如服务器.工作站.交换机等等.如果你想监控某个主机X的某个变量,你必须先创建一个主机X,然后再给该主机添加监控items.hosts可以被有组织的安排进host group中. 通过zabbix的前端web界面配置hosts: ? 1 Configuration->Hosts->Create Host 此页面中有5个表单:Host.Template.IPMI.Macros.Host inventory. Ho

日均百万PV架构第四弹(分布式监控)

应该能更早出的第四弹,被虚拟机错误搅乱,迟迟没有上线,不得已将所有 节点用puppet完成上线,稍后整理第五弹(非你不可自动化)也即将上线 : ) zabbix简介    zabbix是基于Php的开源监控软件    基于多重数据采集 SNMP , Agent , Ping , Port    多重告警通知 Mail , Jabber , SMS    可以完成多种操作平台甚至于设备(route,switch,io)的监控工作    易于定制重用(模板机制,函数),甚至于二次开发    告警及时

LNMP+zabbix分布式监控搭建及版本升级

LNMP+zabbix分布式监控搭建需要组件:gcc gcc-c++ openssl* pcre pcre-devel gd gd-devel libjpeg-devel libpng-devel libxml2-devel bzip2-devel libcurl-devel autoconf automake imake expat-devel cmake libaio libaio-devel bzr bison libtool ncurses5-devel ncurses-devel ne

Python之路,Day20 - 分布式监控系统开发

Python之路,Day20 - 分布式监控系统开发 本节内容 为什么要做监控? 常用监控系统设计讨论 监控系统架构设计 监控表结构设计 为什么要做监控? –熟悉IT监控系统的设计原理 –开发一个简版的类Zabbix监控系统 –掌握自动化开发项目的程序设计思路及架构解藕原则 常用监控系统设计讨论 Zabbix Nagios 监控系统需求讨论 1.可监控常用系统服务.应用.网络设备等 2.一台主机上可监控多个不同服务.不同服务的监控间隔可不同 3.同一个服务在不同主机上的监控间隔.报警阈值可不同