免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 16720 | 回复: 20

Nagios入门篇(使用Nagios-3.1.2) [复制链接]

论坛徽章:
0
发表于 2009-08-12 09:05 |显示全部楼层
本文系作者原创,转载请注明出处:http://marion.cublog.cn

一、安装配置Nagios

1、Nagios简介

Nagios是一款遵循GPLv2的开源网络监控软件,可用来监控指定的多种系统的主机、服务,并可在它们的工作状态发生变化时通知管理员。它的特性包括:
1)监控网络服务(HTTP、POP3、SMTP、PING、MySQL等)
2)监控主机资源(磁盘空间利用率、内存利用率、CPU负载等)
3)简洁的插件设计接口,使得用户可以轻松开发所需的检测脚本
4)并行服务模式
5)轻松描述网络结构,并且能够区辨“宕机”和“主机不可达”
6)通过邮件或用户自定义的方式将主机或服务的工作状态变化情况通知给管理员
7)自动日志滚动
支持以冗余方式进行主机监控
9)可以通过web方式直观的查看当前网络状态、通知和问题历史、日志文件等等,此组件为可选

Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中,NRPE用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控;NSCA用来让被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到);NSClient++是用来监控Windows主机时安装在Windows主机上的组件;而NDOUtils则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现这些数据的快速检索和处理。这四个ADDON(附件)中,NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端。

下图是笔者根据自己的理解给出的Nagios各组件的关系图,希望能帮助读者理解。如果您对此构图中的关系持有异议,欢迎通过各种方式跟笔者交流。



目前,Nagios只能安装在Linux系统主机上,其编译需要用到gcc。同时,如果打算使用web界面的管理工具的话,还需要有apache服务器和GD图形库的支持。

2、安装前的准备工作

(1)解决安装Nagios的依赖关系:

Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经完全安装:
# rpm -q httpd gcc glibc glibc-common gd gd-devel

对于缺少的rpm包,您可以挂载光盘直接使用rpm命令进行安装。如果不想总是被rpm的依赖关系所困扰,您可以通过yum结合本地源来实现rpm包的管理。对于本地源的建立,可以参考笔者的另外一篇关于yum的文章。

说明:以上软件包您也可以通过编译源代码的方式安装,只是后面许多要用到的相关文件的路径等需要按照您的源代码安装时的配置逐一修改。


(2)添加nagios运行所需要的用户和组:

# groupadd nagcmd
# useradd -m nagios
# usermod -a -G nagcmd nagios

把apache加入到nagcmd组,以便于在通过web Interface操作nagios时能够具有足够的权限:
# usermod -a -G nagcmd apache

3、编译安装nagios:

# tar zxf nagios-3.1.2.tar.gz
# cd nagios-3.1.2
# ./configure --with-command-group=nagcmd
# make all
# make install
# make install-init
# make install-config
# make install-commandmode

为email指定您想用来接收nagios警告信息的邮件地址,默认是本机的nagios用户:
# vi /usr/local/nagios/etc/objects/contacts.cfg
email        nagios@localhost       #这个是默认设置

在httpd的配置文件目录(conf.d)中创建Nagios的Web程序配置文件:
# make install-webconf

创建一个登录nagios web程序的用户,这个用户帐号在以后通过web登录nagios认证时所用:
# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

以上过程配置结束以后需要重新启动httpd:
# service httpd restart

4、编译、安装nagios-plugins

nagios的所有监控工作都是通过插件完成的,因此,在启动nagios之前还需要为其安装官方提供的插件。

# tar zxf nagios-plugins-1.4.13.tar.gz
# cd nagios-plugins-1.4.13
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install

5、配置并启动Nagios

(1)把nagios添加为系统服务并将之加入到自动启动服务队列:
# chkconfig --add nagios
# chkconfig nagios on

(2)检查其主配置文件的语法是否正确:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

(3)如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了:
# service nagios start

(4)配置selinux
如果您的系统开启了selinux服务,则默认为拒绝nagios web cgi程序的运行。您可以通过下面的命令来检查您的系统是否开启了selinux:
#getenforce

如果上面命令的结果显示开启了selinux服务,您可以通过下面的命令暂时性的将其关闭:
#setenforce 0

如果您想在以后完全关闭selinux,可以通过编辑/etc/sysconfig/selinux文件,将其中的selinux后面的值“force”修改为“disable”即可。

当然,您也可以通过以下方式将nagios的CGI程序运行于SELinux/targeted模式而不用关闭selinux:
# chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin
# chcon -R -t httpd_sys_content_t /usr/local/nagios/share

(5)通过web界面查看nagios:
http://your_nagios_IP/nagios

登录时需要指定前面设定的web认证帐号和密码。

注意:为了nagios系统的安全,建议您使用信息摘要强认证模式(如MD5),强制使用web的TSL/SSL安全通讯模式,并且通过访问控制列表设定能访问nagios的web界面的客户端地址。

二、Nagios的插件简介

Nagios本身并不包含任何监控机制,其所有的监控工作都是通过插件(plugin)来实现的。这些插件通常是通过命令行方式监控主机或服务工作状态的Perl脚本或Shell脚本(通常于/usr/local/nagios/libexec目录),由Nagios进行按需调用,并把执行结果返回给Nagios。Nagios正是根据这些返回值来判断是否“采取某种行动”(如运行事件句柄(event handlers),发送通知等)。下图展示了插件相对于Nagios进程和被监控对象间的关系。



官方提供了一些用来监控系统基本资源(如CPU负载、磁盘利用率、Ping速率等)的插件。如果需要监控其它形式资源(如CPU电压、CPU风扇转速、网络流量等)的状态,您可以利用官方提供的其它插件或第三方提供的插件,当然,您也可以自己编写所需要的插件。

以下是常用来获得插件的地址:

Nagios插件项目:http://nagiosplug.sourceforge.net/
Nagios下载页面:http://www.nagios.org/download/
NagiosExchange.org:http://www.nagiosexchange.org/

官方提供的插件通常都会提供简单的使用帮助,可以在每个脚本后使用“-h”或“--help”来获得这些帮助信息。如要想了解插件脚本check_nt的帮助信息,可以使用如下命令:

# ./check_nt  --help


三、Nagios配置文件概览



Main Config File:主配置文件,通常为nagios.cfg,包含许多指示Nagios守护进程工作属性的指令。此配置文件会被Nagios Daemon和CGIs使用。

Resource  File(s):资源文件,常用来存储用户自定义的“宏(macro)”,如可用来存储“密码”等敏感性的信息,使之可以避免直接暴露在CGIs源文件中。

Object Definition Files:对象定义文件,常用来定义要监控对象以及如何监控这些对象,如主机、服务、主机组、服务组、联系人、联系人组、命令等。这些对象定义文件可以通过cfg_file指令包含于主配置文件中;如果对象定义文件有很多,则可以将它们存放于某一目录中,而后使用cfg_dir指令一次性地由主配置文件读取。这些文件通常位于/usr/local/nagios/etc/objects目录中。

CGI Configure File:CGI配置文件,包含许多决定CGIs工作属性的指令,以及一个指向主配置文件的引用。

四、Nagios常见对象概览

对象(Objects)是Nagios“监控”和“通知”机制的基本逻辑组件,其主要包括:

Service
Service Groups
Hosts
Host Groups
Contacts
Contact Groups
Commands
Time Periods
Notification Escalations
Notification and Excution Dependenicies



主机和主机组:主机通常是网络中的物理设备,至少有某个种类的访问地址(主机名、IP地址或MAC地址);每个主机通常都提供一个到多个服务(service);主机彼此间可以形成父/子(parent/child)关系,用来描述主机间的“从属”或“包含”关系(“网络可达性”关系)。主机组通常指一到多个主机的组合。



服务和服务组(Service/Service groups):“服务”是Nagios监控逻辑的核心,通常从属于某个主机,可以是主机的属性(如CPU负载、磁盘空间、交换空间使用率等),也可以是由主机提供的某个“服务”(如POP3、HTTP、SSH等),甚至也可以是DNS资源记录这样的主机资源。服务组通常指一至多个服务定义的组合。



联系人和联系人组(Contacts/Contack Groups):“联系人”是指“通知(notification)”的接受对象。联系人通常有一个或多个“通知”方式(如移动电话、Email、即时通讯帐户等),以接收其职责范围内的主机或服务发来的通知。“联系人组”通常指一个或多个联系人的集合。


时段(Timeperiods):“时段”通常定义用来控制“主机和服务何时被监控”以及“联系人何时可以接收通知”的有效时间段。

命令(Commands):用来定义Nagios可以调用的程序、脚本等,还包括了这些程序或脚本的调用格式。

五、监控Windows主机

Windows主机可被监控的对象包括其私有资源(如CPU负载、磁盘利用率等)和公开的服务(如HTTP、FTP等)。

对于其私有资源的监控需要在被监控的主机上安装监控代理(agent),通常为NSClient++,Nagios通过插件(chech_nt等)指示Agent执行某种监控工作并获得其执行结果。当然,您也可以通过SNMP协议对Windows主机进行监控,但这需要在服务端安装额外的第三方插件,如Nagios-snmp-plugins,同时也需要在客户端进行SNMP代理等的设置。本文只描述前者。

公开的服务资源与其工作平台的相关性不大,因此通常是使用通用脚本(用以监控各种系统平台上的同一种服务)对其进行监控,如监控HTTP服务可以使用check_http脚本来实现。




(一)监控私有资源

使用Nagios监控Windows主机的私有资源,需要用到Nagios端的check_nt插件。同时,也需要在Windows主机上安装代理软件,常见的有NSClient++和NC_NET,本文将采用NSClient++,因为其配置和使用较为简单。监控Windows主机的私有资源配置的大致步骤如下:
安装配置完好的Nagios服务端,包含了所需要的各种插件
在Windows主机上安装合适的代理并进行适当的配置
在监控端定义需要被监控Windows主机的“主机”和“服务”
重启Nagios守护进程


Nagios为监控Windows主机提供了一个配置模板,名为windows-server(包含于templates.cfg中),以方便其定义。此外,为了简化新手的配置,Nagios还提供了一个被监控Windows主机的配置文件示例,名为windows.cfg,只需要修改其中的部分主机属性,如主机名、IP地址等,便可直接使用了。

配置过程:
(1)安装Windows代理
被监控主机Windows上的资源状态信息需要由代理执行,而后由代理将结果发送给Nagios。接下来的安装过程中采用的代理为NSClient++,下载地址为http://sourceforge.net/projects/nscplus,目前最新的版本为NSClient++-0.3.6-Win32.msi。

目前的NSClient++带有NRPE和NSCA插件。前者可以实现如同监控Linux/Unix主机的机制来监控Windows主机,后者则可以实现让被监控主机主动发送监控信息给Nagios实例。

安装时,将NSClient++-0.3.6-Win32.msi直接根据安装向导安装于Windows主机即可,默认安装位置是C:\Program Files\NSClient++。安装过程中可定义可用来接收监控信息的Nagios实例服务器的IP地址、Nagios服务器和NSClient++正式建立通信前的认证密码以及开启的模块。如果此时未进行定义,则可以根据下面的说明通过编辑配置文件来实现。

接下来编辑NSClient++的主配置文件C:\Program Files\NSClient++\NSC.ini:
在[modules]一段中,启用如下模块(删除模块前的分号即可)
        NRPEListener.dll
        NSClientListener.dll
        FileLogger.dll
        CheckSystem.dll
        CheckDisk.dll
        CheckEventLog.dll
        CheckHelpers.dll
        SysTray.dll   
        CheckExternalScripts.dll
       
在[Settings]一段中,取消“allow_hosts”选项的注释,并将其指定为Nagios服务器IP;也可以留空以允许所有主机访问;
在[NSClient]一段中,取消“port”一项的注释,并确保其值为“12489”;
如果想为Nagios连接NSClient++时设置使用密码验正,在[Settings]一段中为“password”后的值指定所需设置的密码即可。此种情况下,Nagios中也需要进行相应的设置。此为可选项。

打开Windows的服务管理器,找到NSClient++(win32),在其“属性”的“登录”选项卡中,选中“本地系统帐户”一项中的“允许服务与桌面交互”。如下图所示。




接下来通过开始菜单“NSClient++”中“start NSClient++(win32)”启动NSClient++即可。此时系统托盘会显示NSClient++的托盘图标。


(2)配置Nagios

首先需要在Nagios的主配置文件中去掉如下行的注释:
#/usr/local/nagios/etc/objects/windows.cfg

接下来需要去编辑/usr/local/nagios/etc/objects/windows.cfg,首先为要监控的Windows主机添加一个“主机”定义。文件中默认已经有了一个样例,简单使用时,只需要将其中主机名、别名、地址等属性按需做一下修改即可。配置文件中,分号(后面的内容为注释信息。

define host{
        use             windows-server          ; 从Windows-server模板继承一些设定
        host_name       winserver               ; 被监控主机的显示名称
        alias           My Windows Server       ; 别名
        address         192.168.1.2             ; 被监控主机的IP地址
        }

若要对主机上私有资源或公开服务(Public Service)的监控通常需要事先将其定义为服务,而后使用相应的插件对其实施监控,并通过代理将监控结果发送给Nagios。比如,windows.cfg中定义了几个分别用来检测目标主机私有资源状态的服务,分别是NSClient++版本号、运行时长、CPU负载、内存利用率、磁盘使用率、W3SVC服务和Explore.exe进程运行状态,这些定义均可以简单修改其中"host_name"对应于前面定义的主机的主机名后便可直接使用。当然,您也可以根据自己的需要进行修改或定义新的Service。这里仅就配置文件中“CPU负载”服务进行简要说明,详细情况待到后面讲到“如何定义对象”时再行详细介绍。

define service{
        use                     generic-service
        host_name               winserver
        service_description     CPU Load
        check_command           check_nt!CPULOAD!-l 5,80,90
        }

其中“use”一项仍表示使用的模板;“host_name”需要对应于前面“定义主机”时定义的需要监控的主机的“主机名”,因为“服务”通常从属于“主机”,而“host_name”正是用来标明其从属主机的项;“service_description”是关于此服务的说明信息,类似服务名称,用以区别其它服务;“check_command”则用来标明要执行的插件脚本及脚本的运行参数,本示例中,将使用check_nt脚本检测CPU负载情况,表示如果CPU持续5分钟以上占用率超过80%则会产生一个“WARNING”信息,占用率持续5分钟以上超过90%则产生一个“CRITICAL”信息。脚本后面的每一个叹号(!)用来表示引用的一个参数。

此外,如果您在Windows主机上为NSClient++设定了密码,则接下来您还需要去编辑/usr/local/nagios/etc/objects/commands.cfg文件,为check_nt插件指定相应的访问密码。方法是为如下定义中command_line一行中的“-v”之前添加“-s PASSWORD”选项,其中的PASSWORD即为您为NSClient++设置的密码。

define command{
        command_name    check_nt
        command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 12489 -v $ARG1$ $ARG2$
        }

(3)重启Nagios进程
首先使用如下命令检测一下修改后的配置文件语法是否正确:
# /usr/local/nagios/bin/nagios  -v  /usr/local/nagios/etc/nagios.cfg

如果没有什么错误就可以重启Nagios了:
# service nagios restart

(二)监视公开服务

“服务”总是从属于“主机”,这里的公开服务也不例外。因此,为了监视公开服务,必须事先定义其所在的主机。其次,Nagios服务器上要存在监视所需要用到的脚本,同时,也需要事先将此插件定义为“commands(命令)”。

本节只是为了简单演示如何监视Windows主机的公开服务,因此这里将以最常见的IIS服务为例来进行说明,并且以前面第一部分中定义的Windows主机为服务所从属的主机。此外,监控HTTP服务所需要的插件check_http是Nagios官方提供的插件,位于/usr/local/nagios/libexec目录中,且已经定义为了commands。

为了实现本次监视的过程,您需要事先在Windows主机上配置好IIS服务并启动之。

接下来去定义要监视的服务。这需要去Nagios服务器上编辑/usr/local/nagios/etc/objects/windows.cfg配置文件,在文件尾部添加类似下面的内容:
define service{
        use                        generic-service
        host_name                winserver
        service_description         IIS Server
        check_command                check_http
}

如果您需要监视更为详细的内容,可以参照check_http插件帮助信息进行设定。例如,若是监视的http服务工作于8080端口,则可将前面定义中的check_command行改换为如下行:
        check_command                check_http!-p 8080

等配置完毕后需要重启Nagios服务方可生效。
# service nagios restart



有关服务配置、定义等的更详细请参照后文的章节。






未完,待续……

参考文献:官方文档

[ 本帖最后由 marion 于 2009-8-13 08:40 编辑 ]

论坛徽章:
0
发表于 2009-08-12 09:12 |显示全部楼层
占位,以续帖……

论坛徽章:
0
发表于 2009-08-12 09:13 |显示全部楼层
占位,以续帖……

论坛徽章:
0
发表于 2009-08-12 09:33 |显示全部楼层
不错 精品

论坛徽章:
221
15-16赛季CBA联赛之吉林
日期:2017-12-11 12:51:59黑曼巴
日期:2019-04-12 13:40:0515-16赛季CBA联赛之广东
日期:2019-04-23 10:41:1215-16赛季CBA联赛之辽宁
日期:2019-05-06 13:03:2815-16赛季CBA联赛之山西
日期:2019-05-09 10:56:5815-16赛季CBA联赛之青岛
日期:2019-05-17 13:57:0515-16赛季CBA联赛之新疆
日期:2019-06-10 13:39:0515-16赛季CBA联赛之天津
日期:2019-07-08 15:04:4519周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-周
日期:2019-09-06 18:46:4715-16赛季CBA联赛之天津
日期:2019-02-27 11:24:07
发表于 2009-08-12 10:43 |显示全部楼层
这个不错,以前就帮前公司搭建过一个这个环境,邮件,短信报警,非常好用。

论坛徽章:
0
发表于 2009-08-12 13:41 |显示全部楼层
学习一下,目前正在了解LINUX

论坛徽章:
0
发表于 2009-08-12 15:31 |显示全部楼层
非常喜欢开源的东西,但优化起来比较麻烦,除非你是这个方面的专家,不知道是否存在这方面的论坛呢

论坛徽章:
0
发表于 2009-08-13 08:42 |显示全部楼层
原帖由 聪明笨小孩 于 2009-8-12 09:33 发表
不错 精品


谢谢不吝赞誉,谢谢支持。

论坛徽章:
0
发表于 2009-08-22 09:42 |显示全部楼层

回复 #1 marion 的帖子

楼主,太感谢了,期待续期

论坛徽章:
0
发表于 2009-08-24 10:23 |显示全部楼层
太详细了,谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP