Linux(CentOS)系统通过yum安装Nagios监视软件与配置

Nagios通常由一个主程序(Nagios)、一个插件程序(Nagios-plugins)和四个可选的ADDON(NRPE、NSCA、NSClient++和NDOUtils)组成。Nagios的监控工作都是通过插件实现的,因此,Nagios和Nagios-plugins是服务器端工作所必须的组件。而四个ADDON中

(1)NRPE:用来在监控的远程Linux/Unix主机上执行脚本插件以实现对这些主机资源的监控

(2)NSCA:用来让 被监控的远程Linux/Unix主机主动将监控信息发送给Nagios服务器(这在冗余监控模式中特别要用到)

(3)NSClient++:用来监控 Windows主机时安装在Windows主机上的组件

(4)NDOUtils:则用来将Nagios的配置信息和各event产生的数据存入数据库,以实现 这些数据的快速检索和处理

这四个ADDON(附件)中,NRPE和NSClient++工作于客户端,NDOUtils工作于服务器端,而NSCA则需要同时安装在服务器端和客户端

1

在用一幅图片宏观上展示nagios在企业级应用的位置

2

有朋友疑问,既然cacti,和nagios都是网络监控工具,选用其一不是减少很多麻烦,在这里笔者建议两者结合使用,还要结合后文所提到的ntop,以作者的理解,简单阐述下cacti和nagios的优缺点:
cacti:在监控方面有良好的绘图,cacti在流量和图型塑造上要强于nagios,但是在故障分析上有些略逊,而且报警机制也有待完善,这时nagios就派上用场了。
nagios :适合监视大量服务器上面的大批服务是否正常, 重点并不在图形化的监控, 其集成的很多功能例如报警,都是 cacti 没有或者很弱的。但在绘图以及图型塑造方面精细度比cacti要弱。
通过两者比较,可以很清晰的了解各自的用途。

Nagios的主要功能特点简介:
- 监视网络服务 (SMTP, POP3, HTTP, NNTP, PING等)
- 监视主机资源 (进程, 磁盘等)
- 简单的插件设计可以轻松扩展Nagios的监视功能
- 服务等监视的并发处理
- 错误通知功能 (通过email, pager, 或其他用户自定义方法)
- 可指定自定义的事件处理控制器
- 可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等
- 可以通过手机查看系统监控信息
一、实现原理

3
a、Nagios 执行 check_nrpe 插件,check_nrpe 去检测services 定义的服务。
b、通过 SSL,check_nrpe 连接被监控主机的 NRPE daemon
c、NRPE 运行本地的各种插件去检测本地和远端的服务和状态(check_disk,..etc)
d、最后,NRPE 把检测的结果传给主机端的 check_nrpe,check_nrpe 再把结果送到 Nagios状态队列中。
e、Nagios 依次读取队列中的信息,再把结果显示出来。

配置
Nagios自己定义了一套规则用于配置文件,其中最重要的概念就是”对象”----object.通俗的理解:假定我们首先定义了”性别”这个对象,它的值只可能是男,女,人妖等等,然后定义某人为一个对象,例如张三,定义张三的时候有”性别”这个属性,它的值就必须来源了之前定义的性别这个对象,要么是男是女,或者是人妖.在Nagios里面定义了一些基本的对象,一般用到的有:

联系人
contact
出了问题像谁报告?一般当然是系统管理员了
监控时间段
timeperiod
7X24小时不间断还是周一至周五,或是自定义的其他时间段
被监控主机
host
所需要监控的服务器,当然可以是监控机自己
监控命令
command
nagios发出的哪个指令来执行某个监控,这也是自己定义的
被监控的服务
service
例如主机是否存活,80端口是否开,磁盘使用情况或者自定义的服务等

另外,多个被监控主机可以定义为一个主机组,多个联系人可以被定义为一个联系人组,多个服务还能定义成一个服务组呢.
回到上面的例子,定义张三需要之前定义的性别,我们定义一个被监控的服务,当然就要指定被监控的主机,需要监控的时间段,要用哪个命令来完成这个监控操作,出了问题向哪个联系人报告.所有这些对象绝对多数都是需要我们手动定义的,这就是nagios的安装显得复杂的地方

测试环境
主监控机:192.168.1.26
被监控机:192.168.1.112

前提先自行安装好Apache+php
yum -y install httpd php

主监控机设置:
1、安装epel源
# rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm     这里应该对应你服务器的版本

2、安装nagios、nagios-plugin与nrpe
# yum -y install nagios nagios-nrpe nagios-plugins nagios-plugins-all

3、修改Nagios的WEB登录接口的密码(默认用户和密码:nagiosadmin),用户认证配置
# htpasswd /etc/nagios/passwd nagiosadmin
New password:
Re-type new password:
Adding password for user nagiosadmin

4、修改/etc/httpd/conf.d/nagios.conf保存用户密码文件位置(如果用默认路径则无需修改)
vi /etc/httpd/conf.d/nagios.conf
AuthUserFile /etc/nagios/passwd 修改成–> AuthUserFile /etc/nagios/htpasswd.users
保存退出

5、修改cgi.cfg文件,找到use_authentication=1 这行,把1改成0(取消认证)
vi  /etc/nagios/cgi.cfg

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

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

7、改变E-MAIL 地址
vi /usr/local/nagios/etc/objects/contacts.cfg

6、如果上面的语法检查没有问题,接下来就可以正式启动nagios服务了,启动apache与nagios
# /etc/init.d/httpd restart
# /etc/init.d/nagios start

7、通过web界面查看nagios:
http://your_nagios_IP/nagios

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

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

被监控机设置:
1、安装需要软件
# yum -y install nagios-plugins nagios-nrpe nagios-plugins-nrpe nagios-plugins-all

2、配置nrpe
# vi /etc/nagios/nrpe.cfg 增加监控机的地址或域名
allowed_hosts=127.0.0.1,192.168.1.26

3、修改/etc/hosts.allow增加监控机ip
# echo 'nrpe:192.168.1.26' >> /etc/hosts.allow

4、检查 NRPE 是否正常:
在被监控机上
/usr/lib64/nagios/plugins/check_nrpe -H 127.0.0.1
查看相应的端口:netstat -an |grep 5666
防火墙开启5666 允许局域网IP或固定IP连接
在监控主机上
/usr/lib64/nagios/plugins/check_nrpe -H $目标主机地址
都应该可以输出 NRPE 的版本: NRPE v2.12

5、启动 NRPE 守护进程:
# /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
可以将此命令加入 /etc/rc.local ,以便开机自动启动。
echo "/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d" >> /etc/rc.local

6、检查可监控的服务
在被监控端的 /etc/nagios/nrpe.cfg 文件中,可以看到这样的配置:
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
这是用来检查 CPU 负载的。
# /usr/lib64/nagios/plugins/check_nrpe -H 192.168.1.112 -c check_load
运行上面的命令,即可以看到被监控端192.168.1.112的load信息
如果需要自定参数则使用下面命令
command[check_load]=/usr/local/nagios/libexec/check_load -w $ARG1$ -c $ARG2$
并开启dont_blame_nrpe =1
开启参数将会带来一定的安全风险
被监控机重启nrpe
ps aux|grep nrpe
kill $pid
/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d

再回到监控机:
添加nrpe的定义
# vi /etc/nagios/objects/commands.cfg

在文件末尾添加以下内容:
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}

增加主机监控配置项112.cfg
在/etc/nagios/objects/ 目录下新建文件:112.cfg

define host{
	use linux-server
	host_name 192.168.1.112
	alias 192.168.1.112
	address 192.168.1.112
}
define service{
	use generic-service
	host_name 192.168.1.112
	service_description load
	check_command check_nrpe!check_load
}
define service{
	use generic-service
	host_name 192.168.1.112
	service_description PING
	check_command check_ping!100.0,20%!200.0,50%
	max_check_attempts 5
	normal_check_interval 1
}
define service{
	use generic-service
	host_name 192.168.1.112
	service_description FTP
	check_command check_ftp!21
	max_check_attempts 5
	normal_check_interval 1
}
define service{
	use generic-service
	host_name 192.168.1.112
	service_description SSH
	check_command check_ssh
	max_check_attempts 5
	normal_check_interval 1
}
define service{
	use generic-service
	host_name 192.168.1.112
	service_description HTTP
	check_command check_http
	max_check_attempts 5
	normal_check_interval 1
}

并把112.cfg添加到nagios主配置项
# echo "cfg_file=/etc/nagios/objects/112.cfg" >> /etc/nagios/nagios.cfg
其他机器如法炮制即可

重启监控机nagios
service nagios reload
访问http://localhost/nagios就可以看到新增的机器了

Nagios的四种状态分别为:
OK 表示服务正常地工作。
WARNING 表示服务处于警告状态。
CRITICAL 表示服务处于危险状态。
UNKNOWN 表示服务处于未知状态.

Nagios主配文件nagios.conf简介
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg //联系人/组配置文件
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg //本机配置文件
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg //监视时段配置文件
cfg_file=/usr/local/nagios/etc/objects/commands.cfg //监视脚本配置
cfg_file=/usr/local/nagios/etc/objects/templates.cfg //监视服务,报警配置
cfg_file=/usr/local/nagios/etc/objects/switch.cfg //监视路由
cfg_file=/usr/local/nagios/etc/objects/windows.cfg //监视微软

验证插件是否安装成功:
ls -l /usr/lib64/nagios/plugins/
会显示安装的插件文件,即所有的插件都安装在 plugins 这个目录下

Nagios有三种报警方式:
一、声音报警
二、电子邮件报警
三、手机短讯报警
以下是邮件报警的配置过程:
1、开启系统自带的sendmail邮件系统
# service sendmail start
如果没有安装,可以yum一下
# yum install -y sendmail*
然后重新启动sendmail服务:
# service sendmail restart
# setenforce 0
# service iptables stop
测试发送邮件:
# echo "test" | mail test@163.com
我系统在关掉iptables和selinux前提下是正常的
2、配置nagios中报警邮箱
vi /etc/nagios/objects/contacts.cfg
define contact{
contact_name                    nagiosadmin             ; Short name of user
use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
alias                           Nagios Admin            ; Full name of user
email                           test@163.com   ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******
}
在email那里加上自己的邮箱,如果有多个可以用逗号隔开
最后重启服务:
# service nagios restart
然后随便关掉一些服务测试一下效果!

bin/mail会默认使用本地sendmail发送邮件,这样要求本地的机器必须安装和启动Sendmail服务,配置非常麻烦,而且会带来不必要的资源占用。而通过修改配置文件可以使用外部SMTP服务器,可以达到不使用sendmail而用外部的smtp服务器发送邮件的目的
LINUX下通过外部SMTP发邮件的方法(直接抛弃sendmail和postfix)
#执行下面的命令
#sendmial
service sendmail stop
chkconfig sendmail off
#postfix
service postfix stop
chkconfig postfix off

#再狠一点就直接卸载吧..
yum remove sendmail
yum remove postfix

然后修改修改/etc/mail.rc (/etc/nail.rc)(如果没有则安装yum install mailx),增加一下类似N行,指定外部的smtp服务器地址、帐号密码等。
# vi /etc/mail.rc
set from=123456@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=123456
set smtp-auth-password=sbsbsbsb
set smtp-auth=login

然后通过命令来发送邮件
echo  hello word | mail -s "title" 123456@qq.com

可能出现的问题
1、nrpe 提示Connection refused by host
现象:当nrpe顺利安装完成之后,执行/usr/lib64/nagios/plugins/check_nrpe -H localhost,提示Connection refused by host
原因:没有启动nrpe
解决方案:
启动nrpe
/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
然后执行,netstat -an | grep 5666
显示:tcp        0      0 127.0.0.1:5666              0.0.0.0:*                   LISTEN
则启动成功。
然后再执行:/usr/lib64/nagios/plugins/check_nrpe -H localhost
返回:NRPE v2.12
2、

参考资料:
手把手实现企业级开源监控软件cacti+nagios+ntop整合(图解):http://www.178-go.com/archives/cacti-nagios-ntop.html
Linux 系统 通过yum安装Nagios:http://www.net527.com/caozuoxitong/Linux/4773.html
Nagios--运维监控软件--简易安装与配置:http://www.cnblogs.com/sbaicl/archive/2012/09/12/2677268.html

发表评论?

1 条评论。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据