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

Nagios学习笔记之(三)配置详解

[复制链接]

尚未签到

发表于 2019-1-15 12:06:12 | 显示全部楼层 |阅读模式
  Nagios学习笔记之(三)配置详解



前言:

上篇先实现的监控部署,就是想先搭建起来,有点小成就,现在再来看配置文件中的详解。只有把其中配置文件中的联系都理解清楚了,才能方便日后自己自定义的检测。Nagios的配置文件还是有其鲜明的特点的。

网上也有很多零零闪闪的配置讲解,但大多都不够详解,此篇为自己整理,当然也参考了网络上的信息,有配置的解释还有自己的一些备注,可能还有很多不完善的地方,后续会慢慢补充,希望看的人能看懂,还有就是自己以后能看懂,呵呵。

好了,不多说了,开始!



一、目录层次:

Nagios以及其插件,安装并配置好了以后,目录层次如下:


  • bin              #Nagios执行程序所在目录,包括nagios、npc、nrpe等;
  • etc              #Nagios配置文件位置,重点;
  • libexec          #Nagios插件目录,里面有具体监控的各种插件,重点;
  • sbin             #Nagios Cgi文件所在目录,也就是执行外部命令所需文件所在的目录;
  • share            #Nagios网页文件所在的目录,也就是web页面给我们展示的文件;
  • include          #Nagioscgi文件的外部调用;
  • var              #Nagios日志文件、spid 等文件所在的目录。

二、配置文件概览:

Nagios所有的配置文件以cfg为结尾,在默认装好以后会在etc/下生成一些,我们来逐个看下:




  • etc/nagios.cfg         #Nagios主配置文件,所有的cfg文件(外部调用除外)必须都在此文件中引用才能生效;
  • etc/resource.cfg       #定义$USER1$变量,设置插件路径;
  • etc/nrpe.cfg           #定义nrpe检测命令的文件,在command中引用;
  • etc/objects下:
  •     commands.cfg    #定义命令执行的文件,比如check_tcp、check_local_disk等,由后面定义服务的配置文件来引用;
  •     contacts.cfg    #定义联系人的文件,比如服务down了通知的对象;
  •     localhost.cfg   #定义本机的监控条目,默认生成;
  •     printer.cfg     #定义打印机的文件,默认未启用,在生产环境中意义不大;
  •     switch.cfg      #定义监控路由器和交换机的配置文件,默认未启用;
  •     templates.cfg   #定义服务类型的文件,样本文件,比如定义的linux-server就是在此文件中预先定义好;
  •     timeperiods.cfg #定义要监控时间段文件,比如24x7,workhours等;
  •     windows.cfg     #定义监控Windows的文件,默认未启用。



备注:这些文件的名字不是一定的,只要里面的内容正确就可以,Nagios可以自动识别,比如你把commands.cfg和localhost.cfg的文件名互换,都是没有问题的。



三、各配置文件详解:(考虑篇幅,只列举部分)

1.etc/nagios.cfg(主配置文件)


  • log_file=/usr/local/nagios/var/nagios.log                        
  • # 这个变量用于设定Nagios在何处创建其日志文件。
  • # OBJECT CONFIGURATION FILE(S)
  • # 对象的配置文件
  • # 可以指定单个对象的配置文件, 如下所示:
  • cfg_file=/usr/local/nagios/etc/objects/commands.cfg   
  • #定义其命令文件
  • cfg_file=/usr/local/nagios/etc/objects/contacts.cfg      
  • #定义联系人文件
  • cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg  
  • #定义时间段文件
  • cfg_file=/usr/local/nagios/etc/objects/templates.cfg      
  • #定义样本文件
  • cfg_file=/usr/local/nagios/etc/objects/localhost.cfg      
  • # 定义监测本地( Linux )主机

  • #cfg_file=/usr/local/nagios/etc/objects/windows.cfg     
  • # 定义监测( windows )主机

  • #cfg_file=/usr/local/nagios/etc/objects/switch.cfg         
  • # 定义监测路由器或交换机
  •   
  • #cfg_file=/usr/local/nagios/etc/objects/printer.cfg         
  • # 定义监测打印机
  •   
  • # 也可以告诉Nagios处理所有配置文件(带有.cfg扩展名)在特定的目录使用cfg_dir指令如下所示:
  • #cfg_dir=/usr/local/nagios/etc/servers
  • #cfg_dir=/usr/local/nagios/etc/printers
  • #cfg_dir=/usr/local/nagios/etc/switches
  • #cfg_dir=/usr/local/nagios/etc/routers



总结:配置文件里的变量:

日志文件:

格式:    log_file=

样例:    log_file=/usr/local/nagios/var/nagios.log




说明:

这个变量用于设定Nagios在何处创建其日志文件。它应该是你主配置文件里面的第一个变量,当Nagios找到你配置文件并发现配置里有错误时会向该文件中写入错误信息。如果你使能了日志回滚,Nagios将在每小时、每天、每周或每月对日志进行回滚。




对象配置文件:

格式:    cfg_file=

样例:

cfg_file=/usr/local/nagios/etc/hosts.cfg

cfg_file=/usr/local/nagios/etc/servers.cfg

cfg_file=/usr/local/nagios/etc/commands.cfg




说明:

该变量用于指定一个包含有将用于Nagios监控对象的对象配置文件。对象配置文件中包括有主机、主机组、联系人、联系人组、服务、命令等等对象的定义。配置信息可以切分为多个文件并且用cfg_file=语句来指向每个待处理的配置文件.




对象配置目录:

格式:    cfg_dir=

样例:

cfg_dir=/usr/local/nagios/etc/commands

cfg_dir=/usr/local/nagios/etc/servers

cfg_dir=/usr/local/nagios/etc/hosts




说明:

该变量用于指定一个目录,目录里包含有将用于Nagios监控对象的对象配置文件。所有的在这个目录下的且以.cfg为扩展名的文件将被作为配置文件来处理。另外,Nagios将会递归该目录下的子目录并处理其子目录下的全部配置文件。你可以把配置放入不同的目录并且用cfg_dir=语句来指向每个待处理的目录。



2.etc/objects/commands.cfg(命令配置文件)


  • #定义通知的方式,主机发生故障通知和服务发送故障通知
  • define command{
  •         command_name    notify-host-by-email
  •         command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $H
  • OSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
  •         }
  • #定义通知的方式,服务发生故障通知和服务发送故障通知
  • # 'notify-service-by-email' command definition
  • define command{
  •         command_name    notify-service-by-email
  •         command_line    /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nS
  • tate: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SE
  • RVICESTATE$ **" $CONTACTEMAIL$
  •         }
  • #定义检测主机是否存活的命令,command_name是最后在服务中的引用名,而它是调用的check_ping命令来实现的
  • define command{
  •         command_name    check-host-alive
  •         command_line    $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 5
  •         }
  • #定义检测主机cpu负载的命令
  • define command{
  •         command_name    check_local_load
  •         command_line    $USER1$/check_load -w $ARG1$ -c $ARG2$
  •         }
  • #定义检测主机进程的命令
  • define command{
  •         command_name    check_local_procs
  •         command_line    $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
  •         }
  • #定义检测主机tcp端口的命令
  • define command{
  •         command_name    check_tcp
  •         command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ $ARG2$
  •         }

总结:

命令配置文件:

格式:   

define command{

    command_name    命令名

    command_line       命令调用的实际插件路径以及阀值

    }

样例:

cfg_file=/usr/local/nagios/etc/hosts.cfg

cfg_file=/usr/local/nagios/etc/servers.cfg

cfg_file=/usr/local/nagios/etc/commands.cfg




说明:

该变量用于指定一个包含有将用于Nagios监控命令的配置文件。对象配置文件中包括有命令名以及实际插件路径以及阀值的定义。



3./etc/objects/templates.cfg(样本配置文件)


  • 此定义的为类,也就是日后定义主机或者服务时指定的name引用
  • define service{
  •         name                            generic-service   #通过name来指定服务类名,这里的generice-service是一个类名  
  •         active_checks_enabled               1             #设定启用活动监测服务
  •         passive_checks_enabled              1             #设定启用被动监测服务
  •         parallelize_check                   1             #设定启用并发活动监测服务
  •         obsess_over_service                 1             #设定启用服务防停滞
  •         check_freshness                     0             #设定关闭更新监测
  •         notifications_enabled               1             #设定启用事件通知   
  •         event_handler_enabled               1             #设定启用事件处理程序
  •         flap_detection_enabled              1             #设定启用状态抖动监测
  •         failure_prediction_enabled          1             #设定启用故障预测
  •         process_perf_data                   1             #设定启用进程性能数据记录
  •         retain_status_information           1             #设定启用状态信息保存功能。当Nagios重新启动的时候不会是空数据,而是先显示上次离线时最后保留的状态数据。
  •         retain_nonstatus_information        1             #设定启用非状态信息保存功能。当Nagios重新启动的时候不会是空数据,而是先显示上次离线时最后保留的非状态数据
  •         is_volatile                         0             #设定服务非易失
  •         check_period                      24x7            #设定监控的时间段
  •         max_check_attempts                  3             #设定监测失败后最多尝试次数
  •         normal_check_interval              10             #设定正常监测服务的间隔,单位分
  •         retry_check_interval                2             #设定监测失败后尝试的间隔,单位分
  •         contact_groups                  admins            #定义通知联系人租
  •         notification_options            w,u,c,r ,d        #设定监测指定服务产生的事件通知的条件选项。这里后面跟上一些级别类型参数:
  •                                                                w代表warning告警;
  •                                                                u代表unknown未知;
  •                                                                c代表critical严重;
  •                                                                r代表recover恢复;
  •                                                                d代表down奔溃。
  •         notification_interval              60               #设定服务通知的间隔
  •         notification_period               24x7              #设定服务通知运行时间
  •          register                           0               #设定register表明本段定义的是一个服务类,而不是具体的服务   
  •         }

        

4.etc/objects/localhost.cfg(本机监控文件)


  • define host{                         #此定义的为监控主机的配置文件
  •         use              linux-server       #引用类,在templates.cfg中预定义
  •         host_name        localhost          #指定主机名,并不是实际机器的主机名,自己定义,方便以后在定义服务时调用
  •         alias            localhost          #别名
  •         address          127.0.0.1          #指定监控主机的地址
  •         }
  • define service{                       #此定义为监控主机服务的配置文件
  •         use              local-service       #引用类,在templates.cfg中预定义
  •         host_name        localhost           #指定主机名,在host段中预定义
  •         service_description  PING            #监控服务的名称,也就是在web页面上显示的监控项目
  •         check_command    check_ping!100.0,20%!500.0,60%    #具体监控的命令以及阀值
  •         }  

备注: 以上定义的主机和服务,没有指定通知联系人,那是因为在其中引用了类,而templates.cfg中定义的类是有指定联系人的。

      

5.etc/objects/contacts.cfg(联系人配置文件)


  • define contact{
  •         contact_name        nagiosadmin     #定义联系人的名称,方便以后在监控项目中调用   
  •         use                 generic-contact #引用类,在templates.cfg中预定义
  •         alias               Nagios Admin    #别名   
  •         email               test@abc.com    #邮件地址
  •         }
  • define contactgroup{
  •         contactgroup_name    admins         #定义联系人组的名称,方便一次性发送多人
  •         alias                Nagios Administrators   #别名
  •         members              nagiosadmin    #定义组成员,这里nagiosadmin,也就是上面contact_name的值
  •         }

        

6.etc/objects/timeperiods.cfg(时间段配置文件)


  • define timeperiod{                        #定义时间段的配置文件
  •         timeperiod_name 24x7              #指定时间段的名称,方便以后在服务里调用
  •         alias           24 Hours A Day, 7 Days A Week   #别名
  •         sunday          00:00-24:00       #具体的时间段定义
  •         monday          00:00-24:00       #一周24小时
  •         tuesday         00:00-24:00
  •         wednesday       00:00-24:00
  •         thursday        00:00-24:00
  •         friday          00:00-24:00
  •         saturday        00:00-24:00
  •         }
  • define timeperiod{                        #定义时间段的配置文件
  •         timeperiod_name workhours         #指定时间段的名称,方便以后在服务里调用
  •         alias           Normal Work Hours #别名
  •         monday          09:00-17:00       #具体的时间段定义
  •         tuesday         09:00-17:00       #周一到周五的上班时间
  •         wednesday       09:00-17:00
  •         thursday        09:00-17:00
  •         friday          09:00-17:00
  •         }



四、总结:

看过了以上配置文件的详解,来总结下监控一台主机和主机上的服务,必要的条件。

1.首先定义其监控主机,其中注意的就是引用的类必须在templates.cfg中预定义(所有未指定的条目,都按照类的定义载入)

2.再就是监控主机中的资源以及服务,指定的name必须在主机配置文件中预定义,还有就是指定的命令必须在command.cfg中预定义

3.还有就是类中定义的联系人或者联系人组必须在contacts.cfg中预定义

4.再有的细节问题,就自己慢慢摸索了、

备注:以上所说的预定义,其实写在任意位置都是可以的,只是为了有条理,日后也方便查找问题。



五、示例:

新建一台监控远程192.168.1.1主机,以及cpu、内存、硬盘使用率、进程数以及僵尸进程的配置文件。

解:vim etc/objects/192..168.1.1.cfg

define host{

        use linux-server

        host_name test

        alias test_1

        address 192.168.1.1

}

define service{

        use generic-service

        host_name test

        service_description CPU Load

        check_command check_nrpe!check_load

}

define service{

        use generic-service

        host_name test

        service_description Current Users

        check_command check_nrpe!check_users

}

define service{

        use generic-service

        host_name test

        service_description Disk Free Space /

        check_command check_nrpe!check_root

}

define service{

        use generic-service

        host_name test

        service_description Total Processes

        check_command check_nrpe!check_total_procs

}

define service{

        use generic-service,services-pnp

        host_name Mailbak

        service_description Zombie Processes

        check_command check_nrpe!check_zombie_procs

}

具体检测的命令都在libexec/下,每条检测命令后面加--help来查看其用法。



定义好后,检查下配置文件,然后重载nagios服务,就可以在web页面上查看了。



记录到此,旨在详解!也为日后方便查看!

后续:外部扩展


Nagios全系列笔记:
Nagios学习笔记之(一)最初搭建

Nagios学习笔记之(二)监控部署

Nagios学习笔记之(三)配置详解

Nagios学习笔记之(四)外部扩展
Nagios学习笔记之(五)后期维护





                                                   




运维网声明 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-663575-1-1.html 上篇帖子: 运维监控Nagios 下篇帖子: nagios+rrdtoll+pnp个人参考资料
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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