【问题标题】:Check_MK - Custom check params specified in wato not being given to check functionCheck_MK - wato 中指定的自定义检查参数未提供给检查功能
【发布时间】:2026-02-03 02:55:01
【问题描述】:

我正在开发一个 check_mk 插件,当它针对一项检查运行时,似乎无法将 WATO 指定的参数传递给检查函数......

  • 检查参数规则显示在 WATO 中
  • 它将正确的值写入 rules.mk
  • 单击主机服务发现中的分析检查参数图标会显示该规则处于活动状态。
  • 服务发现中显示的检查参数显示了 WATO 文件中的标题,因此它似乎正确关联了事物。

运行 cmk -D <hostname> 显示检查始终具有默认值。

我已经盯着它看了一段时间,没有想法。

Check_MK 版本:1.2.8p21 Raw

大量检查文件:

factory_settings["elasticsearch_status_default"] = {
    "min": (600, 300)
}

def inventory_elasticsearch_status(info):
    for line in info:
        yield restore_whitespace(line[0]), {}

def check_elasticsearch_status(item, params, info):
    for line in info:
        name = restore_whitespace(line[0])
        message = restore_whitespace(line[2])

        if name == item:
            return get_status_state(params["min"], name, line[1], message, line[3])

check_info['elasticsearch_status'] = {
  "inventory_function"      : inventory_elasticsearch_status,
  "check_function"          : check_elasticsearch_status,
  "service_description"     : "ElasticSearch Status %s",
  "default_levels_variable" : "elasticsearch_status_default",
  "group"                   : "elasticsearch_status",
  "has_perfdata"            : False
}

瓦托文件:

group = "checkparams"
#subgroup_applications = _("Applications, Processes & Services")

register_check_parameters(
    subgroup_applications,
    "elasticsearch_status",
    _("Elastic Search Status"),
    Dictionary(
        elements = [
            ( "min",
              Tuple(
                  title = _("Minimum required status age"),
                  elements = [
                      Age(title = _("Warning if below"), default_value = 600),
                      Age(title = _("Critical if below"), default_value = 300),
                  ]
            ))
        ]
    ),
    None,
    match_type = "dict",
)

从 WATO 规则进入 rules.mk:

checkgroup_parameters.setdefault('elasticsearch_status', [])

checkgroup_parameters['elasticsearch_status'] = [
  ( {'min': (3600, 1800)}, [], ALL_HOSTS ),
] + checkgroup_parameters['elasticsearch_status']

如果有任何其他信息有帮助,请告诉我!

编辑:请帮忙

【问题讨论】:

    标签: check-mk


    【解决方案1】:

    也发布了问题here,谜团解开了。

    我将 WATO 规则与项目 None(WATO 文件中的第 5 个位置 arg)相匹配,但由于此检查在其下列出了多个项目(其中没有一个具有 id None),因此该规则适用于主机,但不进行任何特定的服务检查。

    修复是将该参数替换为:

    TextAscii( title = _("Status Description"), allow_empty = True),
    

    【讨论】: