zeromax 发表于 2019-1-14 06:48:39

使用nagios监控指定的端口号

  方法一:
  实验思路:
  第一步在commands.cfg文件中定义你要使用的检测命令:
  vi /usr/local/nagios/etc/objects/commands.cfg
  define command{
  command_name    tcp60910            #命令名
  command_line    $USER1$/check_tcp -H $HOSTADDRESS$ -p 60910 -t 60    #命令内容,该处调用到check_tcp这个脚本 -P后面是端口。如果你要监控很多端口,就多编几条,做示范就弄2条。 -t是超时时间,单位是秒。      }
  define command{
  command_name    tcp60911
  command_line    $USER1$/check_nt -H $HOSTADDRESS$ -p 60911 -t 60   #这里如果不用-t也可以,默认是10秒,假如你的监控端是电信,你被监控端是网通,那么你监控过去就会偶尔出现10秒以上,所以这个时间可以放大点,但最大是60秒。            }
  再定义主机组。
  第二步定义要进行端口监控的主机并修改nagios.cfg文件使nagios可以识别:
  #vi /usr/local/nagios/etc/objects/hosts.cfg#注意,这个文件本身不自带的,可以直
  接VI编辑,别忘了还要去nagios.cfg里声明它的存在
  下面是去声明它的存在,vi /usr/local/nagios/etc/nagios.cfg
  # You can specify individual object config files as shown below:
  cfg_file=/usr/local/nagios/etc/objects/hosts.cfg
  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
  下面是hosts.cfg的文件内容。
  define host{
  use             linux-server         #这里是调用模板文件就是templates.cfg这个里面的linux-server模板,其实我们监控的是windows,可是我测试了下模板用windows就莫名其妙报错,大家可以用windows-server试试
  host_name       ts1                #这个是定义的ts1名字,这个名字用来给下面的members调用。
  alias         ts1                      #这个是会在网站监控按钮上显示的文字。
  address         XXX.XXX.XXX.XXX      #这个是对应ts1的IP地址,就是你要监控的机器。
  

  }
  

  define host{
  #这里是第二台
  use             linux-server
  host_name       ts2
  alias         ts2
  address         XXX.XXX.XXX.XXX
  }
  define hostgroup{
  hostgroup_nameTs-servers          #主机组名 Ts-servers同样等下要被监控服务调用。
  alias         Ts-Servers   #这个同上面那个一个意思,用来在web页面显示的名字。
  members         ts1,ts2   #这里就是调用上面的host_name内容,用”,"逗号分开,我这里就2台,全部添加进去了。
  }
  好了,到最后一步,调用主机组名和命令来监控服务。
  第三步定义需要端口监控的主机要监控的端口:
  在# vi /usr/local/nagios/etc/objects/windows.cfg配置
  define service{
  use                           generic-service               #调用模板不累述。可以不调用,但你要再这直接把所有的信息都放进去,什么联系人,通知各种杂七杂八的字段都要填。直接弄个模板反正大多都是默认的,比如24X7小时监控之类的。
  hostgroup_name                  Ts-servers            #这个就是调用hosts.cfg里的define hostgroup下的“hostgroup_name”
  normal_check_interval         1         #这个是正常检测间隔时间,就是检测1次端口发现正常后下次检测的时间。默认是1分钟,在nagios.cfg里有个
  interval_length=60 这个是指nagios的时间单位,默认是60秒,所以这里的1就是1分钟。
  retry_check_interval            1                        #这个是不正常检测间隔时间,就是检测发现不正常后下次检测的时间。
  service_description             port60910         #这个是描述,也是出现在web页面上的
   check_command                   tcp60910          #这个是调用的命令,就是一开始定义好的命令。注意此check_command后面的tcp60910要跟command.cfg文件中定义的command_name的名称一致。
  }
  下面是监控第二个端口,意思就不累述了。
  define service{
  use                           generic-service             hostgroup_name                  Ts-servers         normal_check_interval         1         retry_check_interval            1
  service_description             port60911         check_command                   tcp60911         }
  最后重启nagios,如果重启失败,请直接#/usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg来查看 nagios配置文件的错误信息。
  我上面那个不能用windows-server模板就是这么检测出来的,坑爹啊,那个文件里明明有windows模板的,就是不能用,只好用linux-server.望后来人解决之。
  

  方法二:
  第二种方法是在定义命令的时候几个地方变一下
  define command{
  command_name    tcp60910            #命令名      command_line    $USER1$/check_tcp -H
  $HOSTADDRESS$ -p $ARG1$ -t $ARG2$    #"$ARG1$"这个是变量的意思,就是你想输什么就输什么,但一定要输对应意思的,等下下面会再说明。
  }
  中间主机组和主机还是不变,最后的服务调用命令要变下
  define service{
  use                           generic-service             hostgroup_name                  Ts-servers         normal_check_interval         1         retry_check_interval            1
  service_description             port60911
  第一个字段是填IP的,但因为$HOSTADDRESS$是在宏里定义好的。就是最终的host_name。方法2我没试过,网上说可以直接忽略写第二个字段。大家不
  妨试试。这里就直接填了端口和延迟时间。
  

  check_command                   tcp60911!60910!60    #原来这里是没参数的,直接调用的命令名,主要是因为原来定义好了参数,现在要自己写。!号是分隔符         }
  其实我觉得方法二灵活点。由于我现在用了centreon,所以也没直接配置nagios文件了。其实最终效果还是一样的
  还有监控多线路HTTP页面的方法,有机会会更新好的。
  如果你要定义100台机器,那么你只要定义好define host 然后在define hostgroup里添加好像ts1 ts2这样加下去就行了。
  如果你既要监控windows又要监控linux,监控的种类又不相同,那么原理还是一样的。只要在文件里添加好字段和参数就行了。
  

  

  

  

  

  

  

  

  

  

  

  

  




页: [1]
查看完整版本: 使用nagios监控指定的端口号