Nagios简介
Nagios是一款开源的电脑系统和网络监视工具,能有效监控Windows、Linux和Unix的主机状态,交换机路由器等网络设备,打印机等。在系统或服务状态异常发出邮件或短信报警第一时间通知网站运维人员,在状态恢复后发出正常的邮件或者短信通知。
Nagios原名为:NetSaint,由Ethan Galstad开发并维护至今。NAGIOS是一个缩写形式。Nagios被开发在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 script,c++,Perl,Ruby,python,PHP,c#等)
- 包含很多图形化数据plugins(Nagiosgraph,Nagiosgrapher,PNP4Nagios等)
- 可并行服务检查
- 能够定义网络主机的层次,允许逐级检查,就是从父主机开始向下检查
- 当服务或主机出现问题时发出通告,可以通过email,pager,sms或任意用户自定义的plugin进行通知
- 能够自定义事件处理机制重新激活出问题的服务或主机
- 自动日志循环
- 支持冗余监控
- 包括web界面可以查看当前网络状态,通知,问题历史,日志文件等。
Nagios监控流程
Nagios工作原理
Nagios的功能是监控服务和主机,但是他自身并不包括这部分功能,所有的监控,检测功能都是通过各种插件来完成的。
启动Nagios后,它会周期性的自动调用插件去检测服务器状态,同时Nagios会维持一个队列,所有插件返回来的 状态信息都进入队列,Nagios每次都从队首开始读取信息,并进行处理后,把状态结果通过Web显示出来。
Nagios提供了许多插件,利用这些插件可以方便的监控很多服务状态。按章完成后,在Nagios主目录下的/libexec里放有Nagios自带的可以使用的所有插件,如:check_disk是检查磁盘空间的插件,check_load是检查CPU负载的,等等。每一个插件可以通过运行./check_xxx_ -h 来查看其使用方法和功能。
Nagios可以识别四种状态返回信息,即0(ok)表示状态正常/绿色,1(Warning)表示出现警告/黄色,2(Critical)表示出现严重错误/红色,3(Unknown)表示未知错误/深黄色。Nagios根据插件返回来的值,来判断监控对象的状态,并通过web显示出来,以供管理员及时发现故障。
再说报警功能,如果监控系统发现问题不能报警那就没有意义了,所以报警也是Nagios很重要的功能之一。但是,同样的,Nagios自身也没有报警部分 的代码,甚至没有插件,而是交给用户或者其他相关开源项目组去完成的。
Nagios安装,是指基本平台,也就是Nagios软件包的安装,它是监控体系的框架,也是所有监控的基础。
打开Nagios的官方文档,会发现Nagios基本上没有什么依赖包,只要求系统是Linux或者其他Nagios支持的系统。㘝如果你没有安装Apache(HTTP服务),那么你就没有那么直观的界面来查看监控信息了,所以Apache姑且算是一个前提条件。关于Apache的安装,网上有很多,安装完看看是否正常运行就可以了。
知道Nagios是如何通过插件来管理服务器对象后,现在开始研究它是如何管理远程服务器对象的。Nagios通过周期性的运行它来获得远端服务器的各种状态信息。他们之间的关系如下图所示:
NSCA:Nagios service check acceptor
NDOUtils:从一个或多个Nagios实例导出当前和历史数据到MySQL数据库。
Nagios通过NRPE来远程管理服务
1.Nagios执行安装在它里面的check_nrpe插件,并告诉check_nrpe去检测那些服务。 2.通过SSL,check_nrpe链接远端机子上的NRPE 的deamon 3.NRPE 运行本地的各种插件去检测本地的服务和状态(check...disk...etc) 4.最后,NRPE把检测的结果传给主机端的check_nrpe,check_nrpe再把结果送到Nagios状态队列中。 5.Nagios依次读物队列中的信息,再把结果显示出来。
Nagios基本安装
host1.zyg.com Nagios-Server 192.168.5.101 Apache、Pho、Nagios、nagios-plugins
host2.zyg.com Nagios-Linux 192.168.5.102 nagios-plugin、nrpe
Server 安装了Nagios软件,对监控的数据做处理,并且提供web界面查看和管理。当然也可以对本机自身的信息进行监控。
Client 安装了NRPE等客户端,根据监控机的请求执行监控,然后将结果回传给监控机。
[root@localhost ~]# yum install -y wget httpd php gcc glibc glibc-common gd gd-devel make net-snmp unzip openssl-devel [root@localhost ~]#
============================================================================================================================================== Package 架构 版本 源 大小 ============================================================================================================================================== 正在安装: gd-devel x86_64 2.0.35-26.el7 base 79 k httpd x86_64 2.4.6-80.el7.centos.1 updates 2.7 M net-snmp x86_64 1:5.7.2-33.el7_5.2 updates 330 k php x86_64 5.4.16-45.el7 base 1.4 M 为依赖而安装: httpd-tools x86_64 2.4.6-80.el7.centos.1 updates 90 k libXpm-devel x86_64 3.5.12-1.el7 base 36 k libjpeg-turbo-devel x86_64 1.2.90-5.el7 base 98 k libpng-devel x86_64 2:1.5.13-7.el7_2 base 122 k libzip x86_64 0.10.1-8.el7 base 48 k mailcap noarch 2.1.41-2.el7 base 31 k net-snmp-agent-libs x86_64 1:5.7.2-33.el7_5.2 updates 705 k php-cli x86_64 5.4.16-45.el7 base 2.7 M php-common x86_64 5.4.16-45.el7 base 565 k 事务概要 ============================================================================================================================================== 安装 4 软件包 (+9 依赖软件包)
添加一个测试账户
[root@localhost ~]# useradd nagios [root@localhost ~]# groupadd nagcmd [root@localhost ~]# usermod -a -G nagcmd nagios [root@localhost ~]# usermod -a -G nagios,nagcmd apache [root@localhost ~]#
然后按照网上的方法进行安装即可,安装完之后可以通过web界面进行访问
。。。。
安装出现了一点问题,没法测试了。下边的内容基本都是一些理论内容,从各个文档摘抄的
配置Nagios
Nagios主要用于监控一台或者多台本地主机及远程的各种信息,包括本机资源以及对外的服务等。默认的Nagios配置没有任何监控内容,仅仅是一些模板文件。若要让Nagio提供服务,就必须要修改配置文件。增加要监控的主机和服务。
配置文件之间的关系
在Nagios的配置过程中涉及到的几个定义有:主机、主机组、服务、服务组、联系人、联系人组、监控时间、监控命令等,从这些定义可以看出,Nagios各个配置文件之间是互为关联,彼此引用的。
成功配置出一台Nagios监控系统,必须要弄清楚每个配置文件之间依赖于被依赖的关系,最重要的有四点:
- 定义监控那些主机、主机组、服务和服务组
- 定义这个监控要用什么命令实现
- 定义监控的时间段
- 定义主机或服务出现问题时要通知的联系人和联系人组
为了能更清楚的说明问题,同时也为了维护方便,建议将Nagios各个定义对象创建独立的配置文件:
- 创建hosts.cfg文件来定义主机和主机组
- 创建services.cfg文件来定义服务
- 用默认的contacts.cfg文件来定义联系人和联系人组
- 用默认的commands.cfg文件来定义命令
- 用默认的timeperiods.cfg文件来定义监控时间段
- 用默认的templates.cfg文件作为资源引用文件
配置文件的详细介绍。。。。
剩下的用到了再换个服务器测试。线上服务器不敢随便乱来。。。
有问题欢迎讨论。
。