基于代理的Check API v2中的新功能 - Checkmk

作者:API传播员 · 2026-01-03 · 阅读时间:3分钟
基于代理的Check API v2引入了插件目录结构变更、模块类型调整、插件注册机制变化等关键改进,旨在提升插件开发效率和管理灵活性,包括新函数如check_levels()和参数类型引入,帮助开发者从API v1平滑迁移。

基于代理的 Check API v2 中的新功能

在将插件迁移到 Check API v2 时,您需要特别注意以下关键更改。这些更改主要是针对 API 版本 1 的改进和优化,旨在提升插件开发和管理的效率。


插件目录结构的变更

在旧版本中,插件通常存放在以下路径:

local/lib/check_mk/base/plugins/agent-based

在新的 API 版本中,为了让 Checkmk 发现这些插件,它们必须移动到以下路径:

local/lib/python3/cmk_addons/plugins//agent-based

请确保按照新的目录结构组织您的插件,以避免插件无法被正确加载的问题。


模块和类型的调整

type_defs 模块的移除

type_defs 模块已被废弃。现在,所有类型都需要直接从 v2 模块中导入。这种调整简化了模块的组织结构,同时提升了代码的可读性和维护性。

新的 check_levels() 函数

check_levels() 函数是专为与新规则集 API v1 中的 levels 元素配合设计的。您可以在以下路径找到相关规则集定义:

cmk.rulesets.v1.form_specs

参数类型的引入

API 中新增了参数类型定义,相关类型可以在以下模块中找到:

cmk.agent_based.v2

这种改进为开发者提供了更强的类型约束,减少了潜在的错误风险。


插件注册机制的变化

在新的 API 版本中,插件在导入时不再直接注册,而是由后端在稍后的阶段创建和获取。为此,引入了以下四个新类:

  • AgentSection:替代 register.agent_section()
  • SimpleSNMPSectionSNMPSection:替代 register.snmp_section()
  • CheckPlugin:替代 register.check_plugin()
  • InventoryPlugin:替代 register.inventory_plugin()

这些新类的设计更倾向于使用类型注释,而非运行时验证,从而代码的可维护性。


其他重要改进

parse_function 的调整

为了简化类型注释,parse_function 不再是可选项。这一改动使得代码逻辑更加清晰,同时减少了不必要的复杂性。

正则表达式的替代方案

对于已移除的功能,您可以使用 Pythonre.compile() 方法作为替代。这种方式更加灵活,也符合 Python 的标准实践。

新增函数:渲染负数秒数

根据用户需求,Check API v2 添加了一个新函数,用于渲染可能为负数的秒数。这一功能的引入解决了某些场景下的特殊需求。


文档资源

如果您需要更详细的参考文档,可以在 Checkmk 2.3.0 及以上版本的站点中找到完整的 Check API v1 和 v2 文档。路径如下:

Help > Plug-in API references > agent based (“Check API”)

通过以上改进,Check API v2 提供了更强大的功能和更灵活的开发支持。建议开发者尽快迁移到新版本,以充分利用这些新特性。

原文链接: https://checkmk.com/blog/whats-new-check-api-v2