·nagios特征
Nagios 是一款用于系统和网络监控的应用程序。它可以在你设定的条件下对主 机和服务进行监控,在状态变差和变好的时候给出告警信息。
1.网络服务监控(SMTP、POP3、HTTP、NNTP、ICMP、SNMP、FTP、SSH)
2.主机资源监控(CPU load、disk usage、system logs),也包括Windows主机(使用NSClient++ plugin)
3.可以指定自己编写的Plugin通过网络收集数据来监控任何情况(温度、警告……)
4.可以通过配置Nagios远程执行插件远程执行脚本
5.远程监控支持SSH或SSL加通道方式进行监控
6.简单的plugin设计允许用户很容易的开发自己需要的检查服务,支持很多开发语言(shellscripts、C++、Perl、ruby、Python、PHP、C#等)
7.包含很多图形化数据Plugins(Nagiosgraph、Nagiosgrapher、PNP4Nagios等)
8.可并行服务检查
9.能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查
10.当服务或主机出现问题时发出通告,可通过email, pager, sms或任意用户自定义的plugin进行通知
11.能够自定义事件处理机制重新激活出问题的服务或主机
12.自动日志循环
13.支持冗余监控
14.包括Web界面可以查看当前网络状态,通知,问题历史,日志文件等
Nagios原理
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控、检测功 能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。安装完成后,在nagios主目录下的/libexec里放有nagios自带的可以使用的所有插件,如,check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx –h 来查看其使用方法和功能。
Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。
Nagios 系统提供了一个插件NRPE。Nagios 通过周期性的运行它来获得远端服务器的各种状态信息。它们之间的关系如下图所示:
Nagios的四种状态
状态 | 代码 | 颜色 | 数字 |
正常 | ok | 绿色 | 0 |
警告 | warning | *** | 1 |
严重 | critical | 红色 | 2 |
未知 | unknown | 深*** | 3 |
---------------------------------------------------------------------------------
安装nagios
1.配置yum
[root@localhost /]# mount /dev/cdrom/media/
[root@localhost /]# vim/etc/yum.repos.d/rhel-debuginfo.repo
[rhel-debuginfo]
name=RedHat Enterprise Linux $releasever - $basearch -Debugbaseurl=file:///media/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
2.安装依赖包
[root@localhost /]# yum -y install gccglibc glibc-common gd gd-devel httpd php mysql
3.修改配置文件支持php解析
[root@localhost etc]# vim php.ini
501default_charset = "utf-8"
[root@localhost /]# vim/etc/httpd/conf/httpd.conf
200LoadModule php5_module modules/libphp5.so
769AddType application/x-httpd-php .php .phtml
391DirectoryIndex index.html index.html.var index.php
4.创建的用户
[root@localhost /]# useradd nagios
创建一个用户组用于从web接口处执行外部命令,将用户nagios和apache添加到这个组
[root@localhost /]# groupadd nagcmd
[root@localhost /]# usermod -G nagcmdapache
[root@localhost /]# usermod -G nagcmdnagios
5.安装nagios
[root@localhost /]# tar -zxvfnagios-3.2.0.tar.gz -C /usr/src/
[root@localhost /]# cd/usr/src/nagios-3.2.0/
[root@localhost nagios-3.2.0]#./configure --with-command-group=nagcmd
[root@localhost nagios-3.2.0]# make all 编译
[root@localhost nagios-3.2.0]# makeinstall
安装nagios主程序的cgi和html文件
[root@localhost nagios-3.2.0]# makeinstall-init
在/etc/rc.d/init.d目录下创建nagios启动脚本
[root@localhost nagios-3.2.0]# make install-commandmode
配置目录权限
[root@localhost nagios-3.2.0]# makeinstall-config
创建nagios示例配置文件,这里的安装路径是 /usr/local/nagios/etc
[root@localhost nagios-3.2.0]# makeinstall
[root@localhost objects]# pwd
/usr/local/nagios/etc/objects
[root@localhost objects]# vim contacts.cfg
指定接收nagios邮件的地址,默认是本机的nagios的用户
[root@localhost objects]# service sendmail restart
[root@localhost nagios-3.2.0]# chkconfig--add nagios
[root@localhost nagios-3.2.0]# chkconfig--level 35 nagios on
6.nagios目录文件介绍
bin | Nagios 可执行程序所在目录 |
etc | Nagios 配置文件所在目录 |
sbin | Nagios CGI 文件所在目录,也就是执行外部命令所需文件所在的目录 |
share | Nagios网页文件所在的目录 |
libexec | Nagios 外部插件所在目录 |
var | Nagios 日志文件、lock 等文件所在的目录 |
var/archives | Nagios 日志自动归档目录 |
var/rw | 用来存放外部命令文件的目录 |
etc目录下文件
文件名或目录名 | 用途 |
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 主机的一个配置文件模板,默认没有启用此文件 |
7.nagios配置
[root@localhost nagios-3.2.0]# makeinstall-webconf
安装nagios的web配置配置文件到apache的conf.d下
[root@localhost nagios-3.2.0]# htpasswd-c /usr/local/nagios/etc/htpasswd.users nagiosadmin
创建一个用户用于登陆nagios的web接口不要更改nagiosadmin,不然在别的配置文件中也要更改
8.插件安装
nagios-plugins是官方提供的插件程序,nagios监控主机主要是通过插件完成的。
[root@localhost /]# tar -zxvfnagios-plugins-1.4.14.tar.gz -C /usr/src/
[root@localhost nagios-plugins-1.4.14]#./configure --with-nagios-user=nagios --with-nagios-group=nagios
[root@localhost nagios-plugins-1.4.14]#make &&make install
[root@localhost /]# service iptables
[root@localhost /]# setenforce 0
访问验证
Nagios监控windows主机
Nagios在配置方面非常灵活,默认的配置文件并不是必须的,可以使用,也可以创建 自己的配置文件,然后再在主配置nagios.cfg中引用即可
配置文件间的关系
nagios的配置文件是互为关联,相互引用的,Nagios的配置过程中需要定义的有主机,主机组,服务,服务组,联系人,联系人组,监控时间,和监控命令
Objects里面存放的是主配置文件nagios.cfg包含进去的文件,在nagios.cfg中就可以指定单独包含一个cfg,也可以包含一个目录,也就是该目录下所有的cfg文件都会包含进来
Nsclient++介绍
NSClient++是用来监控Windows主机时安装在Windows主机上的组件。被监控机上安装NSClient,,当监控主机将监控请求发给NSClient后,NSClient直接完成/监控,所有的监控是由NSClient完成的.不需要额外的插件。
nsclient++集成了非常多的插件nsca,nrpe等都支持,一般检测windows用check_nt插件
NSClient原理
Nsclient++安装
方框中可以全部打勾
注意关闭windows防火墙
查看是否启用了5666和12489端口
查看nsclient++服务是否启动
Nsclient++配置文件
当要修改监控主机的IP地址,或者忘记密码时可以修改这个文件
在linux主机测试插件check_nt是否能查询windows信息
-H 要查询的主机ip地址 -p指定端口 -v要查询的信息
配置检测一台windows主机的思路首先是安装nsclient++,这个前面已经安装好了,重点要说的是在linux上配置启动监控windows主机;中心点是要监控的主机一切围绕被监控的主机展开
修改文件前请全部备份
1.[root@localhostobjects]# vim windows.cfg
[root@localhostetc]# pwd
/usr/local/nagios/etc
[root@localhostetc]# vim nagios.cfg
重新启动服务,这样一台主机就添加玩了,
是不是觉得很简单,嗯,是的我想告诉你,你想多了,功能这么强大的nagios会这么简单?开玩笑,,咳咳,回归正题,其实添加一台主机也没那么难下面来添加第二台windows主机,
----------------------
先把检测的命令写好
[root@localhost objects]# vim commands.cfg
里面的这些命令我们都可以引用
[root@localhostobjects]# vim windows1.cfg 定义监控的主机
如果要监控多个服务,可以多谢几个define service
[root@localhost etc]# pwd
/usr/local/nagios/etc
[root@localhost etc]# vim nagios.cfg 添加windows1.cfg
重启服务就可以了
================================
监控linux主机
nagios监控linux服务器, 都是依靠插件去完成的,而监控linux主要使用NRPE插件,
NRPE总共由两部分组成:
check_nrpe插件,运行在监控主机上。
NRPE daemon,运行在远程的linux主机上(通常就是被监控机)
整个的监控过程:(如下图)
当Nagios需要监控某个远程linux主机的服务或者资源情况时:
1).nagios运行check_nrpe插件,我们要在nagios配置文件中告诉它要检查什么.
2).check_nrpe插件会通过SSL连接到远程的NRPEdaemon.
3).NRPE daemon会运行相应的nagios插件来执行检查本地资源或服务.
4).NRPE daemon将检查的结果返回给check_nrpe插件,插件将其递交给nagios做处理.
注意:NRPE daemon需要nagios插件安装在远程被监控linux主机上,否则,daemon不能做任何的监控. 别外因为它们间的通信是加密的SSL,所以在编译安装时都要加上选项, ./configure--enable-ssl --with-ssl-lib=/lib/,否则也会出错.
需要提前安装openssl
在监控主机上安装nrpe插件
[root@localhost /]# tar -zxvf nrpe-2.12.tar.gz -C /usr/src/
[root@localhost nrpe-2.12]# ./configure --enable-ssl --with-ssl-lib=/usr/lib/
[root@localhost nrpe-2.12]# make all
[root@localhost nrpe-2.12]# make install-plugin
配置被监控端
[root@localhost /]# useradd nagios
安装nagios-plugin
[root@localhost /]# tar -zxvf nagios-plugins-1.4.14.tar.gz -C/usr/src/
[root@localhost /]# cd /usr/src/nagios-plugins-1.4.14/
[root@localhost nagios-plugins-1.4.14]# ./configure--with-nagios-user=nagios --with-nagios-group=nagios --enable-redhat-pthread-workaround(非必加,如果出现
checking for redhat spopen problem…时可以加上这个选项,关于他是干什么的,目前还不知道)
[root@localhost nagios-plugins-1.4.14]# make
[root@localhost nagios-plugins-1.4.14]# make install
[root@localhost nagios-plugins-1.4.14]# chown -R nagios:nagios/usr/local/nagios/
在被监控主机上安装nrpe插件
创建运行nrpe的用户
[root@localhost /]# useradd nagios
[root@localhost /]# tar -zxvf nrpe-2.12.tar.gz -C /usr/src/
[root@localhost /]# cd /usr/src/nrpe-2.12/
[root@localhost nrpe-2.12]# ./configure --enable-ssl--with-ssl-lib=/usr/lib/
[root@localhost nrpe-2.12]# make all
[root@localhost nrpe-2.12]# make install-plugin
[root@localhost nrpe-2.12]# make install-daemon
[root@localhost nrpe-2.12]# make install-daemon-config
配置nrpe
[root@localhost etc]# pwd
/usr/local/nagios/etc
[root@localhost etc]# vim nrpe.cfg
79 allowed_hosts=100.1.1.100 允许来检测的IP地址,多台主机用“,”隔开
[root@localhostetc]# /usr/local/nagios/bin/nrpe -c nrpe.cfg -d 启动nrpe
检查是否启动
[root@localhostnagios]# netstat -anpt|grep nrpe
tcp 0 0 0.0.0.0:5666 0.0.0.0:* LISTEN 6939/nrpe
在监控端执行
[root@localhostlibexec]# ./check_nrpe -H 100.1.1.103
NRPE v2.12 查看被监控端nrpe的版本
在被监控端如果出现:
[root@localhostlibexec]# ./check_nrpe -H 127.0.0.1
CHECK_NRPE:Error - Could not complete SSL handshake.
请修改/usr/local/nagios/etc/nrpe.cfg
[root@localhostetc]# vim nrpe.cfg
重新启动nrpe进程
[root@localhostlibexec]# ./check_nrpe -H 127.0.0.1
NRPE v2.12
添加一台监控主机(在监控主机上)
[root@localhostobjects]# vim commands.cfg
[root@localhostobjects]# cp localhost.cfg linux103.cfg
[root@localhostobjects]# vim linux103.cfg
[root@localhostetc]# vim nagios.cfg 添加
重启服务就可以看到新添加的主机了