Nagios 监控系统架设详解

  • A+
所属分类:Nagios

一. Nagios结构说明

Nagios 结构上来说, 可分为核心和插件两个部分。Nagios 的核心部分只提供了很少的监控功能,因此要搭建一个完善的 IT 监控管理系统,用户还需要在 Nagios 服务器安装相应的插件,插件可以从 Nagios 官方网站下载 http://www.nagios.org/,也可以根据实际要求自己编写所需的插件。

二. Nagios可实现的功能特性

1). 监控网络服务(SMTP、POP3、HTTP、FTP、PING 等);
2). 监控本机及远程主机资源(CPU 负荷、磁盘利用率、进程 等);
3). 允许用户编写自己的插件来监控特定的服务,方便地扩展自己服务的检测方法,支持多种开发语言(ShellPerlPythonPHP 等)
4). 具备定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
5). 当服务或主机问题产生与解决时将告警发送给联系人(通过 EMail、短信、用户定义方式);
6). 可以支持并实现对主机的冗余监控;
7). 可用 WEB 界面用于查看当前的网络状态、通知和故障历史、日志文件等;
8). 依赖关系,某个主机或服务依赖另一个主机或服务;

三. Nagios监控实现原理

Nagios 软件需安装在一台独立的服务器上运行,这台服务器称为监控中心,监控中心服务器可以采用 Linux 或 Unix 操作系统;每一台被监视的硬件主机或服务都运行一个与监控中心服务器进行通信的 Nagios 软件后台程序,也可以理解为 Agent 或插件均可。监控中心服务器读取配置文件中的指令与远程的守护程序进行通信,并且指示远程的守护程序进行必要的检查。虽然 Nagios 软件必须在 Linux 或 Unix 操作系统上运行,但是远程被监控的机器可以是任何能够与其进行通信的主机,根据远程主机返回的应答,Naigos 将依据配置进行回应;接着 Nagios 将通过本地的机器进行测试,如果检测返回值不正确,Nagios 将通过一种或多种方式报警;具体原理如下图所示:
nagios

四. Nagios安装与配置

4.1 Nagios安装

1). 安装前的准备工作

2). 安装相关软件包

3). 创建用户和组

4). 编译安装 Nagios

4.2 安装与配置 Apache

由于 Nagios 提供了 Web 监控界面,可通过 Web 界面的方式可以清晰地看到被监控的主机和资源的运行状态等,因此安装需要安装 Apache 服务。 同时配置 Web 监控界面是需要 PHP 模块的支持,这里均选用当前系统自带软件包即可,也可通过源码包编译安装。

1). 安装 Apache 和 php

2). 配置 Apache

在 Apache 配置文件件/etc/httpd/conf/httpd.conf 中找到

DirectoryIndex index.html index.html.var

将其修改为:

DirectoryIndex index.html index.php

再在 Apache 配置文件下增加如下内容

AddType application/x-httpd-php .php

以上两处主要用于增加 php 格式的支持。同时为了安全,需要经过授权才能访问 Nagios 的 Web 监控界面,所以需要在配置文件/etc/httpd/conf/http.conf 或 /etc/httpd/conf.d/nagios.conf 增加访问控制配置,若定义在 httpd.conf 文件中,将下图的语句加入到 httpd.conf 文件最后面即可.
nagios

3). 设置用户访问控制

安装 Postfix 邮件服务

Nagios 监控平台支持邮件报警功能,所以需要安装邮件服务。这里采用互联网比较主流的 MTA —Postfix. 也可根据自己的生产环境去定义, 如: Sendmail、Qmail 等。由于 Nagios 只用到了 Postfix 的邮件发送功能,所以这里不需要对 Postfix 邮件服务作过多配置,安装 Postfix 套件,启动服务并在下次服务器重启自动加载即可。具体如下命令:

4.3 安装Nagios插件

Naigos 提供的各种监控功能基本上是通过插件来完成的,而 Nagios 的核心指提供了很少的功能,因此安装插件是非常有必要的。Nagios 官网提供了很多不同版块的插件应用,同时插件版本与 Nagios 版本也没有什么关联,如果支持汉化功能,则需要找到与之匹配的汉化软件包,否则会导致部分功能不能完成运行,这里保持默认英文,如下面的安装细节:

这样 Nagios 的插件就安装完成了,通过查看 Nagios 主程序目录,/usr/local/nagios/linexec 目录下可以看到很多的外部插件执行文件。

4.4 重启Nagios服务

4.5 禁用SeLinux和iptables

Selinux 和 Iptables 是 Linux 系统提供的安全防护机制,主要用来防护 Linux 系统下的服务或应用程序不受外界安全攻击等。一般企业考虑到 Nagios 监控平台的安全可靠性,都会采用硬件的防火墙或其他安全设备来对服务器进行防护。同时此部分不是此平台描述的重点, 这里就不作过多的阐述。

4.6 Nagios监控平台访问

到目前为之 Nagios 基本安装成功,若要投入生产环境,还需要安装其他相应的插件及配置,否则是无法提供相应的监控等功能。 通过浏览器,在地址栏输入: http://IPAddress/nagios, 输入用户名及密码即可访问 Naigos 登录界面。

4.7 Nagios配置

1). Nagios 目录与相关配置文件说明

Nagios 安装完成后,/usr/local/nagios/目录下会生成 nagios 相关目录及配置文件,默认的的配置文件在/usr/local/nagios/etc 目录下。关于详细的描述,见下表:

目录名称 作用
bin Nagios 可执行程序所在目录
etc Nagios 配置文件目录
sbin Nagios cgi 文件所在目录, 也就是执行外部 命令所需要文件所在的目录
share Nagios 网页存放路径
libexec Nagios 外部插件存放目录
var Nagios 日志文件、Lock 等文件所在的目录
var/archives Nagios 日志自动归档目录
var/rw 用来存放外部命令文件的目录

2).  配置文件的作用概述

配置文件 说明
cgi.cfg 控制 CGI 访问的配置文件
nagios.cfg Nagios 主配置文件
resource.cfg 变量定义文件,又称为资源文件,在此文件中定义变量,以便由其他配置文件引用,如$USER1$
objects objects 是一个目录,在此目录下有很多配置文件模板,用于定义 Nagios 对象
objects/commands.cfg 命令定义配置文件,其中定义的命令可以被其他配置文件引用
objects/contacts.cfg 定义联系人和联系人组的配置文件
objects/localhost.cfg 定义监控本地主机的配置文件
objects/printer.cfg 定义监控打印机的一个配置文件模板,默认没有启用此文件
objects/switch.cfg 监控路由器的一个配置文件模板,默认没有启用此文件
objects/templates.cfg 定义主机和服务的一个模板配置文件,可以在其他配置文件中引用
objects/timeperiods.cfg 定义 Nagios 监控时间段的配置文件
objects/windows.cfg 监控 Windows 主机的一个配置文件模板,默认没有启用此文件
备注: Nagios 在配置方面非常灵活,默认的配置文件并不是必需的。可以使用这些默认的配置文件,也可以创建自己的配置文件,然后在主配置文件 nagios.cfg 中引用即可。

3). Nagios 配置文件间的关联

Nagios 的配置过程涉及几个定义有:主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等,从这些定义可以看出,Nagios 的各个配置文件之间是互为关联、彼此引用的。成功配置一台 Nagios 监控系统,需要掌握每个配置文件之间依赖与被依赖的关系,可从下面四个步骤来入手,第一步:定义哪些主机、主机组、服务和服务组,第二步:要定义这个监控要通过什么命令实现,第三步:要定义监控的时间段,第四步:要定义主机或服务出现问题时要通知的联系人和 联系人组;强烈建议依据以上顺序对 Nagios 系统进行相关配置。

4). Nagios 配置设定

Nagios 安装成功后,会在/usr/loca/nagios 目下生成相应的主机,服务、命令、模板等配置文件,同时也可看到之前设置的 Nagios 授权目录认证文件 htpasswed.users,而 Object 目录是存放一些配置文件模板,主要用于定义 Nagios 对象,具体如下图:

Nagios 配置目录与文件:
nagios

Nagios 对象模板文件:
nagios

自定义监控目录:

默认情况下 nagios.cfg 会启用一些对象配置文件如:comands.cfg、 contacts.cfg localhost.cfg 、contacts.cfg 、windows.cfg 等,为了更好的对 Nagios 平台的管理与日后的维护,这里采用了自定义目录在/usr/local/nagios/etc/目录下创建一个 monitor 文件夹,用来保存所管理被监控的对象。同时注释 nagios.cfg 配置文件默认定义的对象配置文件,并在 nagios.cfg 文件增加一行:cfg_dir=/usr/local/nagios/etc/monitor 即可, 如下图:

Nagios 启用自定义目录:
nagios

Nagios 的配置大多是对监控对象配置文件进行修改配置,这里需复制了 objects 目录下的所有对象配置文件模板,同时在 monitor 文件下创建了独立的配置文件 hosts.cfg 和 service.cfg 来定义主机和服务,至于联系人和监控的时间段这里保持默认配置。 如下图:

自定义目录下对象配置文件:
nagios

下面主要描述下此平台架设相关的几个主要配置文件具体含义,分别为:templates.cfg、hosts.cf、services.cfg.

templates.cfg文件:

hosts.cfg文件:

此文件默认情况下不存在,需要手动创建。hosts.cfg 主要用来指定被监控的主机地址及相关属性信息。配置如下表:

services.cfg文件:

此文件在默认情况下也不存在,需要手动创建。services.cfg 文件主要用于定义监控的服务和主机资源,例如监控 HTTP 服务、FTP 服务、主机磁盘空间、主机系统负载等。

4.8 Nagios 运行与维护

1). 验证 Nagios 配置文件的正确性

Nagios 提供的这个验证功能非常有用,如果你的配置文件有语法或配置错误,它会显示出错的配置文件及在文件中哪一行。检测结果中的报警信息通常是可以忽略的,因为一般只是建议性的提示。

2). 利用别名简化 Nagios 配置检测机制

在当前用户下的.bashrc 文件增加一行 alias nagioscheck 语句,如下表:
nagios
# source /root/.bashrc

3). 启动 Nagios 服务

五. Nagios 性能分析图标的作用

Nagios 对服务或主机监控的是一个瞬时状态,有时候系统管理员需要了解主机在一段时间内的性能及服务的响应状态,并且形成图表,这就需要通过查看日志数据来分析。但是这种方式不仅烦琐,而且抽象。为了能更直观的查看主机运行状态,这里采用 PNP 来实现此功能。PNP 是一个小巧的开源软件包,它是基于 PHP 和 Perl 脚本编写,PNP 可以利用 rrdtoul 工具将 Nagios 采集的数据绘制成图表,然后显示主机或者服务在一段时间内运行的状况。以下详细介绍 PNP 安装配置流程:

5.1 安装 RDDtoul 工具

5.2 安装 PNP

1). PNP 配置文件定义

在 PNP 安装完成后, 默认安装目录下回自带相应的模板配置文件, 因此只需要参考相应的模板文件进行修改即可,

2). 修改 process_perfdata.cfg 文件

打开 Nagios 下的 process_perfdata.cfg 文件,修改相关内容。可从下图的注释信息了解到,将数字 0 变更为 2 是开启了日志的调试功能,操作如下:
nagios

3).修改 Nagios 相关配置文件

  • 增加小太阳图标

修改 templates.cfg,增加一个定义 PNP 的 host 和 service,详细见下图 :
nagios

  • 修改 nagios.cfg

如果想让 nagios 将数据输出,首先要修改 nagios 的主配置文件 nagios.cfg,找到如下几项,如有注释的将其去掉。修改后的信息如下:

  • 修改 commands.cfg

process-host-perfdata 和 process-service-perfdata 指令声明了 nagios 输出哪些值到输出文件中。 不过这些定义相对简单,而 PNP 提供了一个 Perl 脚本,非常详细地定义了一个输出数据的方法,process_perfdata.pl 其实是 PNP 自带的一个脚本,这个脚本在 PNP 安装完成后会自动生成。因此,可以将 process-host-perfdata 和 process-service-perfdata 指令中对应的执行命令的内容替换成此脚本。增加下图的内容:
nagios

  • 修改 hosts.cfg 与 services.cfg

将 hosts-pnp 和 services-pnp 引用到 hosts.cfg 和 services.cfg 中,修改后的 hosts.cfg和services.cfg 内容如图所示:
hosts.cfg:
nagios

services.cfg:
nagios

六. 验证性能分析图标功能

访问 nagios 管理界面,点击查看哪台主机小太阳的图标,即可看到此主机的状态信息,这里点击的是 DirHost162 主机,详细如图 :
nagios
nagios

七. 利用 NRPE 扩展 Nagios 功能

NRPE 是 Nagios 的一个功能扩展,它可在远程 Linux 和 UNIX 主机上执行插件程序。通过在远程服务器上安装 NRPE 构件及 Nagios 插件程序来向 Nagios 监控平台提供该服务器的一些本地情况,如 CPU 负载、内存使用、硬盘使用,服务等。这里将 Nagios 监控平台称为 Nagios 服务器 端,而将远程被监控的服务器称为 Nagios 客户端。

下图为 NRPE 构件监控远程主机本地信息的运行原理:

nagios

7.1 NRPE 组成部分与检测类型

1). NRPE 总共由两部分组成:

check_nrpe 插件,位于监控主机上

NRPE daemon,运行在远程被监控的 Linux 主机上

当监控远程 Linux/UNIX 主机服务或资源时,工作流程如下:

  • nagios 会运行 check_nrpe 这个插件,并且会告诉它需要检查什么;
  • check_nrpe 插件会连接到远程的 NRPE daemon,所用的方式是 SSL;
  • NRPE daemon 会运行相应的 Nagios 插件来执行检查动作;
  • NPRE daemon 将检查的结果返回给 check_nrpe 插件,插件将其递交给 Nagios 做处理。

NRPE daemon 需要 Nagios 插件安装在远程的 Linux 主机上,否则 daemon 不能做任何的监控。

2). NRPE 的检测类型分为两种:

直接检测:检测的对象是运行 NRPE 的那台 Linux 主机的本地资源,原理如下:

直接使用 NRPE 插件监控远程 Linux/UNIX 主机的本地或者私有资源;如 CPU 负载、内存使用、SWAP 空间使用、硬盘等运行状况。

nagios

间接检测:当运行 Nagios 的监控主机无法访问到某台被监控主机,但是运行 NRPE 的机器可以访问得到的时候,运行 NRPE 的主机就充当一个中间代理,将监控请求发送到被监控对象上。

nagios

2). 在服务器端安装 NRPE 安装

3). 修改命令定义文件

由于在 Nagios 命令定义文件 commands.cfg 没有 check_nrpe 命令, 因此需要对此文件进行修改与定义,配置细节如下图:
nagios

4). 定义被监控主机

在被监控或远程主机上增加 check_nrpe 的相关配置,由于 hosts.cfg 已定义了相应的主机,所以这里编辑文件 Nagios 服务器上的 services.cfg 文件即可

在被监控主机,增加 NRPE 指令:
nagios

5).  查看配置文件是否正确并重载

八. 在 Linux 客户端安装 NRPE 安装

8.1 安装 Nagios 插件 nagios-plugin

添加 nagios 用户名,且不允许 nagios 用户登录, 此用户用于与 Nagios 服务器通信所用。

8.2 安装NRPE

在 Linux 客户端安装 nrpe 程序包,根据编译提示向导完成安装操作。在安装的过程中会看到 NRPE 的端口为 5666,且可通过 Xinetd 服务来控制 nrpe 进程,具体实现步骤如下:

8.3 配置NRPE

定义被监控的 Linux 主机的对象,监控此主机的 CPU 负载、登录用户数、磁盘分区、进程、swap 使用情况等,编辑/usr/local/nagios/etc/nrpe.cfg 文件, 内容如下示例:

8.4 定义 Xinetd 服务支持 nrpe

这里只需要修改 only_from 项,增加 Ngaios 服务的地址即可,这样一来服务器与客户端就可进行 nrpe 会话,监控到 Linux 客户端相关信息,被监控端也更加容易维护管理,见下图:

vim /etc/xinet.d/nrpe
nagios

8.5 定义服务端口

在 Linux 客户端"/etc/services" 文件增加一行

8.6 测试NRPE

由于 NRPE 相应的插件已经安装成功, 这里使用 check_nrpe 命令来验证是否 nrpe 是否正常运行,如果执行以下命令能够显示 NRPE 的具体版本信息,则表示 nrpe 运行正常,加载重启 xinetd 服务即可。

九. Nagios 管理平台界面介绍

通过上面所有的软件及插件的安装与配置,Nagios 监控系统架构成功的完成了;若想进一步扩展,如监控 Windows 平台,则需要在 Windowns 系统安装 NSClient 软件,并在 Nagios 服务器定义 windows.cfg 等文件,VMware 则需要 Nagios 官网下载相应的插件及模块文件,并在 Nagios 服务器编辑 command.cfg、hosts.cfg、services.cfg 文件,这里不过多的阐述,可分别参照以下内容来进行:

windows平台:

VMware平台:

十. 当前状态界面介绍

通过浏览器访问 Nagios 服务器,从当前页面可以看到当前主机和服务的健康状态,网络运行情况,以及服务与主机的检测时间等,如下图 ,可以看到我的 Nagios 服务器有一台服务器处于宕机状态。

nagios

十一. 系统主机界面介绍

点击 Hosts 标签,可以看到 Nagios 服务器监控多少台主机状态及当前主机的活跃状态,从下面图示可以看到监控的主机类型有,Windwos,Linux,Switch,FC-Swith,Storage 等,若想进一步了解每台主机的服务,系统负载等被监控的对象,可以直接点击某个主机,也可点击小太阳图标来查看当前被监控的主机的生成的图表信息。

所有被监控主机界面:
nagios

下图是主机组页面,可看到 Nagios 服务器将相对应的主机组或监控的对象进行了分组定义,同时可以具体看到当前总共有多少台主机,活跃的主机,服务的健康状态等等.

主机组和服务组界面:
nagios

报告界面介绍

主要是记录一些事件信息,记录某台主机所监控对象的状态,若超出自己定义的配置,则会提示一般警告或严重告警信息,一旦主机恢复则自动告知用户当前主机的状态:

事件报告管理界面:
nagios

同时可以将事件信息以邮件的方式告知联系人,让其在第一时间了解到服务器的健康状态等信息,及时作出处理,提供服务器的工作效率等,如下图:

邮件通知界面:
nagios

关于 Nagios 管理界面详细,可在左侧的导航菜单去查阅相应的具体功能,如:当前状态、拓补图、总览、问题故障、报告、配置等信息,均可根据自己的生产环境来制定。

十二. 结束语

通过此篇文章描述了 Nagios 监控管理平台的工作原理,以及如何在 Linux 平台部署开源软件的管理平台,掌握 Naigos 配置管理,通过外部插件的方式来对服务对象 Windows 、Linux、 Unix 、 VMware 等平台进行有效的管理与监控,适合运行部门及管理部门的 IT 人员使用,不仅提高了效率同时减少了管理人员未能及时发现问题所带来的的困绕,也提高了生产的环境的可用性。
转自:http://www.ibm.com/developerworks/cn/linux/1309_luojun_nagios/index.html

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: