Nagios是插件式的结构,它自己没有任何监控功能,全部的监控都是经过插件进行的,所以其是高度模块化和富于弹性的。Nagios监控的对象可分为两类:主机和服务。主机一般指的是物理主机,如服务器、路由器、工做站和打印机等,这里的主机也能够是虚拟设备,如xen虚拟出的Linux系统;而服务一般指某个特定的功能,如提供http服务的httpd进程等。而为了管理上的方便,主机和服务还能够分别被规划为主机组和服务组等。php
Nagios是一款免费的开源IT基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows 、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设备的网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运维人员,在状态恢复后发出正常的邮件或短信通知。html
Nagios和Cacti监控的项目一致,能够监控服务器CPU、内存、硬盘、网络流量等等,区别是Nagios主要基于Nagios插件监控服务器主机状态监控,及时发送报警信息,而Cacti是基于rrdtool绘图经过snmp抓取数据,更偏向网络流量图形展现;mysql
Nagios不监控任何具体数值指标(如操做系统上的进程个数),它仅用四种抽象属性对被监控对象的状态进行描述:OK、WARNING, CRITICAL和UNKNOWN。因而,管理员只须要对某种被监控对象的WARNING和CRITICAL状态的阈值进行关注和定义便可。Nagios经过将WARTING和CRTICAL的阈值传递给插件,并由插件负责某具体对象的监控及结果分析,其输出信息为状态信息(OK,WARNING,CRITICAL或UNKOWN)以及一些附加的详细说明信息。 ios
监控网络并排除网络故障的工具:nagios、Ntop、OpenVAS、OCS、OSSIM等开源监控工具。web
能够实现对网络上的服务器进行全面的监控,包括服务(apache、mysql、ntp、ftp、disk、qmail和http等)的状态,服务器的状态等。sql
Nagios:监控Windows、Linux和Unix的主机状态和服务、交换机路由器等网络设置,打印机等。在系统或服务状态异常时发出邮件或短信报警第一时间通知运维人员,在状态恢复后发出正常的邮件或短信通知。apache
Nagios适用于IT基础设施的监控系统,其功能强大,灵活性强,能有效监控各类操做系统的主机、交换路由设备等;Zabbix提供分布式系统监视以及网络监视功能,用于监控网络上的服务器,服务以及其余网络设备状态的网络管理系统。centos
Nagios是一款免费的开源IT基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows 、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设备的网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运维人员,在状态恢复后发出正常的邮件或短信通知。浏览器
优缺点分析:优势是配置灵活、监控项目不少、自动日志滚动、支持冗余方式主机监控、报警设置多样性。缺点是事件控制台功能较弱、没法查看历史数据、插件易用性很差。服务器
Nagios适用于IT基础设施的监控系统,其功能强大,灵活性强,能有效监控各类操做系统的主机、交换路由设备等;
由上述说明能够,Nagios是极富弹性的,其监控功能彻底能够按照管理员的指望进行。此外,它外提供了对问题的自动响应能力和一个功能强大的通知系统。全部这些功能的实现是基于一个结构明晰的对象定义系统和少数几个对象类型实现的。
1)命令(Commands)
“命令”用于定义Nagios如何执行某特定的监控工做。它是基于某特定的Nagios插件定义出的一个抽象层,一般包含一组要执行的操做。
2)时段(Time periods)
“时段”用于定义某“操做”能够执行或不能执行的日期和时间跨度,如工做日内的天天8:00-18:00等;
3)联系人和联系人组(Contacts and contact groups)
“联系人”用于定义某监控事件的通知对象、要通知的信息以及这些接收通知者什么时候及如何接收通知;一个或多个联系人能够定义为联系人组,而一个联系人也能够属于多个组;
4)主机和主机组(host and host groups)
“主机”一般指某物理主机,其包括此主机相关的通知信息的接收者(即联系人)、如何及什么时候进行监控的定义。主机也能够分组,即主机组(host groups),一个主机可同时属于多个组;
5)服务(Services)
“服务”一般指某主机上可被监控的特定的功能或资源,其包括此服务相关的通知信息的接收者、如何及什么时候进行监控等。服务也能够分组,即服务组(Service groups),一个服务可同时属于多个服务组;
一、 依赖关系
Nagios的强大功能还表如今其成熟的依赖关系系统上。好比,某路由设备故障必然会致使关联在其上的其它主机没法被正常访问,若是不能定义这些设备间的依赖关系,那么监控系统上必然会出现大量的设备故障信息。而Nagios则经过依赖关系来描述网络设备的拓扑结构,并可以实如今某设备故障时再也不对依赖于此设备的其它设备进行检测,从而避免了无谓的故障信息,方便管理员及时定位并排除故障。此外,Nagios的依赖关系还能够在服务级别上实现,若是某服务依赖于其它服务时,也能实现相似主机依赖关系的功能。
2 宏
Nagios还可以使用宏,而且宏的定义在整个Nagios系统中具备一致性。宏是可以用于对象定义中的变量,其值一般依赖于上下文。在“命令”中定义的宏,相对于主机、服务或其它许多参数来讲,其值会随之不一样。好比,某命令能够根据向其传递的IP地址的不一样来监控不一样的主机。
3.3 计划中宕机
Nagios还提供了调度性计划中的宕机机制,管理员能够周期性的设定某主机或服务为计划中的不可用状态。这种功能能够阻止Nagios在调度宕机时段通知任何信息。固然,这也可让Nagios自动通知管理员该进行主机或服务维护了。
四、 软状态和硬状态(Soft and Hard States)
如上所述,Nagios的主要工做是检测主机或服务的状态,并将其存储下来。某一时刻,主机或服务状态仅能够是四种可用状态之一,所以,其状态可以正确反映主机或服务的实际情况就显得特别关键。为了不某偶然的临时性或随机性问题,Nagios引入了软状态和硬状态。在实际的检测中,Nagios一旦发现某主机或服务的状态为UNKOWN或不一样于上一次检测时的状态,其将会对此主机或服务进行屡次测试以确保此状态的变更是非偶然性的。具体共要作出几回测试是能够配置的,在这个指定次数的测试时段内,Nagios假设此变化后的状态为软件状态。一旦测试完成后状态仍然为新变的状态时,此状态就成了硬状态。
相关配置及参数详解
5.1 Nagios的主配置文件
Nagios的主配置文件为nagios.cfg,其语法很是简洁,一般#开头的行为注释行,而参数的设置格式为<parameter>=<value>;其中,有些参数是能够重复出现的。其中经常使用的参数说明以下:
log_file: 设定Nagios的日志文件;
cfg_file: Nagios对象定义的相关文件,此参数可重复使用屡次以指定多个文件;
cfg_dir: 设定Nagios对象定义的相关文件所在的目录,此目录中的全部文件都会被做为对象定义的文件;此参数可重复使用屡次以指定多个目录;
resource_file: 设定Nagios附加的宏定义的相关文件;
status_file: 设定Nagios存储全部主机和服务当前状态信息的文件;
status_update_interval: 设定status_file指定的文件中状态信息的更新频率;
service_check_timeout: 设定服务检测的超时时间,默认为60秒;
host_check_timeout: 设定主机检测的超时时间,默认为30秒;
notification_timeout: 设定通知信息发送尝试的超时时间,默认为30秒;
5.2 resource_file和宏定义
在主配置文件中,参数resource_file用于定义全部用户变量(即“宏”)的存储文件,它用于存储对象定义中的能够访问的额外信息,如访问某服务的密码等;所以,这些信息一般都是些敏感数据,通常不容许经过Web接口来访问。此文件中能够定义的宏可多达32个,它们分别为$USER1$,$USER2$...$USER32,这些宏通常在check命令中引用。一般状况下$USER1$用于引用Nagios插件所在目录这个路径信息,所以,通常不建议修改其值。
Nagios事先定义了许多宏,它们的值一般依赖于其上下文。
以下:
HOSTNAME: 用于引用host_name指定所定义的主机的主机名;每一个主机的主机名都是惟一的;
HOSTADDRESS: 用于引用host对象中的address指令的值,它一般能够为IP地址或主机名;
HOSTDISPLAYNAME: 用于引用host对象中alias指令的值,用以描述当前主机,即主机的显示名称;
HOSTSTATE:某主机的当前状态,为UP,DOWN,UNREACHABLE三者之一;
HOSTGROUPNAMES: 用于引用某主机所属的全部主机组的简名,主机组名称之间以逗号分隔;
LASTHOSTCHECK:用于引用某主机上次检测的时间和日期,Unix时间戳格式;
LISTHOSTSTATE:用于引用某主机前一次检测时的状态,为UP,DOWN或UNREACHABLE三者之一;
SERVICEDESC: 用于引用对应service对象中的desccription指令的值;
SERVICESTATE: 用于引用某服务的当前状态,为OK,WARNING,UNKOWN或CRITICAL四者之一;
SERVICEGROUPNAMES: 用于引用某服务所属的全部服务组的简名,服务组名称之间以逗号分隔;
CONTACTNAME: 用于引用某contact对象中contact_name指令的值;
CONTACTALIAS: 用于引用某contact对象中alias指令的值;
CONTACTEMAIL: 用于引用某contact对象中email指令的值;
CONTACTGROUPNAMES: 用于引用某contact所属的全部contact组的简名,contact组名称之间以逗号分隔;
引用方式根据对象类型的不一样也有所不一样,具体以下:
$_HOST<variable>$ – 引用在主机对象中定义的指令的值;
$_SERVICE<variable>$ – 引用在服务对象中定义的指令的值;
$_CONTACT<variable>$ – 引用在联系人对象中定义的指令的值;
一、监控网络服务(SMTP、POP三、HTTP、NNTP、PING等);
二、监控主机资源(处理器负荷、磁盘利用率等);
三、简单地插件设计使得用户能够方便地扩展本身服务的检测方法;
四、并行服务检查机制;
五、具有定义网络分层结构的能力,用"parent"主机定义来表达网络主机间的关系,这种关系可被用来发现和明晰主机宕机或不可达状态;
六、当服务或主机问题产生与解决时将告警发送给联系人(经过EMail、短信、用户定义方式);
七、能够定义一些处理程序,使之可以在服务或者主机发生故障时起到预防做用;
八、自动的日志滚动功能;
九、能够支持并实现对主机的冗余监控;
十、可选的WEB界面用于查看当前的网络状态、通知和故障历史、日志文件等;
Nagios和cacti的区别:
cacti主要是监控流量,服务器状态页面展现;nagios主要监控服务,邮件及短信报警灯,也有简单的流量控制界面,两者综合使用效果更好,
Nagios监控客户端须要借助Nagios插件及NRPE软件来实现,NRPE做为中间的代理程序,接受Nagios服务端发来的请求,另外一端在远程主机上指定的相关的监控信息。
Nagios原理图
注意:左边是客户端,,右边是服务端。
Database不存放客户监控数据
Ntop:监控网络流量,流量采集技术有如下几个:
1.sniffer:采集的信息最全面,可彻底复制网络的数据报文。
2.SNMP:是一种主动的采集方式,取得的数据只包含端口层数据, 对于伪造端口地址的蠕虫病毒无能为力。
3.Netflow :统计全部网络报文,对网络设备性能影响较大。
4.sFlow:采用采样的方式,经过设定必定的采样率,进行数据捕获,对网络设备影响很小。
Nagios的管理模式:
分布-集中的管理模式,在nagios服务器上安装主程序,在被监控主机上安装nagios代理程序,经过nagios主程序nagios代理程序之间的通讯,监控对象的状态。
nagios经过nrpe插件来远程管理服务的工做过程
nagios的四种监控状态
Nagios能够识别四种状态返回信息。0(OK)表示状态正常(绿色显示)
安装方法1
注意:Nagios须要LAMP环境,若是没有就安装,,客户端不安装Nagios,服务端安装Nagios
Nagios配置文件
在centos 6中安装
【root@localhost ~】# yum install -y httpd mysqld mysqld-server mysql-devel php php-devel php-mysql
在centos 7中安装
【root@localhost ~】# yum install -y httpd mariadb mariadb-server mariadb-devel php php-devel php-mysql
wget -c http://nchc.dl.sourceforge..net/projects/nagios/nrpe-2.x/nrpe-2.14/nrpe-2.14.tar.gz
wget -c http://down1.chinaunix.net/distfiles/nagios-plugins-1.4.14.tar.gz
在./configure以前,建立nagios用户(的同时也会自动建立组),#useradd nagios
注意:make install-webconf 生成nagios.conf配置文件,下面是nagios.conf配置文件内容
【root@localhost nagios】# cd /usr/local/ngios/
【root@localhost nagios】# ls
【root@localhost nagios】# cd share/
【root@localhost share】# ls
【root@localhost share】#cd /etc/httpd/conf.d
【root@localhost share】# ls
重启apache
【root@localhost share】# /etc/init.d/httpd restart
启动失败
在浏览器上面输入IP:192.168.226.130/nagios/
建立用户名和密码
/etc/init.d/nagios restart
在clinet客户端安装插件
安装2
1.依赖套件安装
[root@localhost]# cd /usr/local/src [root@localhost src]# yum install -y gcc glibc glibc-common gd gd-devel xinetd openssl-devel libpng libpng-devel libjpeg libjpeg-devel zlib zlib-devel httpd php php-devel
2.建立nagios用户以及用户组
[root@localhost src]# useradd -s /sbin/nologin nagios [root@localhost src]# mkdir /usr/local/nagios [root@localhost src]# chown -R nagios.nagios /usr/local/nagios
安装完成后在/usr/local/nagios里面生成上图看到的几个目录,分别是 var日志文件,bin执行程序,etc配置文件,sbin, share libexec网页的目录。至此安装成功。
3.编译安装nagios
[root@localhost src]# wget http://iweb.dl.sourceforge.net/project/nagios/nagios-4.x/nagios-4.1.1/nagios-4.1.1.tar.gz 解压 [root@localhost src]# tar zxvf nagios-4.1.1.tar.gz [root@localhost nagios-4.1.1]# cd nagios-4.1.1 #指定安装目录 [root@localhost nagios-4.1.1]# ./configure --prefix=/usr/local/nagios [root@localhost nagios-4.1.1]# make all #编译 #安装主程序和CGI和html文件 [root@localhost nagios-4.1.1]# make install # 安装 #建立启动脚本 [root@localhost nagios-4.1.1]# make install-init #把nagios作成一个运行脚本,是nagios随系统开机时启动 #配置目录权限 [root@localhost nagios-4.1.1]# make install-commandmode #给外部命令访问配置权限 #安装示例配置文件 [root@localhost nagios-4.1.1]# make install-config 把配置文件样例复制到nagios的安装目录下 chkconfig --add nagios chkconfig --level 35 nagios on chkconfig --list nagios
4.目录说明
切换目录到安装路径(这里是/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 用来存放外部命令文件的目录
5.插件安装
nagios自己并无监控的功能,全部的监控是由插件完成的,插件将监控的结果返回给nagios,nagios分析这些结果,以web的方式展示给咱们,同时提供相应的报警功能
[root@localhost src]# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.16.tar.gz 解压 [root@localhost src]# tar zxvf nagios-plugins-1.4.16.tar.gz [root@localhost src]# cd nagios-plugins-1.4.16 编译安装 [root@localhost src]# ./configure --prefix=/usr/local/nagios --with-nagios-user=nagios --with-nagios-group=nagios [root@localhost src]# make && make install
安装完成后,在/usr/local/nagios目录下生成插件文件libexec,nagios全部的插件都会在这个目录下。
修改配置文件/usr/local/apache/conf/httpd.conf
找到以下两行
增长以下两个代码段
Apache配置文件改完后,使用命令htpasswd给nagiosadmin用户设置密码(我设置为123456)
检查配置文件有没有问题
显示以下 则说明没有问题
在客户端浏览器输入:http://IP/nagios.看到以下效果。则个人nagios服务已经安装成功
检查nagios的配置是否正确:
/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg 若没有错误,就能够启动nagios了。
nagios启动的方式有两种:
l /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cfg
l /etc/init.d/nagios start
常见问题:
一、[root@server34 nagios-cn-3.2.3]# ./configure
错误:*** GD, PNG, and/or JPEG libraries could not be located... *********
解决:须要安装gd-devel:
二、
其实它是要制做目标文件/include/locations.h,这个是头文件,但是这个头文件须要broker.o文件
这个文件是由perl安装包提供的,你能够先执行下面命令安装perl,而后再从新./configure一下,再make all就没有问题啦
yum install perl -y
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
三、
则在编译时入加 --with-included-apr 便可解决。
四、
参考连接:https://my.oschina.net/wdos/blog/73117
连接:
nagios监控三部曲之——nagios的安装与配置(1) : http://blog.51cto.com/dl528888/763032
nagios监控三部曲之——为何nagios不能发送报警邮件(2) : http://blog.51cto.com/dl528888/763079
nagios监控三部曲之——nagios实现飞信报警(3) : http://blog.51cto.com/dl528888/770684
http://blog.51cto.com/izhouyu/1965409
nagios论坛 :http://www.cnyunwei.com/forum-60-1.html
Nagios 3 Enterprise Network Monitoring :http://club.topsage.com/thread-242245-1-1.html |
Building a Monitoring Infrastructure with Nagios : http://club.topsage.com/thread-242244-1-1.html
Network Management with Nagios : http://club.topsage.com/thread-242243-1-1.html |
Nagios: System and Network Monitoring :http://club.topsage.com/thread-242242-1-1.html
Nagios-超详细配置,监控必备,不看绝对损失 : https://mp.weixin.qq.com/s/0q7Qw4pfCX87l76sVmF1gQ
Apress Pro Nagios 2.0 :http://club.topsage.com/thread-242241-1-1.html
nagios监控磁盘分区使用 : http://blog.chinaunix.net/uid-25266990-id-108070.html
Nagios解决libraries: libltdl.so.3问题 : http://blog.chinaunix.net/uid-25266990-id-2485793.html
nagios 客户端安装配置 : http://blog.chinaunix.net/uid-25266990-id-2422661.html
使用pnp4nagios实现Naigos服务图表 : http://blog.chinaunix.net/uid-25266990-id-3437195.html
使用NDOUtils将Nagios监控信息存入Mysql : http://blog.chinaunix.net/uid-25266990-id-3417451.html
nagios配置监控的一些思路和工做流程 : http://blog.51cto.com/xiaoluoge/1587997
nagios一键安装脚本 : http://blog.51cto.com/xiaoluoge/1587079
Nagios&Cacti : Nagios&Cacti
原 CentOS6.6下的Nagios简单安装 : https://blog.csdn.net/u012402276/article/details/49427187
原 CentOS6.6下的Nagios安装配置详解(一) : https://blog.csdn.net/u012402276/article/details/49640373
原 CentOS6.6下的Nagios安装配置详解(二) : https://blog.csdn.net/u012402276/article/details/49640551
原 CentOS6.6下的Nagio安装配置详解(三) : https://blog.csdn.net/u012402276/article/details/49640755
原 Nagios排错集合 : https://blog.csdn.net/u012402276/article/details/49684163
nagios报错:./stdio.h:456:1: error: 'gets' undeclared here (not in a function) 荐 : http://blog.51cto.com/ityunwei2017/1893212
nagios经过微信告警(无限制告警条数) 荐 : http://blog.51cto.com/ityunwei2017/1891946
Nagios监控Redis : http://blog.51cto.com/ityunwei2017/1845178
Nagios监控Mysql : http://blog.51cto.com/ityunwei2017/1843015
Nagios调用Python程序控制微信公众平台发布报警信息 : http://blog.51cto.com/ityunwei2017/1775702
Nagios监控Dell服务器硬件状态 : http://blog.51cto.com/ityunwei2017/1766745
Nagios监控ESXI主机系统、硬件、nagios日志文件时间格式转换 : http://blog.51cto.com/ityunwei2017/1755319
运维监控利器Nagios:概念、结构和功能 :https://www.ixdba.net/archives/2012/06/142.htm
运维监控利器Nagios之:安装nagios :https://www.ixdba.net/archives/2012/06/144.htm
运维监控利器Nagios之:nagios配置详解 : https://www.ixdba.net/archives/2012/06/146.htm
运维监控利器Nagios之:Nagios的平常维护和管理 : https://www.ixdba.net/archives/2012/06/148.htm