Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设置,打印机等。

主要功能

网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)

主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin)

可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)

可以通过配置Nagios远程执行插件远程执行脚本

远程监控支持SSH或SSL加通道方式进行监控

简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shell scripts、C++、Perl、ruby、Python、PHP、C#等)

包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)

可并行服务检查

能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查

当服务或主机出现问题时发出通告,可通过email, pager, sms 或任意用户自定义的plugin进行通知

能够自定义事件处理机制重新激活出问题的服务或主机

自动日志循环

支持冗余监控

包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等

二、Nagios工作原理

Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功能都是通过各种插件来完成的。

Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。

Nagios可以识别4种状态返回信息,即 0(OK)表示状态正常/绿色、1(WARNING)表示出现警告/×××、2(CRITICAL)表示出现非常严重的错误/红色、3(UNKNOWN)表示未知错误/深×××。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。

Nagios 通过NRPE 来远端管理服务

1. Nagios 执行安装在它里面的check_nrpe 插件,并告诉check_nrpe 去检测哪些服务。

2. 通过SSL,check_nrpe 连接远端机子上的NRPE daemon

3. NRPE 运行本地的各种插件去检测本地的服务和状态(check_disk,..etc)

4. 最后,NRPE 把检测的结果传给主机端的check_nrpe,check_nrpe 再把结果送到Nagios状态队列中。

5. Nagios 依次读取队列中的信息,再把结果显示出来。

下面进行安装

# yum install -y gcc glibc glibc-common gd  xinetd openssl-devel


# useradd -s /sbin/nologin nagios

# mkdir /usr/local/nagios

# chown -R nagios.nagios /usr/local/nagios

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.4.3.tar.gz

# tar zxvf nagios-3.4.3.tar.gz

# ./configure --prefix=/usr/local/nagios

# make all

报下面错

Nagios监控服务的搭建_第1张图片

其实它是要制作目标文件/include/locations.h,这个是头文件,可是这个头文件需要broker.o文件

这个文件是由perl安装包提供的,你可以先执行下面命令安装perl,然后再重新./configure一下,再make all就没有问题啦

yum install perl -y

# make install

# make install-init

# make install-commandmode

# make install-config

# chkconfig --add nagios

# chkconfig --level 35 nagios on

# chkconfig --list nagios

验证程序是否被正确安装

切换目录到安装路径(这里是/usr/local/nagios),看是否存在etc、bin、sbin、share、var 这五个目录,如果存在则可以表明程序被正确的安装到系统了。Nagios 各个目录用途说明如下:

bin
Nagios 可执行程序所在目录

etc
Nagios 配置文件所在目录

sbin
Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录

share
Nagios网页文件所在的目录

libexec
Nagios 外部插件所在目录

var
Nagios 日志文件、lock 等文件所在的目录

var/archives
Nagios 日志自动归档目录

var/rw
用来存放外部命令文件的目录

下面安装Nagios的插件

# wget https://nagios-plugins.org/download/nagios-plugins-2.2.1.tar.gz

# tar xzvf nagios-plugins-2.2.1.tar.gz

# cd nagios-plugins-2.2.1

# ./configure --prefix=/usr/local/nagios

# make && make install

下面安装apache和php对web界面的支持

# wget http://archive.apache.org/dist/httpd/httpd-2.2.23.tar.gz

# tar zxvf httpd-2.2.23.tar.gz

# cd httpd-2.2.23

#  ./configure --prefix=/usr/local/apache2

# make && make install

如果出现以下错误

wKiom1m6ZZfwdAsaAAGm5ly6WE8708.png

则在编译时入加 --with-included-apr 即可解决。

# wget http://101.96.10.63/jp2.php.net/distributions/php-5.5.38.tar.gz

# tar -xzvf php-5.5.38.tar.gz 

# cd php-5.5.38

# ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs 

apxs是一个为Apache HTTP服务器编译和安装扩展模块的工具,用于编译一个或多个源程序或目标代码文件为动态共享对象,使之可以用由mod_so提供的LoadModule指令在运行时加载到Apache服务器中。

这个可能会出现下面情况

这个是说你没有安装libxml这个软件包,我就用yum安装,发现提示已经安装了,我觉得有可能是编译包没有安装,果然没错,是libxml这个编译包没有安装

# yum install libxml2

# yum install libxml2-devel

然后再回去执行./configure命令就可以啦

# make && make install

# vi /usr/local/apache2/conf/httpd.conf

找到:

User daemon 
Group daemon

修改为

User nagios 
Group nagios

然后找到

 
  DirectoryIndex index.html 

修改为

 
  DirectoryIndex index.html index.php 

接着增加如下内容:

AddType application/x-httpd-php .php

实质就是添加可以执行php的文件类型,比如你再加上一行“AddType application/x-httpd-php .htm”,则.htm文件也可以执行php程序了

为了安全起见,一般情况下要让nagios 的web 监控页面必须经过授权才能访问,这需要增加验证配置,即在httpd.conf 文件最后添加如下信息: 

#setting for nagios 
ScriptAlias /nagios/cgi-bin "/usr/local/nagios/sbin" 
 
     AuthType Basic 
     Options ExecCGI 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
     AuthName "Nagios Access" 
     AuthUserFile /usr/local/nagios/etc/htpasswd             //用于此目录访问身份验证的文件 
     Require valid-user 
 Alias /nagios "/usr/local/nagios/share" 
 
     AuthType Basic 
     Options None 
     AllowOverride None 
     Order allow,deny 
     Allow from all 
     AuthName "nagios Access" 
     AuthUserFile /usr/local/nagios/etc/htpasswd 
     Require valid-user 


创建apache目录验证文件 

在上面的配置中,指定了目录验证文件htpasswd,下面要创建这个文件:

# /usr/local/apache2/bin/htpasswd -c /usr/local/nagios/etc/htpasswd username

这样就在/usr/local/nagios/etc 目录下创建了一个htpasswd 验证文件,当通过http://192.168.1.108/nagios/ 访问时就需要输入用户名和密码了。

启动apache 服务

# /usr/local/apache2/bin/apachectl start

来源: http://www.cnblogs.com/mchina/archive/2013/02/20/2883404.html