Nagios是一款开源的免费网络监视工具,可以监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,在系统或服务状态异常时发出邮件或短信报警,第一时间通知网站运维人员。流量监控不是他的强项,流量监控建议使用cacti(可以绘制非常直观的图形。
nagios主要可以监控以下方面:
主机是否宕机(通过ping命令,如果ping不通会认为主机属于宕机状态,但不影响所监控的其他服务)
服务器资源(cpu使用率、硬盘剩余空间等)
网络服务(smtp\pop3\http\)
监控网络设备(路由器、交换机等)
nagios工作原理
Nagios本身不包括监控主机和服务的功能。所有的监控、监测功能都是通过各种插件来完成的。安装完nagios之后,在nagios主目录下的/libexex里面放有nagios自带的插件,如:check_disk是检查磁盘空间的插件,check_load是检查cpu负载的插件,每一个插件可以通过运行./check_xxx -h命令来检查其使用方法和功能。
nagios的四种监控状态
Nagios可以识别四种状态返回信息。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依次读取队列中的信息,再把结果显示出来。
实验拓扑
实验步骤:
1.搭建Nagios监控系统
(1)关闭防火墙
(2)创建nagios用户和用户组
(3)安装支持软件和编译安装Nagios
注意:安装install-webconf是为了生成配置文件,后面在/etc/httpd/conf/httpd.conf最后添加的信息就不用手工打了,可以到/etc/httpd/conf.d/nagios.conf文件中复制。
命令接释:
make install //安装主程序,CGI和HTML文件
make install-init //在/etc/rc.d/init.d安装启动脚本
make install-commandmode //配置目录权限
make install-config //安装示例配置文件
make install-webconf //安装nagios的web接口,会在/etc/httpd/conf.d目录中创建nagios.conf文件。
(4)验证安装是否成功要查看/usr/local/nagios目录是否如下
bin:nagios执行程序所在的目录,nagios文件即为主程序。
etc:nagios配置文件目录,当make install-config完以后etc下面就会出现默认的配置文件。
sbin:nagios CGI文件所在目录,这里存放的是一些外部命令执行程序。
share:nagios网页文件目录,存放一些html文件。
var:nagios日志文件、pid等文件目录。
Libexec:系统默认插件的存储位置
(5)安装Nagios插件
Nagios提供的各种监控功能基本上是通过插件来完成的
如果要获取远程主机上的本地资源或属性,如CPU利用率、磁盘利用率,需要借助外部构件NRPE来完成。
(6)为了安全起见,一般情况下要上Nagios的Web监控页面必须经过授权才能访问,这就需要增加验证设置,即在/etc/httpd/conf/httpd.conf配置文件的最后添加如下信息
我们可以到 /etc/httpd/conf.d/nagios.conf 文件中复制,不用手打。
使用:r导入即可
导入即可,不用修改,保存退出
(7)执行htpasswd命令添加一个访问nagios页面的授权用户
用户名和密码都是nagiosadm
(8)启动Nagios和httpd服务
(9)在浏览器上进行访问
2.配置Nagios监控系统
1)nagios的默认配置文件:
Nagios.cfg:主配置文件,定义各种配置文件的名称和位置
Cgi.cfg:控制CGI的配置文件
Resource.cfg:资源文件,定义各种变量,以便于其他文件调用
Objects:其他配置文件存放目录,此目录下主要有:
Command.cfg:命令配置文件,定义各种命令格式,以备其他文件调用
contacts.cfg:联系人和组,发邮件等告警信息时可以调用
localhost.cfg:监控本机的配置文件
timeperiods.cfg:定义监控时间的配置文件,便于其他文件调用
Hostgroups.cfg:定义监控的主机(组),需手动创建。
2)配置文件之间的关系
在nagios的配置过程中涉及的几个定义有主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等。从这些定义可以看出,nagios各个配置文件之间互为关联、彼此引用的。成功配置出一台nagios监控系统,必须要弄清楚每个配置文件之间依赖与被依赖的关系,最重要的有四点
n 定义监控那些主机,主机组,服务和服务组
n 定义这个监控要用什么命令实现
n 定义监控的时间段
n 定义主机或服务器出现问题时要通知的联系人和联系人祖
3)配置nagios
为了能更清楚的说明问题,同时也为了维护方便,建议将nagios各个定义的对象创建独立的配置文件。
创建conf目录来定义host主机
创建hostgroups.cfg文件来定义主机组
用默认的contacts.cfg文件来定义联系人和联系人组
用默认的commands.cfg文件来定义命令
用默认的timeperiods.cfg来定义监控时间段
用默认的templetes.cfg文件作为资源引用文件
初步了解Nagios的配置文件后,接下来开始修改配置文件
(1)修改 /usr/local/nagios/etc/nagios.cfg 主配置文件
(2)修改 /usr/local/nagios/etc/objects/commands.cfg 文件
(3)修改 /usr/local/nagios/etc/objects/contacts.cfg 文件
解释:
定义联系人名称
别名
监控主机服务7X24小时
监控主机对角应用服务7X24小时
警告级别参数
定义主机在什么状态下需要发送通知给使用者,d即down,表示宕机状态;u即unreachable,不可到达状态;r即recovery,表示重新恢复状态
调用邮件名称
调用飞信名称
定义发送到哪个电子邮箱
(4)修改 /usr/local/nagios/etc/objects/hostgroups.cfg 文件,定义主机组
(5)在 /usr/local/nagios/etc/conf 下面新建192.168.1.20.cfg文件(用于监控192.168.1.20的主机存活,负载,进程)(所有内容需要手工输入)
同理可得,新建本机的.cfg文件也是如此,只要把相对应的IP换成本机IP即可
命令解释:
define host{
use linux-server //定义使用的模板
host_name nagios //被监控主机的名称,最好别带空格
alias nagios //别名
address 127.0.0.1 //被监控主机的IP地址
check_command check-host-alive
normal_check_interval 3 //正常检测间隔时间
retry_check_interval 2 //重试检测间隔时间
//监控的命令check-host-alive,这个命令来自commands.cfg,用来监控主机是否存活
max_check_attempts 5 //检查失败后重试的次数
check_period 24x7 //检查的时间段24x7,同样来自timeperiods.cfg中定义
notification_interval 10 //提醒的间隔,每隔10秒提醒一次
notification_period 24x7 //提醒的周期, 24x7,同样来自timeperiods.cfg中定义
contact_groups admins //联系人组,上面在contactgroups.cfg中定义的admins
notification_options d,u,r //指定什么情况下提醒
}
(6)添加联系人组,修改文件 /usr/local/nagios/etc/objects/contacts.cfg 文件
(7)重启nagios服务
(8)访问网页查看状态(注意:关闭selinux或者开例外)
或者:
如果你开启了selinux 需要配置如下二步:
chcon -R -t httpd_sys_content_t /usr/local/nagios/sbin/
chcon -R -t httpd_sys_content_t /usr/local/nagios/share/
3.配置被控端192.168.1.20(mysql和web)
(1)安装支持软件和新建nagios用户
(2)安装nagios插件
(3)修改配置文件
(4)启动nrpe
(5)设置防火墙规则
(6)在Nagios监控服务器上测试NRPE运行是否正常
(7)在浏览器访问
通过以上这些操作,管理员就可以在网页上实时地监控服务器的运行状况,并且能在出现问题时及时解决。
转载于:https://blog.51cto.com/13555753/2083735