Монитор 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
            }
        }
    }

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

1 ответ

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

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

И в конфигурационном файле /etc/nagios/nrpe_local.cfg Я добавляю эту строку:

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

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

Сначала я скачал плагин check service status из 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 *

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

январь

Другие вопросы по тегам