icinga2 следит за запущенной службой Linux

У меня есть сервер с Plex и двумя другими службами, которые я хочу контролировать с помощью Icinga2, и я не могу понять, как заставить это работать. Если я запускаю следующую команду:

./check_procs -c 1:1 -a '/usr/lib/plexmediaserver/Plex Media Server'

Что возвращает следующее, когда я вручную убиваю Plex:

PROCS CRITICAL: 0 processes with args '/usr/lib/plexmediaserver/Plex Media Server' | procs=0;;1:1;0;

Я просто не могу понять, как добавить эту проверку на сервер.. где мне ее поставить?

Я попытался добавить еще одно объявление в /etc/icinga2/conf.d/services.conf следующим образом:

apply Service "procs" 
    {
        import "generic-service"

        check_command = "procs"

        assign where host.name == NodeName

        arguments = 
        {
            "-a" = 
            {
              value = "/usr/lib/plexmediaserver/Plex Media Server"
              description = "service name"
              required = true
            }
        }
    }

Но тогда агент вообще не запускался.


person stumped221    schedule 28.09.2017    source источник


Ответы (2)


Я решил это, определив службу:

apply Service for (service => config in host.vars.processes_linux) {
  import "generic-service"
  check_command = "nrpe"
  display_name = config.display_name
  vars.nrpe_command = "check_process"
  vars.nrpe_arguments = [ config.process, config.warn_range, config.crit_range ]
}

Затем в определении хоста я просто добавляю конфигурацию, скажем, для mongodb:

vars.processes_linux["trench-srv-lin-process-mongodb"] = {
  display_name = "MongoDB processes"
  process = "mongod"
  warn_range = "1:"
  crit_range = "1:"
}

На удаленном хосте мне нужно установить пакет nagios-nrpe-server

А в configfile /etc/nagios/nrpe_local.cfg добавляю строчку:

command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
person mortomanos    schedule 29.01.2019

Я запускаю небольшой кластер Raspberry Pi, который я отслеживаю с помощью Icinga2. На главном узле моего кластера работает DHCP-сервер. Я проверяю его статус следующим образом.

Сначала я скачал плагин проверки состояния службы с Icinga Exchange, сделал его исполняемым и переместил в /usr/lib/nagios/plugins (ваш путь может отличаться).

Затем я определил для него команду проверки:

object CheckCommand "Check Service" {
import "plugin-check-command"
command = [ PluginDir + "/check_service.sh" ]
arguments += {
    "-o" = {
        required = true
        value = "$check_service_os$"
    }
    "-s" = {
        required = true
        value = "$check_service_name$"
    }
}
}

Теперь осталось только определить службу:

object Service "Check DHCP" {
host_name = "Localhost"
check_command = "Check Service"
enable_perfdata = true
event_command = "Restart DHCP"
vars.check_service_name = "isc-dhcp-server"
vars.check_service_os = "linux"
}

В качестве бонуса вы даже можете определить команду события, которая перезапустит ваш сервис:

object EventCommand "Restart DHCP" {
    import "plugin-event-command"
    command = [ "/usr/bin/sudo", "systemctl", "restart" ]
    arguments += {
        "(no key)" = {
            skip_key = true
            value = "$check_service_name$"
        }
    }
    vars.check_service_name = "isc-dhcp-server"
}

Но чтобы это работало, вы должны предоставить своему пользователю nagios (или другому пользователю, запускающему вашу службу icinga) привилегии sudo для перезапуска служб. Добавьте эту строку в ваш файл sudoers:

nagios ALL = (ALL) NOPASSWD: /bin/systemctl restart *

Я надеюсь, что это поможет вам с вашей проблемой :-)

Ян

person Jan    schedule 04.11.2017