提问人:Capt. Crunch 提问时间:11/13/2023 更新时间:11/13/2023 访问量:30
如何提醒 kubernetes 事件重复时间过长?
How to alert about kubernetes events repeating for too long?
问:
我的任务是找出 Kubernetes 事件何时长时间重复,以提醒我们注意它。 例如,由于部署重新启动,Liveness 探测的失败次数超出了合理的范围(但这只是一个示例,此任务的触发器是监视任何重复错误事件的请求)
我们使用 kubernetes-event-exporter 将事件导出到 Splunk,以便我们可以在那里查询它们。
我在导出的事件中找到了该字段,例如:count
$ kubectl get events -A -o json
{
"apiVersion": "v1",
"items": [
{
"apiVersion": "v1",
"count": 1852,
"eventTime": null,
"firstTimestamp": "2023-11-06T23:56:55Z",
"involvedObject": {
"apiVersion": "v1",
"fieldPath": "spec.containers{xxx}",
"kind": "Pod",
"name": "xxx-97cf7f9dc-922rb",
"namespace": "some-namespace",
"resourceVersion": "764541919",
"uid": "6aded215-e148-4b54-94c7-ad5fd394f1aa"
},
"kind": "Event",
"lastTimestamp": "2023-11-13T00:56:15Z",
"message": "Liveness probe failed: HTTP probe failed with statuscode: 500",
"metadata": {
"creationTimestamp": "2023-11-09T18:28:15Z",
"name": "xxxx-97cf7f9dc-922rb.17952e00cd9cfc38",
"namespace": "some-namespace",
"resourceVersion": "781477570",
"uid": "9ca6c31e-8de9-4a48-a93d-8a74eeaa928b"
},
"reason": "Unhealthy",
"reportingComponent": "",
"reportingInstance": "",
"source": {
"component": "kubelet",
"host": "ip-some-ip.some-region.compute.internal"
},
"type": "Warning"
},
事件中的“计数”字段在非官方参考中被描述为“计数(第一个和最后一个时间戳):显示事件的重复程度。
在官方文档中,它被标记为已弃用 (?)。
我们目前在 EKS 上使用 Kubernetes 1.27。
所以问题是:
- 有谁知道如何查询重复时间超过特定阈值的 K8s 事件,以便我可以绘制图表并最好对它们发出警报?
- 该领域是否相关?它是如何计算的(我的意思是 - “从什么时候开始重复?”,我应该依赖它,因为它可能会被弃用?
count
谢谢。
答:
若要对 Kubernetes 事件重复时间过长发出警报,可以查询特定时间段内计数高于特定阈值的事件。事件中的计数字段显示自首次生成事件以来发生的次数
但是,count 字段在官方文档中被标记为已弃用,因此使用起来可能不可靠
Kubernetes 事件的生存期很短,仅在生成后一小时内可用
若要从这些事件中获取可操作的见解,可以使用 Grafana 绘制图表
要查询计数高于特定阈值的事件,您可以使用 kubectl 获取事件并根据 count 字段对其进行筛选。例如,可以使用以下命令获取计数大于 10 的事件:
kubectl get events --all-namespaces --field-selector count>10
您还可以使用 --since 和 --until 标志来指定事件的时间范围
获得事件后,您可以在 Grafana 中绘制它们并根据图表设置警报。例如,您可以设置警报,以便在特定事件的计数在特定时间内高于特定阈值时触发
需要注意的是,并非所有 Kubernetes 事件都与监视和警报相关。某些事件纯粹用于诊断目的,Kubernetes 控制器不会使用这些事件来触发任何行为
因此,必须关注直接影响系统性能或用户体验的关键性能指标
评论