其他分享
首页 > 其他分享> > 在nagios中添加监控主机和服务

在nagios中添加监控主机和服务

作者:互联网

Nagios 添加监控主机

操作步骤:

1、修改主配置文件

在装好nagios后,可以通过web界面看到一个名为localhost的本地监控事例,这是由于 Nagios 配置文件生成的模版,该配置位于/usr/local/nagios/etc/objects/localhost.cfg

$ tree /usr/local/nagios/etc/    # Nagios 配置文件目录
/usr/local/nagios/etc/
|-- cgi.cfg                 # web接口配置文件
|-- htpasswd.users          # 登录 Nagios Web 页面时的用户名密码认证文件
|-- nagios.cfg                 # 主配置文件
|-- nrpe.cfg                   # 客户端配置文件
|-- objects                    # 包含其他配置文件的目录
|   |-- localhost.cfg          # 用于定义对主机监控

不建议将新增要监控的主机配置写在里面,因为当所要监控的主机太多,这部分会很受伤,所以,可以在/usr/local/nagios/etc/下通过建立专用文件夹,存放主机和服务的配置信息,并且可以通过不同的文件夹,来区分不同功能的服务、或不同平台的机器。比如:

# 以不同的云平台与功能管理
tree /usr/local/nagios/etc/
|-- cgi.cfg                 
|-- htpasswd.users          
|-- nagios.cfg              
|-- nrpe.cfg                
|-- objects                 
|-- servers         # 新增存放服务与机器目录
    |-- aliyun      # 存放 aliyun 平台相关的机器
    |   |-- product_Host.cfg
    |   |-- product_Service.cfg
    |   |-- staging_Host.cfg
    |   `-- staging_Service.cfg
    `-- aws
        |-- product_Host.cfg
        |-- product_Service.cfg
        |-- staging_Host.cfg
        `-- staging_Service.cfg

我们在/usr/local/nagios/etc下新建一个servers的文件夹:

mkdir /usr/local/nagios/etc/servers

为了让 Nagios 在启动的时候会读取该配置文件中我们的配置文件,我们需要修改主配置文件:/usr/local/nagios/etc/nagios.cfg

在里面新增一条我们新建的路径信息:cfg_dir=/usr/local/nagios/etc/servers

如此一来,在这个目录下的文件只要符合 *.cfg 命名的文件就会被 nagios 加载。

主配置文件 nagios.cfg 介绍

# Nagios 检索监控命令配置文件的路径
cfg_file=/etc/nagios/objects/commands.cfg                        

# Nagios 针对全局的变量配置文件,也称为资源(宏)定义文件
resource_file=/etc/nagios/resource.cfg                           

# Nagios 的状态存储数据文件,获取到的监控信息存在该文件中
status_file=/usr/local/nagios/var/status.dat                     

# Nagios 的监控状态间隔配置,默认多少秒执行一次监控命令
status_update_interval=10        

# Nagios 服务的运行用户 
nagios_user=nagios

# Nagios 服务的运行组
nagios_group=nagios                                             

# Nagios 若需要在 Web 界面中发送命令需开启该配置项
check_external_commands=1                                        

# Nagios 设置检查时间单位间隔长度,默认为 60s
interval_length=60                                               

# Nagios 是否启用通知功能,1表示启用通知,0表示关闭通知。
enable_notifications={1|0}                                       

# Nagios 设置服务检测命令的执行超时时长,若是超过该时间未能获取返回数据则判定为超时
service_check_timeout=60

# Nagios 设置主机检测命令的执行超时时长,若是超过该时间未能获取返回数据则判定机器挂掉了
host_check_timeout=30                                            

# Nagios 设置是否启用主动服务检测机制,1表示启用,0表示关闭。
execute_service_checks={1|0}

# Nagios 设置是否接受被动服务检测的结果,1表示接受,0表示拒绝。
accept_passive_service_checks={1|0}                              

# Nagios 设置是否启用主动主机检测机制,1表示启用,0表示关闭。
execute_host_checks={1|0}                                        

# Nagios 设置是否接受被动主机检测的结果,1表示接受,0表示拒绝。
accept_passive_host_checks={1|0}                                

# Nagios 设置是否启用事件处理,1表示启用,0表示关闭,也就是在服务出错时执行设置好的处理机制。
enable_event_handlers=1                                         

# Nagios 产生日志文件的路径
log_file=/usr/local/nagios/var/nagios.log 

# Nagios 指定日志转储的方法,n代表不做日志回滚
log_rotation_method={n|h|d|w|m}

添加监控主机相关信息配置文件

添加需要监控的主机test,在我们之前定义的主机信息路径中增加它的配置信息:vim /usr/local/nagios/etc/servers/test.cfg

define host {
        use                             linux-server
        host_name                       test
        alias                           My first Apache server
        address                         127.0.0.1
        max_check_attempts              3
        check_period                    24x7
        notification_interval           30
        notification_period             24x7
}

给大家解释一下都写了啥:

# 通过 define host 关键字来让系统识别中间的内容块是用于设置设备信息的
define host {
        # use 关键字表示使用的模版,模版将在后续讲解,此处使用的是 linux-server 模版
        use                             linux-server

        # host_name 关键字表示机器的名字,也是在 Web 界面中显示的名字
        host_name                       test

        # alias 表示机器的别名,一般用作机器别名的描述
        alias                           My first Apache server

        # address 设置该机器的 IP 地址,以便与数据的获取与被动监控的请求
        address                         127.0.0.1

        # 最大的尝试次数,也就是在某服务监控出错再次运行监控命令获取数据的次数
        max_check_attempts              3

        # 检测的时间段
        check_period                    24x7

        # 发送消息提醒的时间间隔
        notification_interval           30

        # 发送消息提醒的时间段
        notification_period             24x7
}

这份配置文件基本阐述了一台设备的基本信息与个别的定制化配置,当然还会有这样的一些配置项:

参数 含义
d —— DOWN #挂了
u —— UNREACHABLE #不可达
r —— UP(host recovery) #重新恢复态
f —— flapping #异常
s 调试宕机时间开始或结束

检查配置文件

每次修改配置文件之后我们需要通过这样的命令来检查我们的配置文件是否正确,因为若是直接重启或者重新加载使得配置文件生效,但配置中却有错误的话会导致我们的监控服务直接不可用,所以每次在重启之前我们都需要先检查一遍:

/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg

检查发现配置无误的情况下,我们重新加载一下nagios服务:

service nagios reload

打开web登录界面,点击左边Hosts标签栏,可以看到我们新增的那台主机test(目前也就是本机):

总结一下,总的来说,增加被监控主机可以分为两个步骤:

添加监控服务

监控主机只能看到主机的开关机状态,但我们往往更关心主机上所运行的业务是否正常,所以,我们还需要在nagios上添加我们需要监控的服务。

创建监控服务配置文件
一般把监控主机和监控服务分开放置在两个配置文件中,比如下面的文件结构:

|-- servers         
    |-- test_Host.cfg
    `-- test_Service.cfg

test_Service.cfg文件就是监控服务的配置文件:

define service {
      host_name                       test
      service_description             Check SSH
      check_command                   check_ssh
      max_check_attempts              2
      check_interval                  2
      retry_interval                  2
      check_period                    24x7
      notification_interval           2
      notification_period             24x7
      notifications_enabled           1
      register                        1
}

是不是和添加主机的配置文件很相似?解释一下不同之处吧:

命令配置文件

在服务的配置文件中有一项名为check_command的配置项,它指定了监控服务所用的命令,而这个命令,就是由commands.cfg所定义的,它存在于:/usr/local/nagios/etc/objects/commands.cfg
查看一下这份文件,可以看到里面定义了一系列的命令:

其中:

它所用到的脚本(或称为插件),存在于路径$USER1下的名为check_ssh的脚本

$USER1变量的定义,是在usr/local/nagios/etc/resource.cfg这份配置文件里定义的。

好奇的话可以打开看一下:

vi usr/local/nagios/etc/resource.cfg

可以发现,USER1变量的值为路径/usr/local/nagios/libexec,也就是说check_ssh这份真正在背后执行的脚本,存放在:/usr/local/nagios/libexec

那我们看看这个路径下还都有些啥:

原来,这个路径是用于存放nagios监控过程中真正执行的脚本/插件,因此,我们也可以根据实际需要自己开发相应的脚本/插件,将他们放在这个路径下,实现自己的监控需求,该路径下的脚本/插件只需要有可执行权限即可,无论是Cshell还是PHPpython编写的,都可以。

检查配置文件

同样,在新增了一个监控服务之后,我们试着检查一下配置文件是否有误:

nagios /usr/local/nagios/etc/nagios.cfg

确认无误后重新加载nagios服务:

service nagios reload

打开web界面,点击左边的Services标签,可以看到新增加的check_ssh服务:

若是看到尾pending状态,请再等会,监控的轮询时间间隔没到

添加联系人

在监控的默认联系人为nagiosadmin,如果需要更改,请在/usr/local/nagios/etc/objects/contact.cfg文件中指定:

可以根据默认的模板进行修改,不做解释了

添加组

当遇到类似功能或具有相同业务的服务时,我们可以分组管理,定义组的语法如下:

define hostgroup{
    hostgroup_name        test_servers
    alias                Servers For Test
    members                T1,T2,T3
    }

定义组成员的方式,如果不想把members字段写得老长老长,还可以在每个主机的配置文件中添加下面的配置项:

hostgroups test_servers

当我们需要对一组服务器,统一监控每台服务器上的某个服务(假设是ssh服务),可以在service的定义中加入hostgroup_name,于是对应组的成员便都会监控该服务,这样就可以省下了许多重复性的配置工作。

比如,我们新加一台主机名为test2,分组为test_group,用于监控ssh服务。实现的步骤如下:

hostgrous test_group

- 2、其次在建立监控服务配置文件,在配置文件中:

# 删除内容
host_name              test

# 添加内容
hostgroup_name         test_group

并且在空白处新增一块关于组的定义:

define hostgroup{
    hostgroup_name          test_group
    alias                   For test
}

OK,nagios的基本操作就先这样

-------------The End-------------

标签:配置文件,cfg,Nagios,添加,监控,主机,nagios,check
来源: https://blog.csdn.net/saeba5566/article/details/104845095