189 8069 5689

监控软件Nagios的服务器端如何在Linux系统上进行安装和配置

本篇内容主要讲解“监控软件Nagios的服务器端如何在Linux系统上进行安装和配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“监控软件Nagios的服务器端如何在Linux系统上进行安装和配置”吧!

开福网站建设公司创新互联公司,开福网站设计制作,有大型网站制作公司丰富经验。已为开福1000+提供企业网站建设服务。企业网站搭建\成都外贸网站建设公司要多少钱,请找那个售后服务好的开福做网站的公司定做!

Nagios的基本思想就是nagios server 获取被监控节点(monitored server)的相关信息,通过CGI(Web GUI)或者邮件等方式展示给管理员。
信息的获取主要分为主动拿,被动得到,其中主动拿分直接去被监控节点取或者中间数据库节点取。

如果是个个被监控节点直接去取,机器一多,nagios所在的系统CPU可能会扛不住,所以我们系统在测试环境中中使用了被动获取NSCA的方式,以后可能会转到NDOUtils方式,通过数据库实现监控端和被监控端的分离。


NSCA具体工作过程:

1. 数据生成: 被监控端程序定时收集数据并发送到Nagios服务端,Nagios服务端的NSCA进程收到数据,数据放到指定文件(nagios.cfg和nsca.cfg中指定)。

2. 数据处理: Nagios实时处理指定文件,将数据存到queue,同时Nagios会定期检查queue,对数据做最终处理,例如:发送alert邮件,记录日志等。
监控系统的最终模式:Nagios + NSCA + Pnp4nagios(bulk&npcd)。
NSCA负责收集数据,Nagios把收集的数据按照Pnp4nagios要求的格式写到spool文件,每隔15分钟把文件移动到npcd处理的spool文件夹,npcd调用process_perfdata.pl处理spool文件夹中的文件,最后存到rrd里,在Nagios监控页面加入pnp4nagios的web访问url,就可以查看图形化监控数据了。

接下来说说我们Nagios的安装,

Nagios Server端安装

一台liunx server(CentOS),安装以下安装包 的的对应版本

1. 基本nagios以及Web GUI安装包

代码如下:


httpd-*.tar.gz,php-*.tar.gz, nagios-*.tar.gz, nagios-plugins-*.tar.gz


安装步骤

2. 图形化性能数据安装包

代码如下:


pnp4nagios-*.tar.gz


安装步骤
3.  Linux 系统监控插件

主动方式:nrpe-*.tar.gz,被动方式:nsca-*.tar.gz
nsca安装步骤
Note: inetd或者xinetd没有使用在我们的系统中


Nagios monitored Clients
对于NSCA模式,我们使用了Python脚本+Cron Job(crontab)的方式来定时按格式发送数据到Nagios Server,所以被监控设备上面只要安装了Python就可以了。

现在说说在我们系统中如何是用NSCA方式来获取我们需要的被监控节点的资源使用情况信息。


Nagios Server端的基本配置:

1. nagios web gui 访问配置,系统中使用的是nagios core中推荐的配置方式,通过apache httpd访问nagios web,安装nagios的时候会自动寻找系统中安装的httpd,把nagios的httpd文件放到httpd的conf.d目录下,这样,只要生成一次nagios web访问的密码就可以通过http://localhost/nagios/访问nagios web.

代码如下:


htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin


2. 在Nagios中定义要监控的机器和要监控的服务
2. 1 在/usr/local/nagios/etc/objects/中定义被监听节点和需要被监听的服务,例如:

代码如下:


/usr/local/nagios/etc/objects/system_1.cfg
## define hosts
# system_1 oam_1
define host{
       use                     linux-server,host-pnp
       host_name               system_1_oam_1
       address                
contact_groups  system_1_admins,systems_admins
       }
......
# system_1 traffic_1
define host{
       use                     linux-server,host-pnp
       host_name               system_1_traffic_1
       address                
contact_groups  system_1_admins,systems_admins
       }
......
## define services
# system_1 oam_1

define service{
       use                      passive_service,srv-pnp
       service_description      CPU_Status
       host_name                system_1_oam_1
contact_groups   system_1_admins,systems_admins
       }
define service{
       use                      passive_service,srv-pnp
       service_description      Memory_Status
       host_name                system_1_oam_1
contact_groups   system_1_admins,systems_admins
       }
......

# system_1 traffic_1
define service{
       use                      passive_service,srv-pnp
       service_description      CPU_Status
       host_name                system_1_traffic_1
contact_groups   system_1_admins,systems_admins
       }


Note:
a. passive_service是NSCA需要的配置
b. host-pnp和srv-pnp是pnp4nagios要用的配置
2.2  把定义的配置文件添加到/usr/local/nagios/etc/nagios.cfg中

代码如下:


cfg_file=/usr/local/nagios/etc/objects/localhost.cfg

cfg_file=/usr/local/nagios/etc/objects/system_1.cfg
cfg_file=/usr/local/nagios/etc/objects/system_2.cfg
......
nagios_user=nagios
nagios_group=nagios
lock_file=/usr/local/nagios/var/nagios.lock
status_update_interval=10


3. 对不同的系统添加系统监控管理员

3.1

代码如下:


/usr/local/nagios/etc/objects/contactgroups.cfg
define contactgroup{  
       contactgroup_name       system_1_admins  
       alias                   system_1_admins  
       members                 oam-1,traffic-1  
       }  
......


3.2

代码如下:


/usr/local/nagios/etc/objects/contacts.cfg
define contact{  
       contact_name                    oam-1                  ; Short name of user  
       use                             generic-contact         ; Inherit default values from generic-contact template (defined above)  
       alias                           oam-1                  ; Full name of user  
       service_notification_options    c                        
       host_notification_options       d  
       email                           nobody@localhost.com   ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******  
       }  
 
define contact{  
       contact_name                    traffic-1           ; Short name of user  
       use                             generic-contact         ; Inherit default values from generic-contact template (defined above)  
       alias                           traffic-1           ; Full name of user  
       email                           nobody@localhost.com  ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ******  
       }  
......  


4. NSCA配置
4.1 NSCA端:如果没有端口冲突之类的问题,/usr/local/nagios/etc/nsca.cfg可以作为默认配置直接使用
Note: 当Nagios端有问题的时候,nsca本身可以保存收到的数据,要小心数据量大小的问题,监控机器多的时候,Nagios挂的时间长了点,文件就很容易变的很大
4.2 Nagios端:
4.2.1 修改/usr/local/nagios/etc/objects/templates.cfg,增加被动检测模版

代码如下:


define service{  
       use                             generic-service  
       name                            passive_service  
       active_checks_enabled           0  
       passive_checks_enabled          1                       # We want only passive checking  
       flap_detection_enabled          0  
       register                        0                       # This is a template, not a real service  
       is_volatile                     0  
       check_period                    24x7  
       max_check_attempts              1  
       normal_check_interval           5  
       retry_check_interval            1  
       check_freshness                 0  
       contact_groups                  system_admins  
       check_command                   check_dummy!0  
       notification_interval           120  
       notification_period             24x7  
       notification_options            w,u,c,r  
       stalking_options                w,c,u  
       }  


4. 2.2 修改/usr/local/nagios/etc/commands.cfg,增加命令定义如何处理NSCA发送来的数据

代码如下:


# 'check_nsca' command definition  
define command{  
       command_name    check_dummy  
       command_line    $USER1$check_dummy$ARG1$  
       }  


Note: check_dummy很简单,处理Nagios中OK,WARNING,CRITICAL,UNKNOWN

代码如下:


nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy  0  
OK  
nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy  1  
WARNING  
nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy  2  
CRITICAL  
nagios:/usr/local/nagios/etc # /usr/local/nagios/libexec/check_dummy  3  
UNKNOWN


4.2.3 检查/usr/local/nagios/etc/nagios.cfg已经可以处理外部NSCA发送来的数据,默认是没有问题的

代码如下:


accept_passive_service_checks=1  
accept_passive_host_checks=1  
check_external_commands=1  
command_check_interval=-1  
command_file=/usr/local/nagios/var/rw/nagios.cmd  
log_passive_checks=1  


5. 查看Nagios GUI中新加的host和service已经存在

6. 添加pnp4nagios bulk+npcd 模式监听系统

6.1 修改/usr/local/nagios/etc/nagios.cfg

代码如下:


#处理performance数据  
process_performance_data=1  
#host_perfdata_command=process-host-perfdata  
#service_perfdata_command=process-service-perfdata  
#performance数据存储文件  
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata  
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata  
#performance数据存储格式  
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$  
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$\tSERVICEOUTPUT::$SERVICEOUTPUT$  
#performance文件存储方式  
host_perfdata_file_mode=a  
service_perfdata_file_mode=a  
#performance文件处理时间间隔  
host_perfdata_file_processing_interval=15  
service_perfdata_file_processing_interval=15  
#performance文件处理命令  
host_perfdata_file_processing_command=process-host-perfdata-fileservice_perfdata_file_processing_command=process-service-perfdata-file


6.2 修改/usr/local/nagios/etc/objects/commands.cfg,增加performance文件处理命令

代码如下:


define command{  
      command_name    process-service-perfdata-file  
      command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$  
}  
 
define command{  
      command_name    process-host-perfdata-file  
      command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$  
}  


6.3 修改nagios.cfg,设置在nagios web gui中显示pnp4nagios图标的方式
第一种方法在templates.cfg里面加入如下,只能在新窗口打开图像数据

代码如下:


define host {
name       host-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
register   0
}

define service {
name       srv-pnp
action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
register   0
}


第二种方法可以在鼠标移到pnp4nagios图标的时候就可以开到实时图标,不过效果不是很好,按照说明加入如下:

拷贝status-header.ssi到/usr/local/nagios/share/ssi/目录下面,同时修改templates.cfg,加入如下内容:

代码如下:


define host {
   name       host-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
   register   0
}
define service {
   name       srv-pnp
   action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
   register   0
}


Note1: 自动出现的小窗口清晰度不好,我喜欢第一种方式
Note2: 这里没有涉及email的配置,记得通知设计的时候小心消息泛滥被投诉。。。

到此,相信大家对“监控软件Nagios的服务器端如何在Linux系统上进行安装和配置”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


当前文章:监控软件Nagios的服务器端如何在Linux系统上进行安装和配置
当前路径:http://cdxtjz.cn/article/ipidjc.html

其他资讯