跳转到内容

告警与通知

Pier 监视主机和容器指标,以及部署、备份等生命周期事件,并在某项越过阈值或失败时发送通知。

一条规则将一个指标与一个阈值、一种比较方式和一个严重级别配对。数值型规则按周期性的 tick 进行评估(默认每 30 秒一次);事件型规则则由产生该事件的代码路径触发。

可用指标:

分组指标
主机cpuramdisk
容器container_cpucontainer_ramcontainer_statuscontainer_restarts
生命周期deploy_statusdeploy_successbackup_statusbackup_success
基础设施agent_offlineserver_reachablessl_expirydocker_cleanup_successdocker_cleanup_failure

每条规则还携带:

  • comparison(比较)——gtlteq
  • severity(严重级别)——infowarningcritical
  • scope(范围)——global 或某个特定服务。
  • duration(持续时间)——触发前违规状态必须保持多长时间(默认 60 秒)。
  • cooldown(冷却时间)——在仍处于违规状态时,两次重复触发之间的最小间隔(默认 30 分钟)。

一条规则在其违规状态保持了所配置的持续时间后触发,仅在冷却时间结束后才再次触发,并在数值回落到阈值以下时自动解除。

Pier 提供四种渠道。每种渠道有一份全局配置,加密存储:

渠道配置
TelegramBot token + chat ID
Email驱动(smtpbrevoresend)+ 发件/收件地址
DiscordWebhook URL + 可选的 @here 提醒
SlackWebhook URL

对于 SMTP 邮件,加密模式(starttlstlsnone)、主机、端口(默认 587)和凭据按渠道分别配置。Brevo 和 Resend 改为通过其 HTTP API 配合 API 密钥发送。

Telegram 投递直接访问 api.telegram.org。如果你服务器的网络封锁了该主机,即使配置有效,Telegram 通知也会发送失败。

每种渠道都有一个 Test 操作,它会通过实时配置发送一条示例消息,以便你在依赖该渠道之前确认凭据和连通性。单条规则也可以发送一条带 [TEST] 标记的测试消息。

每一次触发和解除都会作为一个事件记录下来,并附带其投递状态。提供两种视图:

  • 跨所有规则的最新事件的全局事件流
  • 某条规则近期事件的逐规则历史

投递失败的记录会保留并附上错误消息,因此配置错误的 webhook 或错误的 SMTP 主机会在事件流中可见,而不是被悄无声息地丢弃。

Pier 预置了一组现成的预设规则,让你无需从空白开始。预设是直接开启或关闭,而不是逐字段构建,并且它们通过上述全局渠道配置进行投递,而不携带各自的凭据。

  • 系统维护——Docker 清理事件也会向告警馈送。
  • 备份——备份告警所监视的数据库。
  • 故障排查——当通知未送达时。