- 前言
- 为什么要写这本书
- 读者对象
- 如何阅读本书
- 勘误和支持
- 致谢
- 第一部分 安全运维篇
- 第 1 章 Linux 服务器安全运维
- 第 2 章 Linux 网络安全运维
- 第 3 章 数据安全工具 DRBD、extundelete
- 第二部分 运维故障排查篇
- 第 4 章 Linux 系统运维故障排查思路
- 第 5 章 Linux 故障排查案例实战
- 第三部分 自动化运维篇
- 第 6 章 轻量级运维利器 pssh、pdsh 和 mussh
- 第 7 章 分布式监控系统 Ganglia
- 第 8 章 基于 nagios 的分布式监控报警平台 Centreon
- 第 9 章 通过 Ganglia 与 Centreon 构建智能化监控报警平台
- 第四部分 集群架构篇
- 第 10 章 高性能 Web 服务器 Nginx
- 第 11 章 高性能集群软件 Keepalived
- 第 12 章 千万级高并发负载均衡软件 HAProxy
- 第 13 章 构建高性能的 MySQL 集群系统
- 第 14 章 高性能负载均衡集群软件 HAProxy
8.5 配置 Centreon 监控系统
配置 Centreon 并不复杂,所有操作都能在 Web 管理界面完成,如果对 nagios 的配置过程比较了解,那么配置 Centreon 就变得非常简单。下面先来熟悉一下 nagios 中配置文件之间的关系。
在 nagios 的配置过程中涉及几个定义:主机、主机组、主机模板,服务、服务组、服务模板,联系人、联系人组、监控时间和监控命令等,从这些定义可以看出,nagios 的各个配置文件之间是互为关联,彼此引用的。成功配置一台 nagios 监控系统,必须弄清楚每个配置文件之间依赖与被依赖的关系,其中,最重要的有四点:第一要定义监控哪些主机、主机组、服务和服务组;第二要定义这个监控要通过什么命令实现;第三要定义监控的时间段;第四要定义主机或服务出现问题时通知的联系人和联系人组。
Centreon 的配置逻辑和过程与 nagios 完全相同,因此,清楚了 nagios 的配置重点和各个配置文件之间的依赖关系,Centreon 的配置将变得比 nagios 更加简单。
8.5.1 添加主机和主机组
默认情况下,Centreon 在安装完成后,会有一些初始的主机或服务的监控项,为了方便介绍和演示,这里删除所有服务的默认监控:选择“Configuration→Services→Services by host”,删除所有默认监控的服务即可。
1.Centreon-Server 主机的定义
选择“Configuration→Hosts→Centreon-Server”,如图 8-29 所示,这是对 Centreon-Server 主机的定义,其中,“HostName”项就是要监控节点的主机名。“IP Address/DNS”项可以是添加的 IP 地址,也可以是添加主机对应的主机名,只要 DNS 能解析到对应的 IP 就行。“Host Templates”项是为 Centreon-Server 添加的一个主机模板,而“generic-host”模板是默认就存在的,这里可以直接引用。关于这个主机模板,后面会有更详细的介绍。
对于一台主机的定义,基本上需要关注的就是以上几个选项,其他选项会陆续讲解。

图 8-29 Centreon-Server 主机的定义
2.创建一个 check_ping 命令
监控命令(Commands)是 Centreon 分布式监控系统运行的基础,无论主机还是服务,都是通过监控命令完成状态检查和报警的。经常使用的监控命令分为两种,分别是检测(Check)命令和通知告警(Notification)命令。在 Centreon 系统中,默认自带了很多常用的监控命令,选择“Configuration→Commands→Checks”,即可看到 Centreon 自带的监控检测命令,例如 check_dhcp、check_ftp、check_centreon_ping、check_http、check_tcp 等。选择“Configuration→Commands→Notifications”,即可看到自带的通知告警命令,例如常用的 host-notify-by-email、service-notify-by-email 等。
选择“Configuration→Commands”,单击“add”创建一个命令,如图 8-30 所示,其中,“Command Name”为 check_ping;“Command Type”为“Check”;“Command Line”是命令的具体执行方式,命令中“$USER1$”是一个变量,其实就是 nagios 插件的存放路径,“$HOSTADDRESS$”是个主机宏,用于取主机定义里的 IP 地址或者主机名,这些内容的含义与在 nagios 下表示的含义完全相同,这里不再过多介绍。

图 8-30 添加一个 check_ping 命令
3.添加主机监控
选择“Configuration→Hosts”,单击“Add”添加一台主机,如图 8-31 所示。添加的方法与前面对 Centreon-Server 主机的定义完全相同,首先添加一台 node1 主机,此主机引用的模板仍然是“generic-host”,最后,在“Host Check Properties”项中添加一个用于检测主机状态的命令“check_ping”,这个命令在上面的步骤中已经定义好了,这里直接引用即可。

图 8-31 添加 node1 主机监控
采用与添加 node1 主机完全相同的方法,下面依次添加 node2、node3、node4 三台主机,如图 8-32 所示,这里一共添加了 4 台主机。在这个界面上,有很多操作属性,可以用于对主机进行复制、删除、修改、启用和禁用等,由此可见,通过 Centreon 管理 nagios 非常方便和简单。

图 8-32 主机监控列表
4.添加主机组监控
选择“Configuration→Hosts→Host Groups”,单击“Add”添加一个主机组,如图 8-33 所示,依次输入“Host Group Name”和“Alias”的值,然后在“Linked Hosts”中选择此主机组需要加入的主机即可,添加完毕,单击“Save”即可完成主机组的添加。
当一批主机有某些相同的服务需要监控的时候,将这些主机添加到一个主机组中,然后创建一个需要监控的服务,将这个主机组加到此服务中,这样就完成了对批量主机的某些相同服务的监控,省去了一个主机添加一个服务的麻烦,非常方便。
从图 8-33 中可以看到,添加了一个名为 Centos-server-group 的主机组,然后将 Centreon-Server 和 node1 主机添加到了这个组中。一台主机可以属于多个主机组。

图 8-33 添加 Centos-server-group 主机组
根据图 8-33 的操作方法,继续添加一个名为 Centos1-server-group 的主机组,如图 8-34 所示,这里将 node2、node3、node4 三台主机加入到 Centos1-server-group 主机组中。

图 8-34 添加 Centos1-server-group 主机组
5.配置主机模板 generic-host
主机模板是对主机各个监控属性定义的综合,一些基础的主机监控,比如主机检查属性、报警通知属性、自定义宏属性等都可以在主机模板中进行设置,当然也可以在定义主机监控的时候设置这些属性。
默认此模板可直接使用,无需修改,但是也可以根据监控的需要,结合自身环境修改默认主机监控模板。
主机模板的一个最大特点是继承性,如果一台主机引用了这个模板,那么此主机模板下的所有监控属性都被自动继承过来,例如要对 1000 台主机做 ping 连通性检查,首先可以创建一个 check_ping 命令(创建方法上面已经介绍过),然后将这个命令引用到 generic-host 模板中,最后在创建主机的时候,所有 1000 台主机都引用 generic-host 这个主机模板即可,如图 8-35 所示。引用主机模板的好处是,如果监控属性发生了变化,只需修改 generic-host 配置即可,而无须一台主机一台主机修改,方便快捷。
有时候可能会发生一个监控属性既在 generic-host 模板中设置了,也在主机定义中设置了,此时就有一个优先级的问题,在这种情况下,监控属性的生效值以主机中的设置为准。例如,已经在 generic-host 中设置了 Check Period 为“24x7”,而在 node1 主机的定义中也引用了 generic-host 模板,同时将 Check Period 设置改为“workhours”,那么 node1 主机监控周期最终生效的设置是“workhours”。
在图 8-35 中,可以看到一些主机检查属性值,例如,“Max Check Attempts”表示最大检查尝试次数;“Normal Check Interval”表示正常检查间隔,单位是分钟;“Retry Check Interval”表示重试检查间隔,单位是分钟。这些主机检查属性值都需要根据实际情况进行修改或添加。

图 8-35 修改 generic-host 主机模板
8.5.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";
}
要使用这个 Perl 脚本,需要具备如下条件:
1)一个已经配置好的主机模板文件,在上面脚本中为 generic-host。
2)一个 IP 和主机名对应的 hosts 文件,并且需要放到/var/tmp 目录下。
hosts 文件的内容格式为“IP 地址.主机名”,每行一个,将多个主机依次添加到这个 hosts 文件中即可。将上面脚本命名为 batch_add_host.pl,放到监控服务器任意路径下,授予其可执行权限,然后执行这个脚本即可完成主机的批量添加。
对于批量添加的主机,“Host Name”选项对应 hosts 文件中的主机名,“IP Address/DNS”选项对应 hosts 文件的 IP 地址。
8.5.3 监控引擎管理
在完成主机和主机组添加后,这些主机信息并不会马上生效,还需要将这些信息生成 nagios 配置文件进行保存,然后重新启动监控引擎,这就是 Centreon 的监控引擎管理功能。在任何配置添加或修改完成后,都需要重启监控引擎才能使这些配置生效。
选择“Configuration→Monitoring Engines→Generate”,如图 8-36 所示。

图 8-36 生成配置并重启监控引擎
图 8-36 主要用于导出创建好的配置,默认选择“Generate Configuration Files”和“Run monitoring engine debug(-v)”两个动作,当然也建议选择后面两项。在“Restart Monitoring Engine”一项中,可选的动作有三个,分别是 Restart、Reload 和 External Command,其中 Restart 用于重新启动监控引擎服务,例如新增加了一台主机,就可以使用 Restart 这个动作;而 Reload 是重新加载配置,例如修改了某台主机的配置参数,就可以使用 Reload 重新加载;而 External Command 用于第三方扩展,主要用于特殊需求,一般用不到。在通常情况下,Restart 动作执行的时间较长,特别是当 Centreon 监控的主机或服务较多的时候,执行 Restart 操作会启动得比较慢,而 Reload 操作仅仅是将新的配置加载生效,执行速度相对较快,因此,如何选择这两个动作参数,要结合实际情况而定。
在监控引擎管理中,还可以对 nagios 的相关配置信息进行修改。选择“Configuration→Monitoring Engines→main.cfg”,就可以查看 nagios.cfg 的配置信息,这个文件是 nagios 的主配置文件,记录了 nagios 的配置文件路径、日志文件路径、扩展模块的配置、监控参数配置等信息,可以对这些配置信息进行修改。接着,选择“Configuration→Monitoring Engines→resources”,这是 nagios 的 resource.cfg 文件的配置信息,主要是设置 nagios 使用插件的路径信息,也可进行修改。最后,还有一个文件 CGI.cfg 用于对 nagios 权限的设置,选择“Configuration→Monitoring Engines→cgi”,即可查看和修改 nagios 相关访问和管理权限。
8.5.4 添加服务和服务组
在完成主机和主机组添加后,下面开始添加需要监控的服务和服务组。在完成 Centreon 安装后,会有一些默认的服务,为了不影响介绍,现将这些默认的监控服务删除,选择“Configuration→Services→Services by host”,如图 8-37 所示。

图 8-37 删除默认的服务监控项
1.配置服务模板 generic-service
这里的服务模板与之前介绍的主机模板类似,它们具有相同的作用,默认的服务模板无需修改即可拿来使用,当然也可以根据需要进行配置修改,在添加服务时引用。
选择“Configuration→Services→Templates”,即可编辑 generic-service 模板,如图 8-38 所示。在这里可以修改或添加“Service State”选项中的属性值。一般情况下,在 generic-service 服务模板中设置的属性值都是通用的或公用的,主要在创建服务的时候进行引用。

图 8-38 配置服务模板 generic-service
2.添加监控服务
添加监控服务的方法与添加主机基本一样,选择“Configuration→Services→Services by host”,单击“Add”添加一个服务。这里添加了一个 check_host_ping 的服务,在“Service Template”中引用了服务模板 generic-service,如图 8-39 所示。

图 8-39 添加 check_host_ping 监控服务
在添加监控服务过程中,重点关注“Service State”、“Macros”、“Notification”三个服务属性,其中“Service State”主要用于设置服务的检查周期、检查的命令、正常检查间隔、重试检查间隔等参数;“Macros”是自定义宏,暂不添加;“Notification”用来设置报警通知属性,可以添加联系人、联系人组、通知间隔、通知周期、通知类型等。关于“Notification”属性,后面会详细介绍。
在完成图 8-39 所示页面的设置后,接着选择“Relations”选项,如图 8-40 所示,这个选项用于选择与此服务相关联的主机,之后在“Linked with Hosts”选项中会列出所有已经添加的主机,选择与此服务相关联的主机即可。最后单击“Save”保存设置,这样一个监控服务就添加完成了。

图 8-40 选择与定义服务相关联的主机
可以按照如上方法依次创建多个监控服务,创建完成后的服务列表如图 8-41 所示。

图 8-41 创建的监控服务列表
在服务监控列表中,可以对每个服务进行复制、删除、启用、禁用等操作,这些功能对以后的监控系统运维是非常重要的。
3.添加监控服务组
选择“Configuration→Services→Services by host group”,单击“Add”按钮添加一个服务组,如图 8-42 所示。与之前添加服务方式一样,这里添加了一个名为“check-port-service”的服务组,并且应用了 generic-service 模板。

图 8-42 创建 check-port-service 服务组
在“Check Command”选项中,我们选择了 Centreon 自带的命令 check_tcp,这个命令用于监控 TCP 连接状态,当然也可以用来监控端口状态。在“Args”选项中,指定了要监控的端口,以及警告和故障的阈值。
在完成图 8-42 所示页面的设置后,接着选择“Relations”选项,如图 8-43 所示。这里列出了所有已经创建的主机组,可以选择某个主机组与这个服务组相关联,这里选择的是 Centos1-server-group 主机组,单击“Save”完成服务组的创建。

图 8-43 选择与服务组相关联的主机组
8.5.5 监控报警配置
监控报警配置是 Centreon 中一个非常重要的组成部分,在前面两小节中,主要介绍了主机和服务的添加,并且在主机和服务中都引用了各自的模板。由于模板的默认配置并没有开启报警通知功能,因此,本节重点讲述如何开启主机和服务的报警通知功能。
1.开启主机报警通知
开启主机报警通知功能有两种方法,第一种方法是在定义主机时进行开启,选择“Configuration→Hosts→node1”,编辑已经创建好的主机 node1,这里重点看“Notification”选项,如图 8-44 所示。

图 8-44 开启主机报警通知功能
在默认情况下,“Notification Enabled”选项处于“Default”状态,这个状态表示一个继承关系,也就是说如果此主机引用了 generic-host 模板,而在 generic-host 模板中开启了报警通知功能,那么这台主机也就自动继承报警通知功能。同理,如果在 generic-host 模板中没有开启报警通知功能,默认此主机也不会开启报警功能,因此,在主机模板没有开启报警通知功能的时候,就需要在主机定义中指定开启,这里选择“Yes”选项,就开启了主机的报警通知功能。
然后继续选择报警需要通知的联系人和联系人组,这里选择“Supervisor”作为通知联系人,“Supervisor”是 Centreon 后台管理员用户的全名,联系人组暂不选择,关于联系人和联系人组,可以根据监控需要任意添加,这个内容会在下一节详细讲述,这里不过多介绍。
接着还可以选择通知间隔、通知周期、通知类型、是否延时发送通知等选项。对于比较重要的主机可以选择短一点的通知时间间隔,可以选择通知周期为 7×24,另外还可以选择工作日(workhours)、非工作日(nonworkhours)两个选项,可以选择通知类型为宕机(Down)、不可到达(Unreachable)、恢复(Recovery)等。最后一个选项是设定第一次发送通知的延时时间,如果设置为 0,则表示主机故障后立刻发送通知。
开启主机报警的第二种方式是配置主机模板 generic-host。在前面介绍的主机添加过程中,都引用了主机模板 generic-host,而在主机模板配置中也可以开启报警通知功能,开启方法很简单:编辑主机模板,找到“Notification”选项,设置方法与图 8-44 完全一样,当开启了通知功能后,对应的这个主机就继承了模板的设置,自动开启主机通知功能。
根据运维经验,建议通过修改主机模板的方式开启主机通知功能,因为当监控的主机有上千台之多时,一台台修改主机配置变得不现实,此时只须通过修改主机模板 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 用户,如图 8-45 所示。

图 8-45 设置 admin 用户报警方式
这是用户设置的第一部分,“Full Name”其实就是 admin 登录用户的全名,在之前的介绍中已经做过说明,“Email”就是报警邮箱的地址,在其中填写真实有效的邮箱地址即可,“Pager”中填写的是用于接收报警短信的手机号码,如果配置了短信报警方式将会用到。接着配置“Group Relations”选项,此选项主要是配置联系人组,admin 用户默认属于“Supervisors”联系人组。
接着看用户设置的第二部分 - 如何配置报警通知命令,如图 8-46 所示。
在用户配置选项下也可以设置用户的相关报警通知属性,并且这里的配置优先级最高,可以根据用户的等级,配置主机或服务报警的接收类型、接收时段等,这里重点关注一下主机通知和服务通知命令。如果是邮件报警,在主机通知命令中,可以选择 host-notify-by-email,而在服务通知命令中可以选择 service-notify-by-email。关于这两个命令,可能要根据实际情况进行修改,修改方法很简单:选择“Configuration→Commands→Notifications”,编辑对应的命令即可。在默认情况下,这两个命令都是通过 Linux 系统自带的“mail”命令发送邮件的,这个命令不太好用,功能也不强大,因此推荐另一个利用命令行发邮件的工具“sendEmail”,这个命令行发邮件的工具功能非常强大,使用也非常简单,强烈推荐。下面简单介绍 sendEmail。

图 8-46 配置 admin 用户报警通知命令
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 1q2w3e4r
这个例子省去了“-m”参数,而是通过管道将邮件内容传给了 sendEmail。下面是一个定义好的 service-notify-by-email 命令的内容:
/usr/bin/printf "%b" "*****centreon Notification *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /usr/local/bin/sendEmail -f centreon@test.com -t $CONTACTEMAIL$ -s mail.test.com -u "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" -xu centreon -xp 1q2w3e4r
到这里为止,关于 Centreon 邮件报警方式的配置基本介绍完成了,下面再介绍一下其他报警方式的优缺点及使用经验。
Centreon 支持多种报警方式,上面介绍了默认的邮件报警,还有通过第三方插件配置短信报警、MSN 或 QQ 在线报警等,但是本章不打算介绍这些方式,主要基于以下原因:
- 短信报警、MSN 或 QQ 报警的接入方式与邮件报警的接入方法完全一样,都是通过配置报警命令脚本完成。而短信报警通常都是通过飞信这个免费插件实现的。飞信虽然免费,但是有很大局限性,不适用所有手机运营商,并且及时性和稳定性无法保证,这就会导致出现错报或漏报的问题,而对于一些关键业务系统,这些都是无法容忍的,因此,对于这种情况可以考虑使用商用的短信通道或者购买独立的短信硬件设备,费用并不高,作为公司层面也应该能负担得起。
- MSN 或 QQ 在线报警基本都是通过脚本调用监控状态完成报警的,其完成的功能与邮件报警并无区别,因此这种报警方式不推荐使用。
邮件报警是最基础的报警形式,它可以有多种扩展形式,目前很多邮箱都支持短信提醒功能,将邮箱绑定短信提醒后,就变相实现了短信报警的功能。另外,现在的手机基本都是智能机了,在手机上安装一个邮件客户端工具,然后绑定报警邮件地址,就可以随时随地收取报警邮件了,这种方式简单、实用,唯一的成本就是要支付一部分手机的无线通信流量。
4.查看监控报警状态
Centreon 通过 Web UI 界面展示了所有主机和服务的运行状态,对于不同的运行状态,Centreon 分别用不同的颜色显示,基本的状态与颜色的定义如下:
- 正常运行状态(OK),一般情况下用绿色表示。
- 警告状态(Warning),通常用黄色表示。
- 故障、宕机状态(Critical、Down),通常用红色表示。
- 未知状态(Unknown),通常用灰色表示。
- 挂起、不可到达状态(Pending、Unreachable),通常用浅蓝色表示。
选择“Monitoring→Hosts”即可查看所有主机、主机组、故障主机等的相关信息,如图 8-47 所示为所有主机运行状态。

图 8-47 所有主机运行状态
从图 8-47 中可以看出,主机 node3 处于“DOWN”状态,并且此主机也用红色进行了标注。查看最后一列 node3 主机故障的详细信息,发现是“Host Unreachable”状态,此时就需要去检查 node3 主机的网络连接情况了。
从图 8-47 还可以看到所有主机的主机名称、主机运行状态、主机 IP 地址、最后一次检查的时间、某种主机状态持续的时间等,最后一列是主机状态的检查结果。在“Hosts”一列后面的那个小图标代表这些主机没有启用主机报警,在启用主机报警后,这个小图标会自动消失。这个小图标后面的图形报表是对 ping 操作监控状态的一个数据汇总,单击这个图标即可查看主机在某段时间内的 ping 状态曲线图。
Centreon 查看主机或服务状态的功能非常强大,支持根据主机名过滤查询,还支持根据状态查询、根据主机组名称查询等。另外还可以对主机进行启用通知、关闭通知、启用检查、关闭检查等操作。
选择“Monitoring→Services→All Services”即可查看所有监控服务的状态,如图 8-48 所示。

图 8-48 所有监控服务运行状态
从图 8-48 中可以看出,由于 node3 主机网络故障无法连接导致 node3 上的 MySQL 端口监控服务出现故障,具体的监控出错信息是“No route to host”,这种错误一般都是网络无法连接导致的。
关于对监控状态的查看,Centreon 还给出了一个全局的状态统计,Centreon 后台右上角的一个表格统计了所有主机和服务的运行状态,如图 8-49 所示。

图 8-49 主机和服务的全局状态监控
在 Centreon 监控系统中,所有监控状态页面都是定时自动刷新的,这个刷新值可以自行修改,默认刷新间隔是一分钟,所以只需要查看全局的这个状态监控表格,就能知道哪些主机或服务出现了故障。
8.5.6 用户和用户权限管理
Centreon 是一个多用户、多角色管理系统,从功能上可以将用户划分为两个部分:一部分是后台登录用户,另一部分是报警通知用户。后台登录用户主要用于对主机或服务的添加、修改和状态查看等。结合 Centreon 的用户权限管理功能,可以针对不同用途的用户设置不同的登录级别,也就是说可以授权某个用户管理一批主机和服务,而没有授权的其他主机和服务,此用户将无法查看和管理,通过这种方式,Centreon 实现了对主机和服务的分级、分权限管理。
Centreon 的另一部分用户主要用于报警通知,其实就是在 nagios 中所说的联系人和联系人组,在添加用户时,会要求输入用户的邮件地址、电话号码等,在发送报警通知时,如果指定了某个联系人,那么会自动调用此联系人的邮件地址或电话号码进行邮件报警或短信提醒,如果有很多用户都需要接收某类报警邮件时,那么可以将这些有相同需求的用户都添加到一个组中,这就是联系人组。
1.添加用户
下面演示如何添加一个用户,以及如何向用户授权。
选择“Configuration→Users→Contacts/Users”,单击“Add”按钮添加一个用户,如图 8-50 所示。
这里假定添加一个 ixdba 用户,在“Full Name”中填写 ixdba,在“Alias/Login”中同样填写 ixdba,然后添加“Email”地址为 ixdba@ixdba.net,“Linked to Contact Groups”暂不填写,然后启用 ixdba 的报警通知功能。

图 8-50 添加用户 ixdba
然后选择 ixdba 用户接收报警的类型、时段和报警命令,如图 8-51 所示。

图 8-51 设置 ixdba 用户接收报警的类型、时段和报警命令
根据用户的类别和要求选择相应的报警属性即可,然后选择“Centreon Authentication”标签,填写 ixdba 用户登录 Centreon 后台的密码、语言等信息,如图 8-52 所示。
“Centreon Authentication”选项是可选的,如果要开启 ixdba 用户登录 Centreon 平台的功能,就需要设置登录密码等信息,如果添加的用户仅仅是为了接收报警通知,那么无须设置登录密码。在这个标签中还可以设置此用户是否为管理员、登录的默认语言等信息,设置完成,单击“Save”按钮,完成用户添加。

图 8-52 设置 ixdba 用户登录 Centreon 后台的密码
2.添加用户组
选择“Configuration→Users→Contact Groups”,单击“Add”添加一个用户组,如图 8-53 所示。

图 8-53 添加用户组 View_group
这里添加一个名为 View_group 的用户组,然后在“Linked Contacts”项将刚才创建的用户 ixdba 加入此用户组。
3.添加访问组
下面添加一个访问组,选择“Administration→ACL→Access Groups”,可以看到有个默认的访问组 ALL,单击“Add”添加一个新的访问组,如图 8-54 所示。

图 8-54 添加访问组 access_group
这里添加一个名为 access_group 的访问组,然后将 ixdba 用户加入这个访问组中,当然也可以直接将之前创建的 View_group 用户组加入 access_group 访问组中。
4.添加访问控制权限
下面开始创建菜单的访问控制权限,选择“Administration→ACL→Menus Access”,可以看到默认的四个菜单访问控制项,分别是 Configuration、Graphs、Monitoring+Home 和 Reporting,这里根据需要再新增一个菜单访问控制项,单击“Add”添加一个“Menus Access”,如图 8-55 所示。
这里添加一个名为 guest_view 的菜单访问权限,从图 10-55 可以看出,此权限只能访问 Centreon 的 Home、Monitoring、Views 和 Reporting 菜单,而对于 Configuration 和 Administration 菜单将无法访问,其实就是只有查看和预览权限,没有添加和修改权限。最后将这个菜单访问权限授予 access_group 访问组,这样 access_group 访问组下的所有用户将只有查看和预览的权限。
5.添加资源访问策略
最后一步,还需要添加资源访问策略。资源访问策略用于控制用户对主机或服务访问的控制。选择“Administration→ACL→Resources Access”,默认有个“All Resources”资源访问策略,单击“Add”添加一个新的资源访问策略,如图 8-56 所示。

图 8-55 增加一个菜单访问控制权限

图 8-56 添加资源访问策略
这里添加一个名为“view_acl”的访问策略,并且将 access_group 访问组加入这个访问策略中,接着选择“Hosts Resources”标签,选择可访问的主机资源,如图 8-57 所示。

图 8-57 选择可访问的主机资源
这里选择所有的主机和主机组,当然也可以选择指定的一批主机或主机组,继续选择“Services Resources”标签,选择可访问的服务组,如图 8-58 所示。

图 8-58 选择可访问的服务组
这里选择所有服务组,设置完成后单击“Save”保存,这样就成功添加了一个资源访问策略。
在完成所有配置策略添加后,就可以通过 ixdba 用户登录进入 Centreon 后台了,此时可以看到 ixdba 用户只能看到 Home、Monitoring、Views 和 Reporting 四个菜单选项,并且能看到所有主机和服务的运行状态,这表明资源控制策略生效了。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论