下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

关于Nagios配置技巧大分享

作者:课课家教育     来源: http://www.kokojia.com点击数:659发布时间: 2017-11-16 15:00:29

标签: Nagios配置系统

  欢迎各位阅读本篇文章,NagiOS是一款开源的免费网络监视工具,能有效监控WindowsLinux和Unix的主机状态,交换机路由器等网络设置,打印机等。本篇文章讲述了关于Nagios配置技巧大分享。

  Nagios的结构其实很简单,一个监视系统,一个web展现系统,一个remote服务器,没了。

关于Nagios配置技巧大分享_Nagios_配置_系统_课课家教育

  监视系统是根本,在debian中,需要安装的包是Nagios3。在安装这个包之后,会启动一个监视进程,负责检查所有的服务是否OK。不OK就触发事件。

  检查的时候,Nagios会去调一些“插件”。这些插件其实都在/etc/Nagios-plugins/config下面注册过的。每个插件配置都是name!v1!v2…的格式。在注册里面,可以看到这个command_name,对应一个command_line。你很容易看到这就将一个定义转换为了一个命令行。

  直接执行这个命令行,你可以看到一个标准输出。Nagios就是解析这个标准输出,得到值是否在一个合法的范围内的。所以从原理上说,你可以自己写插件,对任何事情做Nagios的监控。

  对于某些远程可以获得的信息,目标设备上可以什么都不动,例如ping连通性,或者是端口连通性等。而对于其他信息,例如磁盘空间剩余值,靠远程可能没法获得,就需要在目标设备上装nrpe,Nagios Remote Plugin Executor Server。在debian中,就是Nagios-nrpe-server这个包。如果获得本地信息,不需要这个包。

  最后,cgi会将本地的信息暴露给web查询,这就构成了完整的Nagios体系。在debian中,这是Nagios3-cgi这个包。

  Nagios页面在nginx上的配置:

  这个过程比较繁琐,因为apache会自动配置,而nginx没有宿主进程,也没有cgi。因此实际上需要运行两个宿主进程。

  首先,你需要安装php-fpm宿主进程,这个是nginx搭配php执行的最佳宿主。在Nagios中有用到php,所以你需要php执行能力。

首先,你需要安装php-fpm宿主进程,这个是nginx搭配php执行的最佳宿主。

  其次,安装fcgiwrap这个包。这是cgi执行宿主,以fastcgi协议暴露。这里需要注意。如果你的nginx和Nagios的宿主不在同一个设备上(例如像贝壳这样执行了虚拟化的),那么实际上只要在Nagios的宿主上执行fcgiwrap即可。php-fpm和nginx可以执行在其他不同设备上,没有关系。只是前者必须有Nagios的cgi代码,后两者必须有Nagios的网页和php代码。而这三者又都在Nagios3-cgi包里面。因此几台机器都需要安装Nagios3-cgi包。

  最后,配置nginx。

  location /Nagios3 {

  index index.html index.htm index.php;

  }

  location /Nagios3/stylesheets {

  root /etc;

  }

  第一个映射是Nagios的基础目录,在根目录中,我其实配置了Nagios3 -> /usr/share/Nagios3/htdocs/(debian中的链接位置)。第二个映射是样式表配置,我用系统缺省的。

  location ~ ^/Nagios3/.*.php$ {

  include fastcgi_params;

  fastcgi_pass unix:/var/run/php5-fpm.sock;

  }

  这个是Nagios的php解析代码。我的php-fpm执行在同一台机器上,因此直接如此配置即可。

  location /cgi-bin/Nagios3 {

  root /usr/lib;

  include fastcgi_params;

  fastcgi_param REMOTE_USER $remote_user;

  fastcgi_pass dev:port;

  }

  最后是cgi暴露的配置。由于我的Nagios宿主并不在web服务器上,因此fastcgi是个远程地址。而且注意REMOTE_USER,传递这个才能让远程认到你的用户basic auth。由于Nagios的cgi通过这个工作,因此没有这个会直接导致对方始终认为你是无权限用户。

  Nagios的简单配置:

  我们首先认清一点,Nagios并不负责管理机器的维护。他的设计目标是“可用性”。因此目标是否可达,服务是否可用,是Nagios的关心重点。至于磁盘,负载,只是顺便监控而已。所以你可以看到,Nagios并没有直接的插件来监控CPU或者内存。他只有snmp插件可以查询到这些数据。

  所以,我们开心一点。最低限度,我们将所有需要监控的设备和服务端口加入列表。当这些设备不可达时,Nagios会发出告警(有邮件)。而如果运气好,我们是可以监控到这台机器是否有apt包需要升级,磁盘空间是否够的。作为建议,其实你只需要监控load和磁盘空间利用率就够了。其余的东西一般不大需要。当内存或者CPU发生问题的时候,你的query其实也拿不到返回。相对的,目标端口很快失去响应进而引发告警才是我们的预期。

  OK,在这个基础之上,让我们看看有什么可以配置的。

  服务器添加:

  首先,你可以定义一些机器。localhost_Nagios2.cfg里面有例子,大致是这个样子。

  define host{

  use generic-host ; Name of host template to use

  host_name host

  alias host

  address IP

  }

  我建议你专门弄个文件来管理这些自己的设备,例如我这里叫hosts.cfg。

  基本服务:

  hostgroups_Nagios2.cfg中有很多服务器组,其中有一个ssh组和http组是内置的。如果你的设备有这两个最常见服务,你直接添加到这两个组里面,设备的对应服务就会被监控。

  其中有个debian组需要多说一下,这个组并没有服务,但是这个组定义了设备的类型为debian。你在web中可以看到logo。

  在services_Nagios2.cfg里面,你还可以定义其他自己的常见服务,并且将服务器加入到hostgroups中。

  对于少数特殊的服务,就要在services里面开了。在hosts里面直接定义一些服务比较简单直接。

  服务器定义:

  默认的generic-host是带有keep-alive的,服务器会通过ping来确认设备活着。如果你的目标上面为了安全加防火墙关了icmp,你又很难让目标机器对你的IP互信的话。那么开着ping会很烦。每天看着有个服务器挂了,其实没事。

  你可以在generic-host_Nagios2.cfg里面,将标准配置复制一份,去掉下面一行。这个服务器就不会检查是否活着了。

  check_command check-host-alive

  nrpe

  nrpe的配置比较繁琐,你首先要在nrpe服务的配置文件中,将需要执行的指令定义好。然后在Nagios的服务这里用check_nrpe检查返回。

  知识分享:nagiOS系统配置

  nagios目录结构比较清晰,安装后下面一共有binetclibexecsbinsharevar几个目录,其中配置文件都存放在etc目录下,bin下存放的是nagios的相关命令,sbin下存放的是通过web方式外部执行的cgi,libexec存放的是所有插件,而var则存放的是log和pid文件等。而实现监控都是依靠执行插件来实现的。

  要实现监控,需要在nagios中定义一个service,在这个service中指定监控对象和监控命令以及报警机制等。Nagios的配置关系可以按照下图来做说明:

要实现监控,需要在nagios中定义一个service,在这个service中指定监控对象和监控命令以及报警机制等。

  nagios的配置也比较清晰明了,etc目录下默认有objects目录和一些配置文件,其中objects里放的是主配置文件nagios.cfg包含进去的配置文件。在nagios.cfg中既可以指定单独包含一个cfg,也可以指定一个包含目录,即该目录下所有的cfg文件都会包含进来。

  首先我们配置下主配置文件,为了目录的清晰我们自己建立一些目录来存放相关的配置文件,比如建立commands目录存放命令,建立services目录存放服务,建立hosts目录存放主机,在nagios.cfg文件中找到cfg_file的部分,下面是一个示例,实际部署的时候可以按照你自己的情况去设置:cfg_file=/usr/local/nagios/etc/objects/commands.cfg包含配置文件,下同

  这里先说明一下,监控都是依靠插件去完成的,举个例子说明,如我们要监控60.222.111.83这台服务器的虚拟内存,当达到70%的时候状态为警告,达到90%的时候为严重。这个依靠这个插件来完成。

  -

  其中-H参数表示主机地址,-C参数表示SNMP团体名称,-2表示使用SNMPv2协议,-w为warning(警告)状态的阈值,-c表示为critical(严重)状态的阈值

  要用nagios实现监控某主机,就是要实现用nagios调用这样的命令即可。

  配置resource.cfg,文件内容:

  [root@localhostetc]#catresource.cfg|grep-v'#'|sed/^$/d//查看resource.cfg配置

  $USER1$=/usr/local/nagios/libexec

  $USER7$=-Cmypublic-2

  这里其实是定义两个变量$USER1$和$USER7$,因为在后面定义command的时候插件的路径是绝对路径,为了节省输入直接可以用$USER1$代替/usr/local/nagios/libexec。而SNMP插件的命令行中的参数需要设置SNMP相关的信息,为节省输入这里用$USER7$来代替

  -Cmypublic-2。大家可对照上面检测60.222.111.83的虚拟内存的例子结合来加以理解。

赞(14)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程