Nagios:如何每天检查三次服务

时间:2019-08-12 17:27:10

标签: nagios

我需要每天三次定期检查服务。 该检查应在7、15和23小时(当时每8小时)进行一次。

我尝试过的是定义这个时间段:

define timeperiod{
    timeperiod_name         three_times_a_day
    monday                  07:00-07:10, 15:00-15:10, 23:00-23:10
    tuesday                 07:00-07:10,15:00-15:10,23:00-23:10
    wednesday               07:00-07:10,15:00-15:10,23:00-23:10
    thursday                07:00-07:10,15:00-15:10,23:00-23:10
    friday                  07:00-07:10,15:00-15:10,23:00-23:10
    saturday                07:00-07:10,15:00-15:10,23:00-23:10
    sunday                  07:00-07:10,15:00-15:10,23:00-23:10
}

服务(在几台主机上)是这样的:

define service{
    use                     all_templates
    host_name               some_host
    service_description     some_service
    check_command           some_command
    check_period            three_times_a_day
    max_check_attempts      1
    check_interval          480 ; run every 8 hours
}

从这里https://assets.nagios.com/downloads/nagioscore/docs/nagioscore/4/en/timeperiods.html说 “当Nagios Core尝试重新安排主机或服务检查的时间时,将确保下一次检查位于定义的时间段内的有效时间范围内。如果没有,Nagios Core将调整下一次检查时间以与指定时间段内的下一个“有效”时间。”

但是事实是这没有发生。

当我检查计划队列时,我看到:

+--------------+--------------+-----------------+-----------------+
|    Host      |   Service    |   Last Check    |   Next Check    |
+--------------+--------------+-----------------+-----------------+
| some_host    | some_service | 8/12/2019 9:35  | 8/12/2019 15:01 |
| some_host_1  | some_service | 8/12/2019 7:01  | 8/12/2019 15:01 |
| some_host_2  | some_service | 8/12/2019 8:50  | 8/12/2019 15:02 |
| some_host_3  | some_service | 8/12/2019 9:30  | 8/12/2019 15:02 |
| some_host_4  | some_service | 8/12/2019 9:22  | 8/12/2019 15:02 |
| some_host_5  | some_service | 8/12/2019 7:03  | 8/12/2019 15:03 |
| some_host_6  | some_service | 8/12/2019 8:53  | 8/12/2019 15:04 |
| some_host_7  | some_service | 8/12/2019 9:58  | 8/12/2019 15:04 |
| some_host_8  | some_service | 8/12/2019 9:30  | 8/12/2019 15:04 |
| some_host_9  | some_service | 8/12/2019 7:05  | 8/12/2019 15:05 |
| some_host_10 | some_service | 8/12/2019 9:01  | 8/12/2019 15:05 |
| some_host_11 | some_service | 8/12/2019 10:02 | 8/12/2019 15:05 |
| some_host_12 | some_service | 8/12/2019 9:21  | 8/12/2019 15:05 |
| some_host_13 | some_service | 8/12/2019 7:08  | 8/12/2019 15:08 |
| some_host_14 | some_service | 8/12/2019 7:08  | 8/12/2019 15:08 |
| some_host_15 | some_service | 8/9/2019 14:49  | 8/12/2019 16:24 |
+--------------+--------------+-----------------+-----------------+

为什么在时间之外对服务进行良性检查? 为什么some_host_15没有检查8/10和8/11和8/12? 如何每天固定时间检查3次服务?

谢谢!

1 个答案:

答案 0 :(得分:1)

  

”“当Nagios Core尝试重新安排主机或服务检查的时间时,它将确保下一次检查位于定义的时间段内的有效时间范围内。如果没有,Nagios Core将调整下一次检查检查时间,使其与指定时间段内的下一个“有效”时间一致。”

实际上,我确实确定情况并非如此,但是如果您看到不同的行为,也许这是一个错误。我希望时间段和检查间隔会造成时间问题,从而导致许多检查被丢弃。无论事情应该如何工作以及什么是/不是预期的行为,我都不会亲自配置它。既然你这样说:

  

我需要每天三次定期检查服务。

如果我是你,这就是我要做的事情

  • 我会将此检查作为cron作业运行,并将检查结果作为passive check command发送给Nagios。这样,您可以确定检查将始终按时进行。
  • 然后,我将配置一个freshness_threshold,以确保该被动服务最近实际上已经打电话回了家。
  • 我还将配置一个check_command,以为服务的最终结果没有新的结果做准备,即只有在未收到服务检查的情况下才执行的某件事-可能是重新运行检查的脚本并以某种方式通知我。