Назад | Перейти на главную страницу

Почему мои пассивные чеки не обрабатываются?

У меня есть следующая конфигурация службы для захвата ловушек SNMP:

define service {
    name                            SNMP_TRAP
    service_description             SNMP_TRAP
    active_checks_enabled           1       ; Active service checks are enabled
    passive_checks_enabled          1       ; Passive service checks are enabled/accepted
    parallelize_check               1       ; Active service checks should be parallelized
    process_perf_data               0
    obsess_over_service             0       ; We should obsess over this service (if necessary)
    check_freshness                 0       ; Default is to NOT check service 'freshness'
    notifications_enabled           1       ; Service notifications are enabled
    event_handler_enabled           1       ; Service event handler is enabled
    flap_detection_enabled          1       ; Flap detection is enabled
    process_perf_data               1       ; Process performance data
    retain_status_information       1       ; Retain status information across program restarts
    retain_nonstatus_information    1       ; Retain non-status information across program restarts
    check_command                   check-host-alive      ; This will be used to reset the service to "OK"
    is_volatile                     1
    check_period                    24x7
    max_check_attempts              1
    normal_check_interval           1
    retry_check_interval            1
    notification_interval           120
    notification_period             24x7
    notification_options            w,u,c,r
    contact_groups                  admins
    register                        0
}

define service {
    use                     SNMP_TRAP
    service_description     gigabitethernet16
    hostgroup_name          cisco
    check_interval          120
}

У меня есть несколько устройств в cisco группа, например:

define host {
    use                     base-host
    host_name               cisco-sg300-28-4
    alias                   CISCO-SG300-28 (VT-Registratur)
    display_name            Switch VT-Registratur
    address                 10.0.1.109
    hostgroups              switches,cisco,cisco28
}

Сервис отлично отображается в веб-интерфейсе:

Однако полученные служебные чеки вообще не обрабатываются. Мой /var/lib/nagios3/rw/nagios.cmd file собирает результаты, но файл никогда не очищается, и результаты не отображаются в Nagios. nagios.cmd содержит, например:

[1437659629] PROCESS_SERVICE_CHECK_RESULT;cisco-sg300-28-4;gigabitethernet16;2;gigabitethernet16 linkDown

accept_passive_service_checks включен в nagios.cfg.

После дополнительного осмотра я понял, что nagios.cmd является предполагаемый быть именованным каналом. В моем случае это простой старый файл:

Из нашего архива журналов я вижу, что в какой-то момент в прошлом пассивные проверки обрабатывались, но теперь они больше не работают.

Я снова просмотрел конфигурацию, чтобы найти более подробную информацию о nagios.cmd и нашел это:

# EXTERNAL COMMAND FILE
# This is the file that Nagios checks for external command requests.
# It is also where the command CGI will write commands that are submitted
# by users, so it must be writeable by the user that the web server
# is running as (usually 'nobody').  Permissions should be set at the
# directory level instead of on the file, as the file is deleted every
# time its contents are processed.
# Debian Users: In case you didn't read README.Debian yet, _NOW_ is the
# time to do it.

command_file=/var/lib/nagios3/rw/nagios.cmd

Итак, это натолкнуло меня на мысль взглянуть на README.Debian, который находится по адресу /usr/share/doc/nagios3-common/README.Debian и содержит следующую инструкцию:

- activate external command checks in the nagios configuration. this
  can be done by setting check_external_commands=1 in the file
  /etc/nagios3/nagios.cfg.

Хотя я был уверен, что эта директива включена, я дважды проверил, и на самом деле не было включен.

После его включения (и выполнения других задач, упомянутых в README, названный канал был создан.