有没有办法以编程方式向 Nagios 添加服务?

有没有办法以编程方式向 Nagios 添加服务?

这个问题仅涉及创建服务,即我们已经知道如何编写 Nagios 插件并将其设置为服务。

我想编写一个 Python 脚本来读取 MySQL 数据库表的每一行,并为每一行创建一个服务。我们更希望看到每一行都有绿灯/红灯,而不是有一个服务来检查整个表。这个数据库表中的行数意味着手动输入每个服务需要很长时间。

我研究过类似脚本雷达。然而,这基于我们不需要的被动检查。我们只是有一个想要创建为主动检查的服务列表。

答案1

只需遍历表格,将必要的信息写入 cfg 文件,将其放入主 nagios 配置文件加载的位置,然后重新加载 nagios 配置。根据您需要/想要检查的内容,编写适当的插件。完成。可以快速完成。

答案2

甚至可以在 bash 中完成。概括来说:

mysql -Ne 'SELECT service_name,'#',IFNULL(check_command,"-"),'#',hostname FROM table_of_wanted_nagios_monitors' |
  while IFS='#' read sn cc hn; do
    # strip extra spaces (due to IFS) from $cc for testing only
    scc=$(echo "$cc" | sed 's/ //g')
    if [ "x$scc" == "x-" -o "x$scc" == "x" ]; then
      cc="";
    else
      cc="    check_command $cc";
    fi;
    cat > /path/to/nagios/configs/${hn}-${sn}.cfg <<EOF
define service {
    use $sn
    host_name $hn
$cc
}
EOF
done

我们使用类似的东西(尽管是用不同的语言编写的,而且复杂度要高得多),它查询一些内部 API 来填充我们的 Nagios。效果非常好。

答案3

有许多配置附加组件其功能正如您所描述的那样。

您可能能够使用“现成的”一个,根据您的需要调整一个,或者只是从其中一个中窃取一些代码。

相关内容