在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Nagios的基本思想就是nagios server 获取被监控节点(monitored server)的相关信息,通过CGI(Web GUI)或者邮件等方式展示给管理员。 如果是个个被监控节点直接去取,机器一多,nagios所在的系统CPU可能会扛不住,所以我们系统在测试环境中中使用了被动获取NSCA的方式,以后可能会转到NDOUtils方式,通过数据库实现监控端和被监控端的分离。
1. 数据生成: 被监控端程序定时收集数据并发送到Nagios服务端,Nagios服务端的NSCA进程收到数据,数据放到指定文件(nagios.cfg和nsca.cfg中指定)。 2. 数据处理: Nagios实时处理指定文件,将数据存到queue,同时Nagios会定期检查queue,对数据做最终处理,例如:发送alert邮件,记录日志等。 接下来说说我们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方式来获取我们需要的被监控节点的资源使用情况信息。
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 <ip> 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 <ip> contact_groups system_1_admins,systems_admins } ...... ## define services # system_1 oam_1</p> <p>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 } ......</p> <p># 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</p> <p>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 <a href="mailto:[email protected]">[email protected]</a> ; <<***** 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 <a href="mailto:[email protected]">[email protected]</a> ; <<***** CHANGE THIS TO YOUR EMAIL ADDRESS ****** } ......
复制代码 代码如下: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 }</p> <p>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的配置,记得通知设计的时候小心消息泛滥被投诉。。。 |
请发表评论