OCP告警body模板无alarm_duration值

【 使用环境 】生产环境
【 OB or 其他组件 】 OCP
【 使用版本 】4.3.6
【问题描述】配置告警的Body模板中,无alarm_duration持续时长(秒)变量值,在标签说明中看到是有的
image

【复现路径】问题出现前后相关操作

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

4 个赞

@论坛小助手

1 个赞

在当前提供的文档片段中,未找到关于告警Body模板中包含alarm_duration持续时长变量的具体说明。不过,告警检测规则中确实存在持续时长的概念,通常称为duration,用于确保告警的触发不是由于偶发的一次异常导致的,而是持续异常的结果。然而,这个概念在告警Body模板中似乎并未直接映射为alarm_duration变量。
建议检查告警模板变量文档,确认是否有其他变量可以表示告警的持续时长。另外,如果您的OCP版本是4.3.6,可能需要查阅官方最新文档或联系技术支持获取更详细的变量说明。

详情请参考:

  1. 告警相关概念
  2. host_agent_version_not_same 主机 OCP-Agent 版本与预期版本不一致
2 个赞

image

1 个赞

这个 Body模板 在哪看到的?

1 个赞

这是根据第三方告警平台模板写的json格式的告警内容。
变量名是第三方告警平台的,值是OCP平台的

1 个赞

你是说在第三方告警平台接入OCP后获取不到 alarm_duration和alarm_last_interval ?

是OCP没有alarm_duration和alarm_last_interval 这两个变量

你使用这个变量 ${duration} 试下

image
还是一样的

我再看下这块逻辑,因为告警持续时间在告警发生时是无法计算出来的,另外应该只能在告警事件中查看到,不在通知模板中


是这样的,所以我在下面的“告警消息模板”中也加了这个变量,但是貌似告警内容只跟“Body模板”中的内容绑定

我测了下,持续时长配置在告警通道中是有数据的,${alarm_duration} 以及${alarm_last_interval} 都可以用

1 个赞

这个是钉钉这些方式的吧,HTTP方式发送的告警必须填Body模板,Body模板里面没有这两个变量

是的,我验证了下钉钉通道,你发下http通道的如下配置看下,敏感信息脱敏下

URL模板:http://***:2828
Header模板:Content-Type:application/json
Body模板、告警消息模板、告警恢复消息模板:
{
“content”:" ${alarm_description} “,
“originId”:”${alarm_id}",
“duration”:"${alarm_duration}",
“recoveryoriginId”:"${alarm_id}",
“severity”:"${alarm_level}",
“eventTime”:"${alarm_active_at}",
“object”:"${alarm_target)",
“location”:“OCEANBASE云平台”,
“title”:"${alarm_name}",
“host”:"${host_ip}",
“hostname”:"${host_name}",
“objectType”:"${alarm_scope}",
“metricName”:"${metrics}",
“metricvalue”:"${values}",
“status”:"${alarm_status}
}

我使用钉钉模拟了http通道,是这个结果,你测下看看呢

试了下,发送测试告警会给一个默认值60,但是真正的告警还是无法识别

未启用推送来源时,告警消息的值都是默认的,例如:

启用推送来源后,OCP会去读真实的告警消息,
告警通道这样配置(msgtype为markdown),是可以读取到持续时间的,不需要配置在 告警消息模板中,例如:

如果msgtype为text类型则只支持 content 字段,也是可以读取到持续时间变量的,并且建议直接配置为"content": “${message}”,${message}就是告警消息模板的内容

  {
    "msgtype": "text",
    "text": {
      "content": "内容"
    }
  }

你是否在OCP上启用了推送来源?是通过http通道将告警推送到哪里?