Dockerman 文档
Homelab

告警规则

为容器退出、健康检查、资源阈值和重启爆发创建类型化告警规则。

告警规则将 Docker 事件和资源指标连接到你的通知渠道。当规则触发时,Dockerman 会向绑定到该规则的每个渠道广播消息。

预设规则

两条规则已预先配置,让你一键即可获得有用的覆盖:

预设类型行为
Restart looprestart_burst当任意容器在 5 分钟内重启 ≥ 3 次时触发。
Container crash (non-zero exit)container_exit_non_zero当任意容器以非零状态退出时触发。

两个预设默认禁用 — 在告警页面确认目标范围和通知渠道与你的环境匹配后再开启。一旦启用,它们与其他规则一样:可以编辑字段、变更目标、绑定渠道,或再次禁用。

预设受意外删除保护。如果你删除了预设,告警页面上的重置为默认操作会按出厂状态恢复它。

两个预设默认目标为所有容器。如果环境噪声较多,请在启用前将目标缩小到 Compose 项目或特定容器。

规则类型

Dockerman 预装了四种类型化规则。每种类型在 UI 中都有专用表单,而不是自由文本表达式,因此设置快速且不易出错。

容器退出(非零)

当容器的 die 事件报告非零退出代码时触发。

数据源: Docker 事件

使用场景: 捕获意外崩溃、失败的入口点或 OOM 终止。

除了目标选择器外,不需要额外字段。

健康异常

当容器的健康检查状态从任何其他状态转变为 unhealthy 时触发。

数据源: Docker 事件

使用场景: 检测仍在运行但不再通过健康检查的降级服务。

除了目标选择器外,不需要额外字段。

资源阈值

当指标在持续时间内保持高于阈值时触发。

数据源: Stats 时间序列存储

字段:

字段描述
指标cpumem_percent
操作符>>=
阈值要比较的百分比值
持续时间指标必须保持高于阈值的秒数

使用场景: 发现内存泄漏、失控的 CPU 或达到资源限制的容器。

重启爆发

当单个容器在时间窗口内重启次数超过阈值时触发。

数据源: Docker 事件

字段:

字段描述
次数触发的最小重启次数
窗口时间窗口(秒)

使用场景: 检测容器不断重启和失败的崩溃循环场景。

目标选择器

所有四种规则类型共享相同的目标选择器,因此你可以用一种一致的方式选择要监控的内容。

范围行为
所有容器规则适用于连接主机上的每个容器
Compose 项目规则适用于属于特定 Compose 项目的所有容器
特定容器规则仅适用于你选择的容器

创建规则

打开告警页面

从侧边栏或 Spotlight 导航到告警页面。

点击添加规则

选择规则类型并填写表单字段。

设置目标

选择此规则是监控所有容器、Compose 项目还是特定容器。

绑定通知渠道

选择一个或多个通知渠道来接收告警。

配置冷却时间和严重级别

设置冷却时间以防止重复告警,并选择严重级别用于过滤。

保存并启用

规则立即开始评估。

冷却时间和静默窗口

冷却时间

规则触发后,它会进入冷却时间(每个规则可配置)。在冷却期间,即使条件仍然为真,规则也不会再次触发。这可以防止多个容器同时失败时的通知风暴。

静默窗口

设置规则完全不应触发的时间窗口,例如"02:00 - 05:00"用于计划维护窗口。规则在静默窗口期间仍然评估,但会抑制通知。

严重级别

每个规则都有一个严重级别:infowarningcritical。严重级别是用于过滤和历史搜索的元数据。它不影响路由;所有绑定的渠道都会收到每个告警,无论严重级别如何。

最近告警动态

告警页面包含一个最近告警动态,显示每次规则触发的时间,包括:

  • 容器名称
  • 触发的本地时间
  • 规则名称和类型
  • 上下文(指标值、退出代码等)
  • 哪些渠道收到了通知

该列表使用标准化的数据表格模式,因此列宽会跨会话保留,你可以从顶部工具栏跨所有字段进行搜索。

路由模型

每个规则直接绑定到通知渠道列表。当规则触发时,消息会发送到列表中的每个渠道。此版本中没有全局路由表或基于严重级别的渠道映射。

提示

从针对所有容器并绑定到你主要通知渠道的 container_exit_non_zero 规则开始。它以零配置捕获最常见的故障模式。

  • 使用至少 60 秒的 resource_threshold 持续时间,以避免短暂峰值的误报。
  • restart_burst 与低次数(例如 300 秒内 3 次重启)结合使用,以尽早发现崩溃循环。
  • 定期查看告警历史以调整冷却时间。如果你看到同一事件的重复条目,请增加冷却时间。