Nagios 全名为(Nagios Ain’t Goona Insist on Saintood),最初项目名字是 NetSaint。它是一款免费的开源 IT 基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows 、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在状态恢复后发出正常的邮件或短信通知。Nagios 结构简单,可维护性强,愈来愈受中小企业青睐,以及运维和管理人员的使用。同时提供一个可选的基于浏览器的 Web 界面,方便管理人员查看系统的运行状态,网络状态、服务状态、日志信息,以及其余异常现象.
php
Nagios 结构上来讲, 可分为核心和插件两个部分。Nagios 的核心部分只提供了不多的监控功能,所以要搭建一个完善的 IT 监控管理系统,用户还须要在 Nagios 服务器安装相应的插件,插件能够从 Nagios 官方网站下载 http://www.nagios.org/,也能够根据实际要求本身编写所需的插件。
html
Nagios 软件需安装在一台独立的服务器上运行,这台服务器称为监控中心,监控中心服务器能够采用 Linux 或 Unix 操做系统;每一台被监视的硬件主机或服务都运行一个与监控中心服务器进行通讯的 Nagios 软件后台程序,也能够理解为 Agent 或插件都可。监控中心服务器读取配置文件中的指令与远程的守护程序进行通讯,而且指示远程的守护程序进行必要的检查。虽然 Nagios 软件必须在 Linux 或 Unix 操做系统上运行,可是远程被监控的机器能够是任何可以与其进行通讯的主机,根据远程主机返回的应答,Naigos 将依据配置进行回应;接着 Nagios 将经过本地的机器进行测试,若是检测返回值不正确,Nagios 将经过一种或多种方式报警;具体原理以下图所示:linux
回页首ios
# wget http://apt.sw.be/redhat/el6/en/x86_64/RPMS.dag/\ rpmforge-release-0.3.6-1.el6.rf.x86_64.rpm # rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt # rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86.rpm
#yum install gd fontconfig-devel libjpeg-devel libpng-devel gd-devel perl-GD \ openssl-devel php mailx postfix cpp gcc gcc-c++ libstdc++ glib2-devel libtoul-ltdl-devel
#groupadd -g 6000 nagios #groupadd -g 6001 nagcmd #useradd -u 6000 -g nagios -G nagcmd -d /home/nagios -c "Nagios Admin" nagios
# tar xzfv nagios-3.2.0.tar.gz # cd nagios-3.2.0 # ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios \ --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd --enable-event-broker --enable-nanosleep --enable-embedded-perl --with-perlcache #make all #make install #make install-init #make install-commandmode #make install-webconf #make install-config
安装与配置 Apachec++
因为 Nagios 提供了 Web 监控界面,可经过 Web 界面的方式能够清晰地看到被监控的主机和资源的运行状态等,所以安装须要安装 Apache 服务。 同时配置 Web 监控界面是须要 PHP 模块的支持,这里均选用当前系统自带软件包便可,也可经过源码包编译安装。web
(1)安装 Apache 和 phpapache
#yum install httpd php*
(2)配置 Apachevim
在 Apache 配置文件件/etc/httpd/conf/httpd.conf 中找到windows
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 文件最后面便可.
(3)设置用户访问控制
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
设置权限且重启 Apache
#chown nagios:nagcmd /usr/local/nagios/etc/htpasswd.users # usermod -a -G nagios,nagcmd apache # /etc/init.d/httpd restart
安装 Postfix 邮件服务
Nagios 监控平台支持邮件报警功能,因此须要安装邮件服务。这里采用互联网比较主流的 MTA —Postfix. 也可根据本身的生产环境去定义, 如: Sendmail、Qmail 等。因为 Nagios 只用到了 Postfix 的邮件发送功能,因此这里不须要对 Postfix 邮件服务做过多配置,安装 Postfix 套件,启动服务并在下次服务器重启自动加载便可。具体以下命令:
#yum install postifx #chkconfig postfix on; /etc/init.d/postfix restart
Naigos 提供的各类监控功能基本上是经过插件来完成的,而 Nagios 的核心指提供了不多的功能,所以安装插件是很是有必要的。Nagios 官网提供了不少不一样版块的插件应用,同时插件版本与 Nagios 版本也没有什么关联,若是支持汉化功能,则须要找到与之匹配的汉化软件包,不然会致使部分功能不能完成运行,这里保持默认英文,以下面的安装细节:
# wget http://ovh.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.14.tar.gz # tar xzf nagios-plugins-1.4.14.tar.gz # cd nagios-plugins-1.4.14 # ./configure --with-nagios-user=nagios --with-nagios-group=nagios \ --with-command-user=nagios --with-command-group=nagcmd \ --prefix=/usr/local/nagios # make all # make install # chmod 755 /usr/local/nagios
这样 Nagios 的插件就安装完成了,经过查看 Nagios 主程序目录,/usr/local/nagios/linexec 目录下能够看到不少的外部插件执行文件,以下图:
#/etc/init.d/nagios restart #/etc/init.d/httpd restart #chkconfig httpd on; chkconfig naigos on
Selinux 和 Iptables 是 Linux 系统提供的安全防御机制,主要用来防御 Linux 系统下的服务或应用程序不受外界安全攻击等。通常企业考虑到 Nagios 监控平台的安全可靠性,都会采用硬件的防火墙或其余安全设备来对服务器进行防御。同时此部分不是此平台描述的重点, 这里就不做过多的阐述
到目前为之 Nagios 基本安装成功,若要投入生产环境,还须要安装其余相应的插件及配置,不然是没法提供相应的监控等功能。 经过浏览器,在地址栏输入: http://IPAddress/nagios, 输入用户名及密码便可访问 Naigos 登陆界面。
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 | 用来存放外部命令文件的目录 |
配置文件 | 说明 |
---|---|
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 中引用便可。 |
Nagios 的配置过程涉及几个定义有:主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等,从这些定义能够看出,Nagios 的各个配置文件之间是互为关联、彼此引用的。成功配置一台 Nagios 监控系统,须要掌握每一个配置文件之间依赖与被依赖的关系,可从下面四个步骤来入手,第一步:定义哪些主机、主机组、服务和服务组,第二步:要定义这个监控要经过什么命令实现,第三步:要定义监控的时间段,第四步:要定义主机或服务出现问题时要通知的联系人和 联系人组;强烈建议依据以上顺序对 Nagios 系统进行相关配置。
Nagios 安装成功后,会在/usr/loca/nagios 目下生成相应的主机,服务、命令、模板等配置文件,同时也可看到以前设置的 Nagios 受权目录认证文件 htpasswed.users,而 Object 目录是存放一些配置文件模板,主要用于定义 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 的配置大可能是对监控对象配置文件进行修改配置,这里需复制了 objects 目录下的全部对象配置文件模板,同时在 monitor 文件下建立了独立的配置文件 hosts.cfg 和 service.cfg 来定义主机和服务,至于联系人和监控的时间段这里保持默认配置。 以下图:
下面主要描述下此平台架设相关的几个主要配置文件具体含义,分别为:templates.cfg、hosts.cf、services.cfg.
templates.cfg 文件
host.cfg 文件
此文件默认状况下不存在,须要手动建立。hosts.cfg 主要用来指定被监控的主机地址及相关属性信息。配置以下表:
services.cfg 文件
此文件在默认状况下也不存在,须要手动建立。services.cfg 文件主要用于定义监控的服务和主机资源,例如监控 HTTP 服务、FTP 服务、主机磁盘空间、主机系统负载等。
1.验证 Nagios 配置文件的正确性
#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Nagios 提供的这个验证功能很是有用,若是你的配置文件有语法或配置错误,它会显示出错的配置文件及在文件中哪一行。检测结果中的报警信息一般是能够忽略的,由于通常只是建议性的提示。
2.利用别名简化 Nagios 配置检测机制
在当前用户下的.bashrc 文件增长一行 alias nagioscheck 语句,以下表:
# source /root/.bashrc
3.启动 Nagios 服务
#/etc/init.d/nagios start|restart|stop 或者 service nagios start
经过 Nagios 命令的-d 参数来启动 nagios 过护进程。 #/usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
Nagios 对服务或主机监控的是一个瞬时状态,有时候系统管理员须要了解主机在一段时间内的性能及服务的响应状态,而且造成图表,这就须要经过查看日志数据来分析。可是这种方式不只烦琐,并且抽象。为了能更直观的查看主机运行状态,这里采用 PNP 来实现此功能。PNP 是一个小巧的开源软件包,它是基于 PHP 和 Perl 脚本编写,PNP 能够利用 rrdtoul 工具将 Nagios 采集的数据绘制成图表,而后显示主机或者服务在一段时间内运行的情况。如下详细介绍 PNP 安装配置流程:
#tar zxvf rrdtoul-1.4.5.tar.gz #cd rrdtoul-1.4.5 #./configure --prefix=/usr/local/rrdtoul #make #make install
#tar zxvf pnp-0.4.13.tar.gz #cd pnp-0.4.13 #./configure\ --with-nagios-user=nagios \ --with-nagios-group=nagios \ --with-rrdtoul=/usr/local/rrdtoul/bin/rrdtoul \ --with-perfdata-dir=/usr/local/nagios/share/perfdata #make all #make install #make install-config #make install-init
1. PNP 配置文件定义
在 PNP 安装完成后, 默认安装目录下回自带相应的模板配置文件, 所以只须要参考相应的模板文件进行修改便可,
# cd /usr/local/nagios/etc/pnp/ # cp process_perfdata.cfg-sample process_perfdata.cfg # cp npcd.cfg-sample npcd.cfg # cp rra.cfg-sample rra.cfg # chown -R nagios:nagios /usr/local/nagios/etc/pnp
2.修改 process_perfdata.cfg 文件
打开 Nagios 下的 process_perfdata.cfg 文件,修改相关内容。可从下图的注释信息了解到
将数字 0 变动为 2 是开启了日志的调试功能,操做以下:
3.修改 Nagios 相关配置文件
修改 templates.cfg,增长一个定义 PNP 的 host 和 service,详细见下图 :
若是想让 nagios 将数据输出,首先要修改 nagios 的主配置文件 nagios.cfg,找到以下几项,若有注释的将其去掉。修改后的信息以下:
#vim /usr/local/nagios/etc/nagios.cfg process_performance_data=1 host_perfdata_command=process-host-perfdata service_perfdata_command=process-service-perfdata
process-host-perfdata 和 process-service-perfdata 指令声明了 nagios 输出哪些值到输出文件中。 不过这些定义相对简单,而 PNP 提供了一个 Perl 脚本,很是详细地定义了一个输出数据的方法,process_perfdata.pl 实际上是 PNP 自带的一个脚本,这个脚本在 PNP 安装完成后会自动生成。所以,能够将 process-host-perfdata 和 process-service-perfdata 指令中对应的执行命令的内容替换成此脚本。增长下图的内容:
将 hosts-pnp 和 services-pnp 引用到 hosts.cfg 和 services.cfg 中,修改后的 hosts.cfg 内容如图 13 和图 14 所示:
访问 nagios 管理界面,点击查看哪台主机小太阳的图标,便可看到此主机的状态信息,这里点击的是 DirHost162 主机,详细如图 15 和图 16 所示:
NRPE 是 Nagios 的一个功能扩展,它可在远程 Linux 和 UNIX 主机上执行插件程序。经过在远程服务器上安装 NRPE 构件及 Nagios 插件程序来向 Nagios 监控平台提供该服务器的一些本地状况,如 CPU 负载、内存使用、硬盘使用,服务等。这里将 Nagios 监控平台称为 Nagios 服务器 端,而将远程被监控的服务器称为 Nagios 客户端。
下图为 NRPE 构件监控远程主机本地信息的运行原理:
NRPE 总共由两部分组成:
check_nrpe 插件,位于监控主机上
NRPE daemon,运行在远程被监控的 Linux 主机上
当监控远程 Linux/UNIX 主机服务或资源时,工做流程以下:
NRPE daemon 须要 Nagios 插件安装在远程的 Linux 主机上,不然 daemon 不能作任何的监控。
NRPE 的检测类型分为两种:
直接检测:检测的对象是运行 NRPE 的那台 Linux 主机的本地资源,原理以下:
直接使用 NRPE 插件监控远程 Linux/UNIX 主机的本地或者私有资源;如 CPU 负载、内存使用、SWAP 空间使用、硬盘等运行情况。
间接检测:当运行 Nagios 的监控主机没法访问到某台被监控主机,可是运行 NRPE 的机器能够访问获得的时候,运行 NRPE 的主机就充当一个中间代理,将监控请求发送到被监控对象上。
# cd /usr/local/src/ # tar zxvf nrpe-2.12.tar.gz # cd nrpe-2.12 # ./configure && make all # make install-plugin # make install-daemon # make install-daemon-config
因为在 Nagios 命令定义文件 commands.cfg 没有 check_nrpe 命令, 所以须要对此文件进行修改与定义,配置细节以下图:
在被监控或远程主机上增长 check_nrpe 的相关配置,因为 hosts.cfg 已定义了相应的主机,因此这里编辑文件 Nagios 服务器上的 services.cfg 文件便可
#vim /usr/local/nagios/etc/monitor/services.cfg
查看配置文件是否正确
# nagioscheck
从新加载配置文件
# /etc/init.d/nagios reload
添加 nagios 用户名,且不容许 nagios 用户登陆, 此用户用于与 Nagios 服务器通讯所用。
# useradd -s /sbin/nulgin nagios # tar -zxvf nagios-plugins-1.4.14.tar.gz # cd nagios-plugins-1.4.14 #./configure # make && make install
在 Linux 客户端安装 nrpe 程序包,根据编译提示向导完成安装操做。在安装的过程当中会看到 NRPE 的端口为 5666,且可经过 Xinetd 服务来控制 nrpe 进程,具体实现步骤以下:
#tar zxvf tar zxvf nrpe-2.12.tar.gz # cd nrpe-2.12 #./configure #make all #make install-plugin #make install-daemon #make install-daemon-config #make install-xinetd #chown -R nagios:nagios /usr/local/nagios/
定义被监控的 Linux 主机的对象,监控此主机的 CPU 负载、登陆用户数、磁盘分区、进程、swap 使用状况等,编辑/usr/local/nagios/etc/nrpe.cfg 文件, 内容以下示例:
command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10 command[check_load]=/usr/local/nagios/libexec/check_load -w 30,25,20 -c 60,55,40 command[check_sda3]=/usr/local/nagios/libexec/check_disk -w 15% -c 8% -p /dev/sda3 command[check_vg01]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/vg01 command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z command[check_swap_1]=/usr/local/nagios/libexec/check_swap -w 20 -c 10
这里只须要修改 only_from 项,增长 Ngaios 服务的地址便可,这样一来服务器与客户端就可进行 nrpe 会话,监控到 Linux 客户端相关信息,被监控端也更加容易维护管理,见下图:
#vim /etc/xinetd.d/nrpe
在 Linux 客户端"/etc/services" 文件增长一行
nrpe 5666/tcp #Naigos_Client
因为 NRPE 相应的插件已经安装成功, 这里使用 check_nrpe 命令来验证是否 nrpe 是否正常运行,若是执行如下命令可以显示 NRPE 的具体版本信息,则表示 nrpe 运行正常,加载重启 xinetd 服务便可。
#/usr/local/nagios/libexec/check_nrpe -H localhost NRPE v2.12 #/etc/init.d/xinetd restart
经过上面全部的软件及插件的安装与配置,Nagios 监控系统架构成功的完成了;若想进一步扩展,如监控 Windows 平台,则须要在 Windowns 系统安装 NSClient 软件,并在 Nagios 服务器定义 windows.cfg 等文件,VMware 则须要 Nagios 官网下载相应的插件及模块文件,并在 Nagios 服务器编辑 command.cfg、hosts.cfg、services.cfg 文件,这里不过多的阐述,可分别参照如下表 6 和表 7 方法来进行:
#vim /usr/local/nagios/etc/monitor/windows.cfg
# vim/usr/local/nagios/etc/monitor/commands.cfg
经过浏览器访问 Nagios 服务器,从当前页面能够看到当前主机和服务的健康状态,网络运行状况,以及服务与主机的检测时间等,以下图 15,能够看到个人 Nagios 服务器有一台服务器处于宕机状态。
点击 Hosts 标签,能够看到 Nagios 服务器监控多少台主机状态及当前主机的活跃状态,从下面图示能够看到监控的主机类型有,Windwos,Linux,Switch,FC-Swith,Storage 等,若想进一步了解每台主机的服务,系统负载等被监控的对象,能够直接点击某个主机,也可点击小太阳图标来查看当前被监控的主机的生成的图表信息。
下图是主机组页面,可看到 Nagios 服务器将相对应的主机组或监控的对象进行了分组定义,同时能够具体看到当前总共有多少台主机,活跃的主机,服务的健康状态等等
报告界面介绍
图 26,主要是记录一些事件信息,记录某台主机所监控对象的状态,若超出本身定义的配置,则会提示通常警告或严重告警信息,一旦主机恢复则自动告知用户当前主机的状态:
同时能够将事件信息以邮件的方式告知联系人,让其在第一时间了解到服务器的健康状态等信息,及时做出处理,提供服务器的工做效率等,以下图:
关于 Nagios 管理界面详细,可在左侧的导航菜单去查阅相应的具体功能,如:当前状态、拓补图、总览、问题故障、报告、配置等信息,都可根据本身的生产环境来制定。
经过此篇文章描述了 Nagios 监控管理平台的工做原理,以及如何在 Linux 平台部署开源软件的管理平台,掌握 Naigos 配置管理,经过外部插件的方式来对服务对象 Windows 、Linux、 Unix 、 VMware 等平台进行有效的管理与监控,适合运行部门及管理部门的 IT 人员使用,不只提升了效率同时减小了管理人员未能及时发现问题所带来的的困绕,也提升了生产的环境的可用性。http://www.ibm.com/developerworks/cn/linux/1309_luojun_nagios/index.html