运维监控 ——Nagios

Nagios是一款开源监控软件。利用Nagios可以监控本地或远程主机资源,如磁盘空间、系统负载等情况,也可以监控各种应用服务,例如HTTP服务、FTP服务等。当主机或服务出现故障时,Nagios还可以通过邮件、手机短信等形式在第一时间通知系统维护人员。
    
  一. Nagios综述
     作为一名运维人员或系统管理员,难免会遇到主机或服务异常的情况,遭遇故障并不可怕,可怕的是故障出现后,系统管理人员不知道。由于没有及时发现故障,不但解决问题时存在困难,而且可能带来很大的损失。因此,一个能完成对主机或服务进行检测的自动化工具对于运维人员或系统管理人员来说非常重要。Nagios就是一个这样的开源管理软件,通过Nagios可以轻松实现对远程主机、服务以及网络的全面监控。

二. 什么是Nagios 
     Nagios是一款Linux上成熟的监控系统运行状态和网络信息的开源IT基础设施监视系统。Nagios能监视所指定的本地或远程主机及服务,同时提供异常通知、事件处理等功能。与商业IT管理系统,如IBM Tivoli、HP Open View/Operations等相比,Nagios具有成本低廉、结构简单、可维护性强等诸多有点,越来越受IT运维人员和系统管理人员的青睐。
     Nagios可运行在Linux和UNIX平台上,同时提供一个可选的基于浏览器的Web界面,以方便系统管理人员常看系统的运行状态、网络状态、各种系统问题及日志异常等。

三. Nagios的结构与特点

从结构上讲,Nagios可分为核心和插件两个部分。Nagios的核心部分只提供了很少的监控功能,因此要搭建一个完善的IT监控管理系统,用户还需要为Nagios安装相应的插件,这些插件可以从Nagios官方网站上下载,也可以根据实际要求编写。

Nagios的主要功能特点如下:

@ 监控本地或者远程主机资源(内存、进程、磁盘等)
         @ 监视网络服务资源(HTTP、PING、FTP、SMTP、POP3等)
         @ 允许用户编写自己的插件来监控特定的服务
         @ 当被监控对象出现异常时,可以通过邮件、短信等方式通知管理人员
         @  可以事先定义时间处理程序,当主机或服务出现故障时自动调用制定制定的处理程序
         @ 可以通过Web界面来监控各个主机或服务的运行状态。

=========================华丽丽的分割线=====================

Nagios的安装与配置

一. 安装Nagios

1.  安装前的准备
        (1)创建Nagios用户和用户组 
        将Nagios进程的运行用户和组设置为nagios,并且将nagios的主程序目录属主设置为nagios,以保证系统的安全(当然设置为root用户也是可以的,但不建议这么做)。基本操作如下:

(2)开启系统的sendmail服务或Postfix服务
         在Nagios监控服务器上开启sendmail服务的主要作用是让Nagios在检测到故障时可以发送报警邮件。目前很多的Linux发行版本都默认自带了sendmail服务,所以在安装系统时只需开启sendmail服务即可,并不需要在sendmail上进行任何配置。
        【注:系统发行版本不同,默认自带的邮件服务也不同。我使用的为CentOS 6.5 ,自带的为Postfix服务。两者任一皆可】 
 
        2. 编译安装Nagios
        所有准备工作完成后,开始编译安装Nagios。过程如下:

注:
        # 解包
        # 进入主目录
        # 指定Nagios的安装目录,这里指定将Nagios安装到/usr/local/nagios目录下
        # 通过make install命令来安装Nagios主程序的CGI和HTML文件
        # 通过make install-init命令可以在/etc/rc.d/init.d目录下创建Nagios的启动脚本
        # 通过make install-commandmode命令来配置目录权限
        # 通过make install-config用来安装Nagios实例配置文件,这里的安装路径是/usr/local/nagios/etc

设置开机启动。

Nagios各个目录名称及用途说明如下表所示:

3. 安装Nagios插件 
        Nagios提供的各种监控功能基本是通过插件来完成的,而Nagios核心只提供了很少的监控功能,因此安装插件是必须的。Nagios的插件可以再www.nagios.org下载到,我下载的是nagios-plugins-2.0.3。其实插件版本与Nagios版本的关联并不大,不一定非要用我下载的这个版本。接着上传对应的nagios-plugins-2.0.3.tar.gz到服务器,解压缩并安装。过程如下:
 

这样,安装就完成了。需要说明的是,插件的安装路径最好和Nagios安装路径一致,这样安装完插件后会在Nagios主程序目录(即/usr/local/nagios下的libexec目录)下生成很多可执行文件,这些就是Nagios所需要的插件。

4. 安装Nagios汉化插件
        对于英语水平不高的用户(比如我这样的- -。),还可以为Nagios安装汉化插件,可以从http://sourceforge.net/projects/nagios-cn/files/下载对应Nagios版本的汉化插件。这里下载的是nagios-cn-3.2.3.tar.bz2。接着开始安装编译Nagios插件,过程如下:

5. 安装与配置Apache
        Apache不是安装Nagios所必须的,但是Nagios提供了Web监控界面,通过Web监控界面可以清晰的看到被监控的主机和资源的运行状态,因此,安装一个Web服务是很必要的。可选的Web服务器有Apache、Nginx等,我选择Apache了。
        Apache的安装非常简单,需要注意的是,Nagios在nagios 3.1.x版本以后,配置Web监控页面时需要PHP的支持。这里下载的Nagios版本为nagios 4.0.8,因此在安装完Apache后,还需要安装配置PHP。

LAMP环境的搭建过程省略,我选择以YUM方式搭建。跳至配置过程:
        (1) 配置Apache
        首先在Apache配置文件/etc/httpd/conf/httpd.conf中修改Apache进程的启动用户为Nagios:

然后找到DirectoryIndex修改为如下并添加AddType一行:

安全起见,一般要求必须经过授权才能访问Nagios的Web监控页面,在httpd.conf文件最后添加如下信息:

(2) 创建Apache目录验证文件
        在上面的配置中指定了目录验证文件htpasswd,下面创建这样一个文件:

(3) 启动Apache服务
           
        (注意防火墙),可以看到Nagios的监控页面。

  二. 配置Nagios
         Nagios主要用于监控一台或者多台本地主机及远程主机的各种信息,包括本机资源及对外的服务等。默认的Nagios配置没有任何监控内容,仅是一些模板文件。下面通过理论与实践相结合的方式详细介绍如果搭建一个完善的Nagios监控系统。

1. 默认配置文件介绍
        Nagios安装完毕后,默认的配置文件在/usr/local/nagios/etc目录下,每个文件或目录的用途如下表所示:

Nagios在配置方面非常灵活,默认的配置文件并不是必须的。可以使用这些默认的配置文件,也可以创建自己的配置文件,然后在主配置文件nagios.cfg中引用即可。

2. 配置文件之间的关系
        Nagios的配置过程设计的几个定义有:主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等,从这些定义可以看出,Nagios的各个配置文件之间是互为关联、彼此引用的。成功配置一台Nagios监控系统,必须弄清楚每个配置文件之间依赖与被依赖的关系,最重要的4点事:第一次要定义监控哪些主机、主机组、服务、服务组,第二要定义这个监控要通过什么命令实现,第三要定义监控的时间段,最后要定义主机或服务出现问题时要通知的联系人和联系人组。
        清楚了Nagios的配置重点和各个配置文件之间的依赖关系后,配置Nagios就变得非常容易了。

3. 配置Nagios
        为了能更清楚的说明问题,同时为了方便维护,建议为Nagios各个定义对象创建独立的配置文件:
        创建hosts.cfg文件定义主机和主机组,
        创建services.cfg文件定义服务,
        用默认的contacts.cfg文件定义联系人和联系人组,
        用默认的commands.cfg文件定义命令,
        用默认的timeperiods.cfg文件定义监控时间段,
        将默认的templates.cfg文件作为资源引用文件。

(1) templates.cfg 文件
        Nagios主要用于监控主机资源及服务(在Nagios配置中被称为对象)。为了不重复定义一些监控对象,Nagios引入了一个模板配置文件,将一些共性的属性定义成模板,以便多次引用,这就是templates.cfg的作用。templates.cfg文件内容如下:

(2) resource.cfg 文件
      resource.cfg是Nagios的变量定义文件,文件内容只有一行:
      $USER1$=/usr/local/nagios/libexec
      其中,变量$USER1$指定了安装Nagios插件的路径,如果把插件安装在其他路径,只需要在这里修改即可。需要足以的是,变量必须先定义,然后才能在其他配置文件中进行引用。

(3) commands.cfg
      此文件在默认情况下是存在的,无需修改即可使用。当然,如果有新的命令需要加入,在此文件中进行添加即可。这里并未列出文件的所有内容,仅介绍了配置中用到的一些命令。

@ notify-host-by-email 命令的定义如下:

@ check-host-alive 命令的定义如下:

@ 还有其他许多,除了实现的功能不一样配置并无差别。

(4) hosts.cfg文件
      此文件在默认情况下不存在,需要手动创建。hosts.cfg主要用来制定被监控的主机地址及相关属性信息。一个配置好的实例如下:

(5) services.cfg文件
      此文件默认情况下也不存在,需要手动创建。services.cfg文件主要用于定义监控的服务和主机资源,例如监控HTTP服务、FTP服务、主机磁盘空间、主机系统负载等。

这里对web和MySQL主机设置了4个监控服务,分别是check_ping、check_ssh、check_ftp和check_http。如果要监控远程主机更多的服务,按照相同格式增加即可。

在services.cfg文件中,有很多对命令的定义,例如监控SSH服务的check_ssh、监控FTP服务的check_ftp、监控HTTP服务的check_http等,这些命令均在commands.cfg中进行定义。结合commands.cfg和resource.cfg文件,不难看出,这些命令对应的真实路是/usr/local/nagios/libexec,也就是说,这些命令其实就是安装Nagios插件后产生成的可执行文件。

在Nagios中,插件命令和参数的组合格式为:命令!参数!参数。如果有更多参数,依次通过叹号分割即可。下面列举几个命令组合进行介绍。

check_ping!100.0,20%!500.0,60%
        此命令组合从左到右依次为:命令!告警时延,丢包率!严重告警时延,丢包率。
        check_http!0.0020!0.0050!10
        此命令组合从左到右依次为:命令!告警时延!严重告警时延!连接超时时间。
        check_tcp!23!0.0020!0.0050!10
        此命令组合从左到右依次为:命令!端口!告警时延!严重告警时延!连接超时时间。
        check_ssh!22!10
        此命令组合从左到右依次为:命令!端口!连接超时时间。
        check_smtp!0.0020!0.0050!10
        此命令组合从左到右依次为:命令!告警时延!严重告警时延!连接超时时间。
        另外,在监控服务器端口时,很多命令都可以使用check_tcp来代替,例如:
        
        check_ssh=check_tcp!22
        check_imap=check_tcp!143
        check_ftp=check_tcp!21
        check_nntp=check_tcp!119
        check_pop=check_udp!110
        check_udp=check_tcp
        check_telnet=check_tcp!23

(6) contacts.cfg是一个定义联系人和联系人组的配置文件,当监控的主机或者服务出现故障时,Nagios会通过指定的通知方式(邮件或短信)将信息发给这里指定的联系人或使用者。

下面是一个配置好的示例。

(7) timeperiods.cfg文件
       此文件只用于定义监控的时间段。下面是一个配置好的示例:

(8) cgi.cfg文件
      此文件用来控制相关CGI脚本,如果想在Nagios的Web监控界面执行CGI脚本,例如重启Nagios进程、关闭Nagios通知、停止Nagios主机检测等,这时就需要配置cgi.cfg文件了。由于Nagios的Web监控页面验证用户为wangkun,因此只需要在cgi.cfg文件中添加此用户的执行权限就可以了。需要修改的配置信息如下:

到这里为止,Nagios的所有对象配置文件已经修改完了。将创建好的8个文件全部放到/usr/local/nagios/etc目录下,接着开始配置nagios.cfg文件。

(9) nagios.cfg文件
      nagios.cfg文件默认的路径为/usr/local/nagios/etc/nagios.cfg,是Nagios的核心配置文件,所有的对象配置文件都必须在这个文件中进行定义才能发挥其作用,这里只需引用对象配置文件即可。下面分别对Nagios.cfg文件中的内容进行介绍。

cfg_file变量用来引用对象配置文件,如果有更多的对象配置文件,那么在这里依次添加即可。但在有些时候,监控的对象多达几千个,如果都在这引用将会非常费力,而且还不利于日后的维护,此时就需要另一个变量了,那就是cfg_dir。该变量用于指定一个目录,所有在这个目录下的以.cfg为扩展名的文件都将作为对象配置文件来处理。另外,Nagios将会递归该目录下的子目录并处理其子目录的全部配置文件。

=======================华丽丽的分割线======================

Nagios的运行和维护

一. 验证Nagios配置问价你的正确性
        
    在上面已经配置完成了一个基本的Nagios监控系统。检查配置文件的正确性方面Nagios做得非常到位,只需要一个命令就可以完成:

看到如下两个大鸭蛋代表没有错误。如果不是,则根据提示修正即可。

二. 启动与停止Nagios

有多重启动、停止和重启Nagios的方法,读者可以根据自己的需要,任选其一。

1. 启动Nagios
        (1) 通过初始化脚本启动Nagios

(2) 手工方式启动Nagios
        通过nagios命令的” -d “ 参数来启动nagios守护进程

2. 关闭nagios服务
        和开启的类似,services命令大家伙都快用烂了我就不废话了
        3. 重启Nagios
        services是一种
        第二种是通过web监控页重启Nagios
        还一种是手工方式平滑重启,也就是kill  -HUP  <nagios_pid>

到此为止,Nagios监控系统已经成功搭建并运行起来了。

三. Nagios故障报警

Nagios的故障报警功能非常强大,可以支持邮件、短信、MSN、QQ等多种方式,每种报警方式都有自己的优缺点:邮件报警是最普通、最简单的方式,无需任何插件,只需要添加报警的邮件地址即可,但是实时性不好;短信报警实时性最好,可以直接将监控结果发送到指定的手机上,但是短信报警方式需要硬件或第三方插件支持,成本略高;MSN和QQ报警方式实时性介于邮件和短信之间,但需要编写自定义脚本,因此复杂性稍高。

下图是问题出现后Nagios发送到指定邮箱的报警邮件:

借鉴自高俊峰老师一书
                                            ——《高性能Linux服务器构建实战》

时间: 2024-10-10 00:54:32

运维监控 ——Nagios的相关文章

运维监控 ——Nagios(2)

一. Nagios性能分析图表的作用 Nagios对服务或主机监控的是一个瞬时状态,有时候系统管理员需要了解主机在一段时间内的性能及服务的相应状态,并且形成图表,这就需要通过通过查看日志数据来分析.但是这种方式不但繁琐,而且抽象.不过幸运的是,PNP可以帮助我们来完成这个工作. 二. PNP的概念与安装环境 PNP是一个小巧的开源软件包,它是基于PHP和Perl的.PHP可以利用rrdtool工具将Nagios采集的数据绘制成相关的图表,然后显示主机或者服务在一段时间内的运行状况.  如果要安装

运维监控利器Nagios之:安装nagios

一.安装前准备 (1)创建nagios用户和用户组 [[email protected] ~]#useradd -s /sbin/nologin nagios [[email protected] ~]#mkdir /usr/local/nagios [[email protected] ~]#chown –R  nagios.nagios /usr/local/nagios (2)开启系统sendmail服务 在nagios监控服务器上开启sendmail服务的主要作用是让nagios在检测到

企业运维监控平台架构设计与实现(ganglia篇)

一.Cacti/Nagios/Zabbix/centreon/Ganglia之抉择 1.cacti Cacti是一套基于PHP,MySQL,SNMP及RRDTool开发的网络流量监测图形分析工具. 简单的说Cacti 就是一个PHP 程序.它通过使用SNMP 协议获取远端网络设备和相关信息,(其实就是使用Net-SNMP 软件包的snmpget 和snmpwalk 命令获取)并通过RRDTOOL 工具绘图,通过PHP 程序展现出来.我们使用它可以展现出监控对象一段时间内的状态或者性能趋势图. 2

Open-falcon运维监控系统——微信接口二次开发

1.Open-falcon运维监控系统简介 OpenFalcon是一款由小米运维团队从互联网公司的需求出发, 根据多年的运维经验,结合市面上使用的一些运维监控系统的使用经验和反馈,开发的一套企业级.高可用.可扩展的开源监控解决方案.简单了使用一下Open-falcon运维监控,结合使用过的zabbix,cacti,nagios来说,觉得有以下几个优点: 支持用户主动push,可以结合一些业务需求采集数据,同时也支持用户自定义的插件. 支持策略模板,模板继承和覆盖,多种告警方式,支持callbac

【IT运维监控】集团宕机引发对运维人员的思考 

前不久某大型集团官网和APP突然无法正常使用引发热议,不少人幸灾乐祸,也引发出了各种的谣言和段子,根本难以体会集团内部所受的压力,特别是作为一个大集团内部的运维人员所承受的各种压力和不安. 后 来,原支付宝运维团队负责人针对此事发表了一篇文章,让不少的运维人员深有感触,作为肩负运维监控使命的运维监控工具--PIGOSS BSM 也同样感同身受.面对层出不穷的运维安全隐患,当下运维人员急需一套高效的7*24小时都能担负监控任务的工具,为自身的运维工作减负,告别之前加班熬夜 但没有工作成绩的"怪现像

江西畅行高速IT运维监控平台--PIGOSS BSM

案例所属行业:高速公路行业 项目实施时间:2014年 1.1    项目背景     江西畅行高速工程(以下简称"畅行高速")与高速公路周边系统的建设基于用户的消费账户支付系统和结算系统.既包括高速公路的收费,也包括高速公路周边的连锁超市的消费,互联网业务为江西畅行高速周边服务. 目前,江西畅行高速进行网络建设和核心生产平台应用系统的建设.随着江西畅行高速信息化应用的不断推广,核心生产平台的稳定运行对项目的影响越来越大.随 着更多江西畅行高速业务系统上线运行和日常办公对业务系统的日益依

【解决方案】IDC、MA服务商IT运维监控解决方案

       文章摘自 pigoss 官网 http://www.netistate.com  如需转载,请标明出处! IDC与MA服务商现状 目前,大部分传统IDC服务商仍然处于卖场地.卖资源的阶段,通过租赁有限的场地和资源,同质化竞争和低价竞争愈演愈烈严重.如何为用户提供差异化增值IT运维服务成为新一代IDC的竞争目标. 同 样,大部分传统MA服务商的经营模式为提供维保服务,成熟.有经验的工程师便成为了众多MA服务商的重点争夺人才,人力成本不断攀升.技术人员巨大的人才 缺口,注定了专家级工程

【IT运维监控】讨论哪种运维监控工具才是IT运维人员的最爱?

选择运维工具的几大要素:一是看我哪些指标需要监控,二是看我监控到什么 三是看这种运维监控工具能监控到什么程度 有可能,这几个问题IT运维人员自己都没有弄的很明白,那么我们先看一下整个运维行业目前的现状: 目前来说,传统企业的IT运维大部分还是用户在使用过程中发现故障,然后通知运维人员,再邮运维人员确定是什么问题,采用哪种方式可以解决.大部分的运维人员目前还是充当的只是一个救火员的身份,没有起到真正的IT运维监控的作用.运维人员的大部分时间和经历都花在了处理简单而重复的问题上,导致同事及领导的不满

最简单也最难:运维监控的最后1公里

谈运维我们不得不提监控,监控是运维的起点,也是难点.随着IT架构逐渐复杂化,从前端到IT底层,中间涉及浏览器.网络.服务器.操作系统.中间件.应用.数据库等,每个环节厂商不尽相同.当出现异常需要定位哪个环节出了问题的时候,排查就耗时耗力,若使用优云监控产品,以上难题不再是问题.优云全栈运维监控覆盖了所有环节的监控,真正做到监控无盲区,运维无隐患. 运维最后一公里是指高度可视化.优云除了提升监控能力还注重可视化,深知可视化是运维的亮点更是本质,为了让每个环节监控的数据更好的展现出来,优云拥有一批在