nagios как повторить проверку сервиса больше раз другой аргумент - PullRequest
0 голосов
/ 02 октября 2018

У меня есть один хост на nagios, определенный следующим образом:

define host {
    host_name                       my-host
    address                         ip
    display_name                    my-host
    hostgroups                      windows,windows-process-count
    use                             windows-server
    _PROCESSNAME                    my-process1.exe
    _PROCESSCOUNT                   1

}

На этом хосте я проверяю только, что my-process1.exe работает.но мне нужно проверить больше процессов (my-process1, my-process2 и т. д ....) Я хотел бы проверить больше процессов, определив так:

    define host {
    host_name                       my-host
    address                         ip
    display_name                    my-host
    hostgroups                      windows,windows-process-count
    use                             windows-server
    _PROCESSNAME                    my-process1.exe
    _PROCESSCOUNT                   1
    _PROCESSNAME2                   my-process2.exe
    _PROCESSCOUNT2                  1
    _PROCESSNAME2                   my-process3.exe
    _PROCESSCOUNT2                  4
    etc...... for x process that i must control on this server

}

, но втаким образом, я должен определить х сервисов, х хост-групп и х команд.Это очень неудобно и не очень элегантно.

Каков наилучший способ получить этот результат?

1 Ответ

0 голосов
/ 04 октября 2018

К сожалению, я не думаю, что есть элегантный способ сделать это так, как вы хотели бы.Я всегда работал с Nagios, используя сервис-ориентированный подход, то есть я определяю мониторинг для одной службы или процесса, а затем связываю все хосты или группы хостов, которые используют этот процесс и нуждаются в мониторинге, даже если это один сервер.Для меня я нашел это как самый надежный, аккуратный и устойчивый способ.

Если вы можете позволить себе общее оповещение в случае сбоя какой-либо службы, вы можете подготовить собственную команду для проверки всех из них в одном отдельномСценарий, я не хотел бы видеть это в моей информационной панели.

Я знаю, что это то, чего вы хотите избежать, но, если бы я был вами, и учитывая, что у вас есть один сервер для мониторинга этих процессов,Я подготовил бы отдельный файл службы, что-то вроде:

#!/bin/bash

srvCfg = "/etc/nagios3/conf.d/host1procs.cfg" # I am using Nagios over Debian
server="host1"
processes=("process1.exe" "process2.exe")
srvGroup="customservicegroup"

for proc in "${processes[@]}"; do
    echo "define service{" >> $srvCfg
    echo "  use             generic-service" >> $srvCfg
    echo "  host_name       $server" >> $srvCfg
    echo "  servicegroups       $srvGroup" >> $srvCfg
    echo "  service_description Process monitoring for $proc" >> $srvCfg
    echo "  check_command  check_nt!PROCSTATE!-d SHOWALL -l $proc" >> $srvCfg
    echo "}" >> $srvCfg
done

Я предположил, что ваш пример - это просто пример, а имена процессов на самом деле не повторяются для создания списка.Этот сценарий приведет к созданию файла, подобного следующему:

define service{
  use           generic-service
  host_name     host1
  servicegroups     customservicegroup
  service_description   Process monitoring for process1.exe
  check_command  check_nt!PROCSTATE!-d SHOWALL -l process1.exe
}
define service{
  use           generic-service
  host_name     host1
  servicegroups     customservicegroup
  service_description   Process monitoring for process2.exe
  check_command  check_nt!PROCSTATE!-d SHOWALL -l process2.exe
}

Вам нужно будет определить группу сервисов, если вы хотите, чтобы все сервисы были в ней автоматически, если не убрать строку сервисных групп.

Я знаю, что это не тот ответ, который вы ищете, но надеюсь, что он поможет

...