0

我有一台运行 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
            }
        }
    }

但是代理根本不会启动。

4

2 回答 2

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$
于 2019-01-29T08:06:44.107 回答
0

我正在运行一个小型的 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 *

我希望这可以帮助您解决问题:-)

于 2017-11-04T16:04:53.177 回答