You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何针对长期重复的Kubernetes事件配置告警?

解答

1. 查询持续时间超阈值的K8s事件(Splunk实现)

利用Splunk的时间处理和统计功能,基于事件的firstTimestamp和lastTimestamp计算持续时长,过滤出超过阈值的事件,示例查询如下:

# 替换为你的索引和 sourcetype
index=k8s_events sourcetype=kubernetes_event type=Warning
| eval first_epoch=strptime(firstTimestamp, "%Y-%m-%dT%H:%M:%SZ")
| eval last_epoch=strptime(lastTimestamp, "%Y-%m-%dT%H:%M:%SZ")
| eval duration_hours=(last_epoch - first_epoch)/3600
# 筛选持续时间超过24小时的事件,可根据需求调整阈值
| where duration_hours > 24
# 展示关键字段,方便排查
| table namespace involvedObject.name reason message firstTimestamp lastTimestamp duration_hours
# 按持续时长降序排列,优先关注最久的事件
| sort -duration_hours

图表与告警配置

  • 图表展示:基于上述查询,可创建柱状图(按duration_hours分组)或饼图(按namespace聚合事件数量),直观呈现长期持续的异常事件分布。
  • 告警触发:设置Splunk告警规则,当查询结果中duration_hours超过阈值(如24小时),或结合事件重复次数(自行统计)超过设定值时,触发邮件/短信告警。

2. 关于count字段的说明

是否仍适用?

在EKS 1.27版本中,count字段仍会被kubelet填充,但官方已标记为弃用,意味着未来Kubernetes版本可能移除该字段,或不再保证其行为一致性。

计算逻辑

count字段统计的是从firstTimestamp到lastTimestamp时间段内,同一事件(相同involvedObject、reason、message、source等标识)被Kubernetes重复触发的次数。比如示例中存活探针失败事件,在7天内重复发生了1852次。

是否应该依赖?

不建议长期依赖count字段:

  • 弃用字段无官方维护保障,后续版本可能被移除或修改逻辑,导致监控规则失效。
  • 替代方案:在Splunk中自行统计事件重复次数,通过按involvedObject.uid、reason、message分组,使用stats count计算重复次数,示例查询:
    index=k8s_events sourcetype=kubernetes_event type=Warning
    | stats count as event_count earliest(firstTimestamp) as first_time latest(lastTimestamp) as last_time by involvedObject.uid reason message namespace
    | eval duration_hours=(strptime(last_time, "%Y-%m-%dT%H:%M:%SZ") - strptime(first_time, "%Y-%m-%dT%H:%M:%SZ"))/3600
    | where event_count > 100 OR duration_hours > 24
    
    这种方式不依赖K8s的count字段,完全基于导出的原始事件统计,更稳定可靠。

内容的提问来源于stack exchange,提问作者Capt. Crunch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 08:10:23