设为首页 收藏本站
查看: 846|回复: 0

Nagios监控系统详解

[复制链接]

尚未签到

发表于 2019-1-14 08:15:00 | 显示全部楼层 |阅读模式
  1 Nagios简介
  Nagios 全名为(Nagios Ain’t Goona Insist on Saintood),最初项目名字是 NetSaint。它是一款免费的开源 IT 基础设施监控系统,其功能强大,灵活性强,能有效监控 Windows 、Linux、VMware 和 Unix 主机状态,交换机、路由器等网络设置等。一旦主机或服务状态出现异常时,会发出邮件或短信报警第一时间通知 IT 运营人员,在状态恢复后发出正常的邮件或短信通知。Nagios 结构简单,可维护性强,越来越受中小企业青睐,以及运维和管理人员的使用。同时提供一个可选的基于浏览器的 Web 界面,方便管理人员查看系统的运行状态,网络状态、服务状态、日志信息,以及其他异常现象。
Nagios利用其众多的插件实现对本机和远端服务的监控,当被监控对象出现异常,Nagios就会及时给管理人员告警。它是一个基于TCP/IP协议的软件包,包含有nagios主程序和它的各个插件。
Nagios的主要功能特点简介:
- 监视网络服务(SMTP, POP3, HTTP, NNTP, PING等)
- 监视主机资源(进程,磁盘等)
- 简单的插件设计可以轻松扩展Nagios的监视功能
- 服务等监视的并发处理
- 错误通知功能(通过email,pager, 或其他用户自定义方法)
- 可指定自定义的事件处理控制器
-可选的基于浏览器的WEB界面以方便系统管理人员查看网络状态,各种系统问题,以及日志等等
- 可以通过手机查看系统监控信息


2 Nagios工作原理
Nagios 软件需安装在一台独立的服务器上运行,这台服务器称为监控中心,监控中心服务器可以采用 Linux 或 Unix 操作系统;每一台被监视的硬件主机或服务都运行一个与监控中心服务器进行通信的 Nagios 软件后台程序,也可以理解为 Agent 或插件均可。监控中心服务器读取配置文件中的指令与远程的守护程序进行通信,并且指示远程的守护程序进行必要的检查。虽然 Nagios 软件必须在 Linux 或 Unix 操作系统上运行,但是远程被监控的机器可以是任何能够与其进行通信的主机,根据远程主机返回的应答,Naigos 将依据配置进行回应;接着 Nagios 将通过本地的机器进行测试,如果检测返回值不正确,Nagios 将通过一种或多种方式报警;具体原理如下图所示:




3 Nagios监控系统搭建
3.1 部署规划

监控主机        rango    192.168.56.1
被监控机1        vm1    192.168.56.101

  被监控机2        vm2    192.168.56.102
  

  

  3.2 Nagios安装
  1. 安装前准备:
在编译安装前需确保安装以下包:gdgd-devel png png-devel jpeg
jpeg-devel zlib zlib-devel,使nagiosweb界面的Maps、Trends等功能有效:
yum install gd fontconfig-devel libjpeg-devel libpng-devel gd-devel perl-GD openssl-devel php mailx postfix cpp gcc gcc-c++ libstdc++ glib2-devel


  2. 创建用户和组:
  groupadd nagios
  groupadd nagcmd

  useradd -g nagios -G nagcmd -d /home/nagios -c "Nagios Admin" nagios
  

  3. 在监控主机上编译安装Nagios主程序Nagios-4.0.1.tar.gz:
  [root@rango ~]# tar zxvf Nagios-4.0.1.tar.gz ; cd nagios-4.0.1
[root@rango nagios-4.0.1]#./configure --prefix=/usr/local/nagios --with-nagios-user=nagios \
--with-nagios-group=nagios --with-command-user=nagios
--with-command-group=nagcmd --enable-event-broker --enable-nanosleep
--enable-embedded-perl --with-perlcache --with-gd-lib=/usr/lib --with-gd-inc=/usr/include[root@rango nagios-4.0.1]#make all[root@rango nagios-4.0.1]#make install      
[root@rango nagios-4.0.1]#make install-init   
[root@rango nagios-4.0.1]#make install-commandmode [root@rango nagios-4.0.1]#make install-webconf[root@rango nagios-4.0.1]#make install-config


4. 安装与配置apache:
编辑apache 的httpd.conf
最后面添加:
ScriptAlias /nagios/cgi-bin"/usr/local/nagios/sbin"

# SSLRequireSSL
Options ExecCGI
AllowOverride None
Order allow,deny
Allow from all
AuthName "Nagios Access"
AuthType Basic
AuthUserFile/usr/local/nagios/etc/htpasswd.users
Require valid-user



Alias /nagios "/usr/local/nagios/share"



# SSLRequireSSL
Options None
AllowOverride None
Order allow,deny
Allow from all
# Order deny,allow
# Deny from all
# Allow from 127.0.0.1
AuthName "Nagios Access"
AuthType Basic
AuthUserFile/usr/local/nagios/etc/htpasswd.users
Require valid-user


再次验证配置文件:/usr/local/nagios/bin/nagios -v/usr/local/nagios/etc/nagios.cfg
设置用户访问权限:
htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin
重新启动nagios 和apache:
service httpd restart
  service nagios restart

  

  5. 安装Postfix邮件服务:
  Nagios 监控平台支持邮件报警功能,所以需要安装邮件服务。这里采用互联网比较主流的 MTA —Postfix. 也可根据自己的生产环境去定义, 如: Sendmail、Qmail 等。由于 Nagios 只用到了 Postfix 的邮件发送功能,所以这里不需要对 Postfix 邮件服务作过多配置,安装 Postfix 套件,启动服务并在下次服务器重启自动加载即可。具体如下命令:
#yum install postifx#chkconfig postfix on; /etc/init.d/postfix restart


3.3 安装Nagios插件
  Naigos 提供的各种监控功能基本上是通过插件来完成的,而 Nagios 的核心指提供了很少的功能,因此安装插件是非常有必要的。Nagios 官网提供了很多不同版块的插件应用,同时插件版本与 Nagios 版本也没有什么关联。
  在监控系统的所有节点上安装Nagios插件:nagios-plugins-1.5.tar.gz
  tar zxvf nagios-plugins-1.5.tar.gz && cd nagios-plugins-1.5
  ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-command-user=nagios --with-command-group=nagcmd  --prefix=/usr/local/nagios
  make all
  make install
  chmod 755 /usr/local/nagios
  ll /usr/local/nagios/libexec/
total 5428
-rwxr-xr-x 1 nagios nagios 318368 Nov  8 21:19 check_apt
-rwxr-xr-x 1 nagios nagios   2248 Nov  8 21:19 check_breeze
-rwxr-xr-x 1 nagios nagios 121055 Nov  8 21:19 check_by_ssh
lrwxrwxrwx 1 nagios nagios      9 Nov  8 21:19 check_clamd -> check_tcp
-rwxr-xr-x 1 nagios nagios  84743 Nov  8 21:19 check_cluster
-r-xr-xr-x 1 nagios nagios 116277 Nov  8 21:19 check_dhcp
-rwxr-xr-x 1 nagios nagios 115838 Nov  8 21:19 check_dig
-rwxr-xr-x 1 nagios nagios 330608 Nov  8 21:19 check_disk
-rwxr-xr-x 1 nagios nagios   9286 Nov  8 21:19 check_disk_smb
-rwxr-xr-x 1 nagios nagios 122763 Nov  8 21:19 check_dns
-rwxr-xr-x 1 nagios nagios  64375 Nov  8 21:19 check_dummy
-rwxr-xr-x 1 nagios nagios   3050 Nov  8 21:19 check_file_age
-rwxr-xr-x 1 nagios nagios   6312 Nov  8 21:19 check_flexlm
lrwxrwxrwx 1 nagios nagios      9 Nov  8 21:19 check_ftp -> check_tcp
-rwxr-xr-x 1 nagios nagios 116722 Nov  8 21:19 check_hpjd
-rwxr-xr-x 1 nagios nagios 406658 Nov  8 21:19 check_http
-r-xr-xr-x 1 nagios nagios 122480 Nov  8 21:19 check_icmp
-rwxr-xr-x 1 nagios nagios  90529 Nov  8 21:19 check_ide_smart
-rwxr-xr-x 1 nagios nagios  15131 Nov  8 21:19 check_ifoperstatus
-rwxr-xr-x 1 nagios nagios  12592 Nov  8 21:19 check_ifstatus
lrwxrwxrwx 1 nagios nagios      9 Nov  8 21:19 check_imap -> check_tcp
-rwxr-xr-x 1 nagios nagios   6884 Nov  8 21:19 check_ircd
-rwxr-xr-x 1 nagios nagios 102018 Nov  8 21:19 check_ldap
lrwxrwxrwx 1 nagios nagios     10 Nov  8 21:19 check_ldaps -> check_ldap
-rwxr-xr-x 1 nagios nagios 103094 Nov  8 21:19 check_load
-rwxr-xr-x 1 nagios nagios   6017 Nov  8 21:19 check_log
-rwxr-xr-x 1 nagios nagios  20281 Nov  8 21:19 check_mailq
-rwxr-xr-x 1 nagios nagios  90563 Nov  8 21:19 check_mrtg
-rwxr-xr-x 1 nagios nagios  90820 Nov  8 21:19 check_mrtgtraf
-rwxr-xr-x 1 nagios nagios 102902 Nov  8 21:19 check_nagios
lrwxrwxrwx 1 nagios nagios      9 Nov  8 21:19 check_nntp -> check_tcp
-rwxrwxr-x 1 nagios nagios  65913 Nov 17 15:19 check_nrpe
-rwxr-xr-x 1 nagios nagios 119556 Nov  8 21:19 check_nt
-rwxr-xr-x 1 nagios nagios 119658 Nov  8 21:19 check_ntp
-rwxr-xr-x 1 nagios nagios 112690 Nov  8 21:19 check_ntp_peer
-rwxr-xr-x 1 nagios nagios 109906 Nov  8 21:19 check_ntp_time
-rwxr-xr-x 1 nagios nagios 145777 Nov  8 21:19 check_nwstat
-rwxr-xr-x 1 nagios nagios   8779 Nov  8 21:19 check_oracle
-rwxr-xr-x 1 nagios nagios 103337 Nov  8 21:19 check_overcr
-rwxr-xr-x 1 nagios nagios 124240 Nov  8 21:19 check_ping
lrwxrwxrwx 1 nagios nagios      9 Nov  8 21:19 check_pop -> check_tcp
-rwxr-xr-x 1 nagios nagios 325061 Nov  8 21:19 check_procs
-rwxr-xr-x 1 nagios nagios 100621 Nov  8 21:19 check_real
-rwxr-xr-x 1 nagios nagios   9578 Nov  8 21:19 check_rpc
-rwxr-xr-x 1 nagios nagios   1451 Nov  8 21:19 check_sensors
-rwxr-xr-x 1 nagios nagios 328529 Nov  8 21:19 check_smtp
-rwxr-xr-x 1 nagios nagios 381507 Nov  8 21:19 check_snmp
-rwxr-xr-x 1 nagios nagios  98154 Nov  8 21:19 check_ssh
-rwxr-xr-x 1 nagios nagios  88321 Nov  8 21:19 check_swap
-rwxr-xr-x 1 nagios nagios 112126 Nov  8 21:19 check_tcp
-rwxr-xr-x 1 nagios nagios 100527 Nov  8 21:19 check_time
lrwxrwxrwx 1 nagios nagios      9 Nov  8 21:19 check_udp -> check_tcp
-rwxr-xr-x 1 nagios nagios 110765 Nov  8 21:19 check_ups
-rwxr-xr-x 1 nagios nagios  83131 Nov  8 21:19 check_users
-rwxr-xr-x 1 nagios nagios   2933 Nov  8 21:19 check_wave
-rwxr-xr-x 1 nagios nagios 104604 Nov  8 21:19 negate
-rwxr-xr-x 1 nagios nagios  98773 Nov  8 21:19 urlize
-rwxr-xr-x 1 nagios nagios   1936 Nov  8 21:19 utils.pm
-rwxr-xr-x 1 nagios nagios   2917 Nov  8 21:19 utils.sh
  

  重启Nagios服务:

  /etc/init.d/nagios restart

  /etc/init.d/httpd restart

  chkconfig httpd on
  chkconfig naigos on
  

  3.4 防火墙和SELinux设置
  Selinux 和 Iptables 是 Linux 系统提供的安全防护机制,主要用来防护 Linux 系统下的服务或应用程序不受外界安全***等。一般企业考虑到 Nagios 监控平台的安全可靠性,都会采用硬件的防火墙或其他安全设备来对服务器进行防护,故此处禁用SELinux和iptables
  

  3.5 其他插件的安装和说明
nrpe_2.12.tar.gz ——监控Linux 需要(被监控的Linux服务器安装)
nsclient++0.3.5——监控windows 需要(被监控的Windows服务器安装)
ndoutils:ndoutils是将Nagios的配置及监控信息存储到数据库里,NPC通过调用ndo所存储的数据来展现Nagios的信息。启动:/usr/local/nagios/bin/ndo2db-c /usr/local/nagios/etc/ndo2db.cfg。
ps:ndoutils最新版本为1.5.2,只兼容Nagios3.x和NagiosXI,4.x版本不兼容,会报Error:Could not load module '/usr/local/nagios/bin/ndomod-3x.o' ->/usr/local/nagios/bin/ndomod-3x.o: undefined symbol:servicedependency_list的错误。
NPC:(NagiosPlugin for Cacti)是一个Cacti插件,安装后可以在Cacti界面里使用Nagios的功能。


3.6 Nagios Web访问
  通过浏览器,在地址栏输入: http://192.168.56.1/nagios, 输入用户名及密码即可访问 Naigos 登录界面。
  

  3.7 Nagios配置
  1. Nagios目录与相关配置文件
  Nagios 安装完成后,/usr/local/nagios/目录下会生成 nagios 相关目录及配置文件,默认的的配置文件在/usr/local/nagios/etc 目录下,如下表为Nagios 相关目录的名称及用途
目录名称作用binNagios 可执行程序所在目录etcNagios 配置文件目录sbinNagios cgi 文件所在目录, 也就是执行外部 命令所需要文件所在的目录shareNagios 网页存放路径libexecNagios 外部插件存放目录varNagios 日志文件、Lock 等文件所在的目录var/archivesNagios 日志自动归档目录var/rw用来存放外部命令文件的目录  下表为配置文件作用
配置文件说明cgi.cfg  控制 CGI 访问的配置文件nagios.cfg  Nagios 主配置文件resource.cfg  变量定义文件,又称为资源文件,在此文件中定义变量,以便由其他配置文件引用,如$USER1$objects  objects 是一个目录,在此目录下有很多配置文件模板,用于定义 Nagios 对象objects/commands.cfg  命令定义配置文件,其中定义的命令可以被其他配置文件引用objects/contacts.cfg 定义联系人和联系人组的配置文件objects/localhost.cfg    定义监控本地主机的配置文件objects/printer.cfg 定义监控打印机的一个配置文件模板,默认没有启用此文件objects/switch.cfg            监控路由器的一个配置文件模板,默认没有启用此文件objects/templates.cfg 定义主机和服务的一个模板配置文件,可以在其他配置文件中引用objects/timeperiods.cfg  定义 Nagios 监控时间段的配置文件objects/windows.cfg  监控 Windows 主机的一个配置文件模板,默认没有启用此文件备注:Nagios 在配置方面非常灵活,默认的配置文件并不是必需的。可以使用这些默认的配置文件,也可以创建自己的配置文件,然后在主配置文件 nagios.cfg 中引用即可。  

  2. Nagios配置文件之间的关联
  Nagios 的配置过程涉及几个定义有:主机、主机组、服务、服务组、联系人、联系人组、监控时间和监控命令等,从这些定义可以看出,Nagios 的各个配置文件之间是互为关联、彼此引用的。成功配置一台 Nagios 监控系统,需要掌握每个配置文件之间依赖与被依赖的关系,可从下面四个步骤来入手,第一步:定义哪些主机、主机组、服务和服务组,第二步:要定义这个监控要通过什么命令实现,第三步:要定义监控的时间段,第四步:要定义主机或服务出现问题时要通知的联系人和 联系人组;强烈建议依据以上顺序对 Nagios 系统进行相关配置。
  

  3. 主要配置文件详解
  templates.cfg文件
  define contact{  
        name                      generic-contact        #联系人名称
        service_notification_period     24x7             #当服务出现异常时,发送通知的时间段,时间段是 7x24 小时
        host_notification_period        24x7             #当主机出现异常时,发送通知的时间段,时间段是 7x24 小时
        service_notification_options    w,u,c,r          #这个定义的是“通知可以被发出的情况”。w 即 warning,表示警告状态,u 即 unknown,表示不明状态,c 即 criticle,表示紧急状态,r 即 recover,表示恢复状态
        host_notification_options       d,u,r            #定义主机在什么状态下需要发送通知给使用者,d 即 down,表示宕机状态,u 即 unreachable,表示不可到达状态,r 即 recovery,表示重新恢复状态。  
        service_notification_commands   notify-service-by-email  #服务故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-service-by-email”在 commands.cfg 文件中定义。  
        host_notification_commands      notify-host-by-email    #主机故障时,发送通知的方式,可以是邮件和短信,这里发送的方式是邮件,其中“notify-host-by-email”在 commands.cfg 文件中定义。
        }  
define host{  
        name                         linux-server    #主机名称  
        use                           generic-host   #use 表示引用,也就是将主机 generic-host 的所有属性引用到 linux-server 中来,在 nagios 配置中,很多情况下会用到引用。  
        check_period                   24x7          #这里的 check_period 告诉 nagios 检查主机的时间段  
        check_interval                  5            #nagios 对主机的检查时间间隔,这里是 5 分钟。  
        retry_interval                   1           #重试检查时间间隔,单位是分钟。  
        max_check_attempts              10           #nagios 对主机的最大检查次数,        check_command             check-host-alive  #指定检查主机状态的命令,其中“check-host-alive”在 commands.cfg 文件中定义。
        notification_period             workhours      #主机故障时,发送通知的时间范围,其中“workhours”在 timeperiods.cfg 中进行了定义,下面会陆续讲到。  
        notification_interval           30             #在主机出现异常后,故障一直没有解决,nagios 再次对使用者发出通知的时间。单位是分钟
        notification_options            d,u,r          #定义主机在什么状态下可以发送通知给使用者,d 即 down,表示宕机状态,u 即 unreachable,表示不可到达状态,r 即 recovery,表示重新恢复状态。  
        contact_groups                  admins         #指定联系人组,这个“admins”在 contacts.cfg 文件中定义。  
define service{
        name                      local-service    #定义一个服务名称
        use                       generic-service  #引用服务 local-service 的属性信息,local-service 主机在 templates.cfg 文件中进行了定义
        max_check_attempts             4     #最大检测 4 次,为了确定服务最终状态               
        normal_check_interval          5     #每 5 分钟检测一次
        retry_check_interval           1     #每 1 分钟重新检测服务,最终的状态能被确定      
        }
  

  hosts.cfg文件
  此文件默认不存在,需要手动创建,主要用来指定被监控的主机地址及相关属性信息,比如以下定义的vm1的主机信息:
  define host{
    use          linux-server
    host_name    vm1
    alias        vm1
    address     192.168.56.101
    }
  ......
  

  services.cfg文件
  此文件默认不存在,需要手动创建。主要用于定义监控的服务和主机资源,例如监控 HTTP 服务、FTP 服务、主机磁盘空间、主机系统负载等。比如定义监控vm1的http和ftp等服务的配置如下:
  define service{
    use        generic-service
    host_name    vm1
    service_description    HTTP
    check_command    check_http
    }
define service{
    use        generic-service
    host_name    vm1
    service_description     FTP
        check_command    check_ftp
    }
  ......
  

  nagios.cfg文件
  Nagios的主配置文件,包括Nagios日志文件、cfg文件、Nagios用户,组、lock文件等等Nagios的所有全局设置均在此设置,其中本例需要添加以下设置来指定三个被监控的主机的配置文件的位置:
  # Definitions for monitoring the local (Linux) host
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/vm1.cfg
cfg_file=/usr/local/nagios/etc/objects/vm2.cfg
  

  4. 实例配置
  Nagios允许单独定义某个主机的主机信息和服务配置信息到一个cfg文件中,比如vm1的配置文件如下:vm1.cfg
  define host{
    use          linux-server
    host_name    vm1
    alias        vm1
    address     192.168.56.101
    }
define service{
    use        generic-service
    host_name    vm1
    service_description    HTTP
    check_command    check_http
    }
define service{
    use        generic-service
    host_name    vm1
    service_description     FTP
        check_command    check_ftp
    }
define service{
    use    generic-service
    host_name    vm1
    service_description    SSH
    check_command    check_ssh
    }
define service{
    use    generic-service
    host_name    vm1
    service_description    check-load
    check_command    check_nrpe!check_load
    }
define service{
    use    generic-service
    host_name    vm1
    service_description    zombie_procs
    check_command    check_nrpe!check_zombie_procs
}
define service{
    use    generic-service
    host_name    vm1
    service_description    check-users
    check_command    check_nrpe!check_users
}
define service{
    use    generic-service
    host_name    vm1
    service_description    total_procs
    check_command    check_nrpe!check_total_procs
}
  此处定义监控ip地址为192.168.56.101的主机vm1的SSH、FTP等服务信息。
  

  

  3.8 Nagios启动运行
  1. 验证配置文件的正确性

  /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
  Nagios 提供的这个验证功能非常有用,如果你的配置文件有语法或配置错误,它会显示出错的配置文件及在文件中哪一行。检测结果中的报警信息通常是可以忽略的,因为一般只是建议性的提示。
  此处可以利用别名机制来简化Nagios配置检测机制:在当前用户的.bashrc文件下增加别名设置:
  alias nagioscheck='/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg'
  使生效:source ./.bashrc
  

  2. 启动Nagios服务
  通过初始化脚本启动Nagios:

  /etc/init.d/nagios start|restart|stop 或者 service nagios start
  

  手动方式启动Nagios:

  通过 Nagios 命令的-d 参数来启动 nagios 过护进程。

  /usr/local/nagios/bin/nagios -d /usr/local/nagios/etc/nagios.cf
  

  4 Nagios性能分析图标
  Nagios 对服务或主机监控的是一个瞬时状态,有时候系统管理员需要了解主机在一段时间内的性能及服务的响应状态,并且形成图表,这就需要通过查看日志数据来分析。但是这种方式不仅烦琐,而且抽象。为了能更直观的查看主机运行状态,这里采用 PNP 来实现此功能。PNP 是一个小巧的开源软件包,它是基于 PHP 和 Perl 脚本编写,PNP 可以利用 rrdtool 工具将 Nagios 采集的数据绘制成图表,然后显示主机或者服务在一段时间内运行的状况。以下详细介绍 PNP 安装配置流程:
  1. 安装RDDtool:yum install rrdtool
  2. 编译安装PNP:

  下载PNP http://pkgs.fedoraproject.org/repo/pkgs/pnp4nagios/pnp-0.4.14.tar.gz/9dbbf08191a258f6798c9516b3821ff0/
  tar zxvf pnp-0.4.14.tar.gz
  cd pnp-0.4.14
  #通过./configure --help查看configure的选项设置
  ./configure --with-nagios-user=nagios --with-nagios-group=nagios --with-rrdtool=/usr/bin/rrdtool --with-perfdata-dir=/usr/local/nagios/share/perfdata
  #最后一项指明存储rrd数据文件的目录
  make all
  make install
  make install-config
  make install-init
  注解:configure可能出现以下错误:
  checking for Perl Module Time::HiRes… no
configure: error: Perl Module Time::HiRes not available
  解决办法:安装相应的模块:yum install perl-Time-HiRes
  

  3. 配置PNP:

  3.1 PNP 配置文件定义
  在 PNP 安装完成后, 默认安装目录下回自带相应的模板配置文件, 因此只需要参考相应的模板文件进行修改即可:
  cd /usr/local/nagios/etc/pnp/

  cp process_perfdata.cfg-sample process_perfdata.cfg
  cp npcd.cfg-sample npcd.cfg
  cp rra.cfg-sample rra.cfg

  chown -R nagios:nagios /usr/local/nagios/etc/pn
  

  

  3.2 修改 process_perfdata.cfg 文件
  打开 Nagios 下的 process_perfdata.cfg 文件,修改相关内容。将数字 0 变更为 2 是开启了日志的调试功能,操作如下:
  LOG_FILE = /usr/local/nagios/var/perfdata.log
#
# Loglevel 0=silent 1=normal 2=debug
#
LOG_LEVEL = 2
  

  3.3 修改 Nagios 相关配置文件

  •   增加数据图标识:修改 templates.cfg,增加一个定义 PNP 的 host 和 service:
      #pnp host set
    define host{
        name            hosts-pnp
        register        0
        action_url        /nagios/pnp/index.php?host=$HOSTNAME$&srv=_HOST_
        process_perf_data    1
        }
      # pnp service set
    define service{
        name                services-pnp
        register            0
        action_url            /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$
        process_perf_data        1
        }
  •   修改 nagios.cfg
      如果想让 nagios 将数据输出,首先要修改 nagios 的主配置文件 nagios.cfg,找到如下几项,如有注释的将其去掉。修改后的信息如下:#vim /usr/local/nagios/etc/nagios.cfgprocess_performance_data=1
      host_perfdata_command=process-host-perfdataservice_perfdata_command=process-service-perfdata
  •   修改 commands.cfg
      process-host-perfdata 和 process-service-perfdata 指令声明了 nagios 输出哪些值到输出文件中。 不过这些定义相对简单,而 PNP 提供了一个 Perl 脚本,非常详细地定义了一个输出数据的方法,process_perfdata.pl 其实是 PNP 自带的一个脚本,这个脚本在 PNP 安装完成后会自动生成。因此,可以将 process-host-perfdata 和 process-service-perfdata 指令中对应的执行命令的内容替换成此脚本。增加下图的内容:
      define command{
        command_name    process-host-perfdata
        command_line    /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl -d HOSTPERFDATA
      }
      define command{
        command_name    process-service-perfdata
        command_line    /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl
        }
  •   修改 hosts.cfg 与 services.cfg(此处为vm1.cfg、vm2.cfg)
      将 hosts-pnp 和 services-pnp 引用到 vm1.cfg 和 vm2.cfg 中,修改后的 vm1.cfg 内容为
      define host{
        use          linux-server,hosts-pnp
        host_name    vm1
        alias        vm1
        address     192.168.56.101
        }
    define service{
        use        generic-service,services-pnp
        host_name    vm1
        service_description    HTTP
        check_command    check_http
        }
      .......
      

  

  3.4 查看性能图标功能
  访问Nagios的Web界面,点击数据图标查看相应的性能图示。
  

  5 利用NRPE扩展Nagios功能
  监控linux本地主机时,我们可以直接更改配置文件进行监控,如果需要监控的主机与nagios不在同一机器上,即监控远程linux主机时,我们需要借助NRPE插件实现。通过在远程服务器上安装 NRPE 构件及 Nagios 插件程序来向 Nagios 监控平台提供该服务器的一些本地情况,如 CPU 负载、内存使用、硬盘使用,服务等。这里将 Nagios 监控平台称为 Nagios 服务器 端,而将远程被监控的服务器称为 Nagios 客户端。如下为NRPE原理图,

  

  5.1 NRPE的组成部分和监测类型
  NRPE 总共由两部分组成:
  check_nrpe 插件,位于监控主机上
  NRPE daemon,运行在远程被监控的 Linux 主机上
  当监控远程 Linux/UNIX 主机服务或资源时,工作流程如下:

  •   nagios 会运行 check_nrpe 这个插件,并且会告诉它需要检查什么;
  •   check_nrpe 插件会连接到远程的 NRPE daemon,所用的方式是 SSL;
  •   NRPE daemon 会运行相应的 Nagios 插件来执行检查动作;
  •   NPRE daemon 将检查的结果返回给 check_nrpe 插件,插件将其递交给 Nagios 做处理。
  NRPE daemon 需要 Nagios 插件安装在远程的 Linux 主机上,否则 daemon 不能做任何的监控。
  

  NRPE 的检测类型分为两种:
  直接检测:检测的对象是运行 NRPE 的那台 Linux 主机的本地资源,原理如下:
  直接使用 NRPE 插件监控远程 Linux/UNIX 主机的本地或者私有资源;如 CPU 负载、内存使用、SWAP 空间使用、硬盘等运行状况。如下为直接检测工作原理图,

  
  间接检测:当运行 Nagios 的监控主机无法访问到某台被监控主机,但是运行 NRPE 的机器可以访问得到的时候,运行 NRPE 的主机就充当一个中间代理,将监控请求发送到被监控对象上。如下为间接检测图,

  

  

  5.2 服务器端安装配置NRPE
  1. 安装NRPE
  tar zxvf nrpe-2.15.tar.gz ; cd nrpe-2.15
  ./configure
  make all
  make install-plugin
  make install-daemon
  make install-daemon-config
  

  2. 定义check_nrpe命令
  在文件/usr/local/nagios/etc/objects/commands.cfg后面增加:
  # check nrpe
define command{
    command_name    check_nrpe
    command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -t 30 -c $ARG1$
    }
  

  3. 创建/usr/local/nagios/etc/objects/remotehost.cfg,比如vm1.cfg文件的定义:
  host定义示例:
  define host{
  use linux-server
  host_name vm1

  address 192.168.56.101
  }

  Service定义示例:
  define service{
  use generic-service
  service_description Root Partition
  check_command check_nrpe!check_disk
  }
  查看配置文件是否正确:nagioscheck
  重新加载配置文件:/etc/init.d/nagios reload
  

  5.3 Linux客户端安装NRPE
  1. 安装Nagios插件nagios-plugin
  添加 nagios 用户名,且不允许 nagios 用户登录, 此用户用于与 Nagios 服务器通信所用:
  useradd -s /sbin/nolgin nagios

  tar zxvf nagios-plugins-1.5.tar.gz ; cd nagios-plugin-1.5
  ./configure
  make && make install
  

  2. 安装NRPE
  tar zxvf nrpe-2.15.tar.gz
  cd nrpe-2.15
  ./configure
  make all
  make install-plugin
  make install-daemon
  make install-daemon-config
  yum install xinetd
  make install-xinetd
  

  3. 配置NRPE
  定义被监控的 Linux 主机的对象,监控此主机的 CPU 负载、登录用户数、磁盘分区、进程、swap 使用情况等,编辑/usr/local/nagios/etc/nrpe.cfg 文件,示例如下,
  command[check_users]=/usr/local/nagios/libexec/check_users -w 5 -c 10
command[check_load]=/usr/local/nagios/libexec/check_load -w 15,10,5 -c 30,25,20
command[check_hda1]=/usr/local/nagios/libexec/check_disk -w 20% -c 10% -p /dev/hda1
command[check_zombie_procs]=/usr/local/nagios/libexec/check_procs -w 5 -c 10 -s Z
command[check_total_procs]=/usr/local/nagios/libexec/check_procs -w 150 -c 200
  

  4. 定义xinetd服务支持NRPE
  修改 only_from 项,增加 Ngaios 服务器的地址,这样一来服务器与客户端就可进行 nrpe 会话,监控到 Linux 客户端相关信息,被监控端也更加容易维护管理:
  # default: on
# description: NRPE (Nagios Remote Plugin Executor)
service nrpe
{
           flags           = REUSE
        socket_type     = stream   
    port        = 5666   
           wait            = no
        user            = nagios
    group        = nagios
           server          = /usr/local/nagios/bin/nrpe
        server_args     = -c /usr/local/nagios/etc/nrpe.cfg --inetd
           log_on_failure  += USERID
        disable         = no
    only_from       = 127.0.0.1 localhost 192.168.56.1
}
  

  5. 定义服务端口
  在 Linux 客户端"/etc/services" 文件增加一行:
  nrpe 5666/tcp #NRPE
  

  6. 测试NRPE功能
  由于 NRPE 相应的插件已经安装成功, 这里使用 check_nrpe 命令来验证是否 nrpe 是否正常运行,如果执行以下命令能够显示 NRPE 的具体版本信息,则表示 nrpe 运行正常,加载重启 xinetd 服务即可:
  /usr/local/nagios/libexec/check_nrpe -H localhost
NRPE v2.15
  /etc/init.d/xinetd restart
  

  6 Nagios管理平台简介
  通过上面所有的软件及插件的安装与配置,Nagios 监控系统架构成功的完成了;若想进一步扩展,如监控 Windows 平台,则需要在 Windowns 系统安装 NSClient 软件,并在 Nagios 服务器定义 windows.cfg 等文件,VMware 则需要 Nagios 官网下载相应的插件及模块文件,并在 Nagios 服务器编辑 command.cfg、hosts.cfg、services.cfg 文件,示例如下,
  Window 平台
vim /usr/local/nagios/etc/monitor/windows.cfg

define host{
        use             windows-server,hosts-pnp
        host_name       Windowns Server 2003_192      
        alias           Remote win2003 192      
        address         192.168.1.192  
        }
define service{
        use                     generic-service,services-pnp
        host_name               Windowns Server 2003_192
        service_description     NSClient++ Version
        check_command           check_nt!CLIENTVERSION
        }        }
………

  VMware 平台
vim/usr/local/nagios/etc/monitor/commands.cfg

define command{
command_name check_esx3_host_net_usage
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l net -s usage -w $ARG3$ -c $ARG4$
}
define command{
command_name check_esx3_host_runtime_issues
command_line $USER1$/check_esx3 -H $HOSTADDRESS$ -u $ARG1$ -p $ARG2$ -l runtime -s issues
……
  

  7 Nagios邮件报警功能设置
  Nagios的报警系统主要有以下三种方式:
一、声音报警
二、电子邮件报警
三、手机短讯报警
  以下为邮件报警系统的设置过程(以sendmail为邮件服务器)
  1. 开启系统自带的sendmail服务
  /etc/init.d/sendmail start
  注解:若未安装,可:yum install -y sendmail* ; /etc/init.d/sendmail start
  测试服务:echo "test" | mail youraddress
  

  2. 配置Nagios报警邮箱
  vim /usr/local/nagios/etc/objects/contacts.cfg:
  define contact{
        contact_name                    nagiosadmin             ; Short name of user
        use                             generic-contact         ; Inherit default values from generic-contact template (defined above)
        alias                           Nagios Admin            ; Full name of user
        email                           rangochan1989@gmail.com ;

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-662962-1-1.html 上篇帖子: 【4】nagios从零学习使用 下篇帖子: 【5】nagios从零学习使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表