【问题标题】:Azure Kubernetes Service (AKS) - Pod restart alertAzure Kubernetes 服务 (AKS) - Pod 重启警报
【发布时间】:2020-05-11 20:18:00
【问题描述】:

我想在 Pod 重新启动时创建警报规则。即如果 pod 在 30 分钟的窗口内重新启动两次

我有以下日志分析查询:

KubePodInventory
| where ServiceName == "xxxx"
| project PodRestartCount, TimeGenerated, ServiceName
| summarize AggregatedValue = count(PodRestartCount) by ServiceName, bin(TimeGenerated, 30m) 

但是在这种情况下将警报阈值设置为 2 将不起作用,因为 PodRestartCount 未重置。任何帮助将不胜感激。也许我缺少更好的方法。

【问题讨论】:

  • 您的警报是否基于 kube-state-metrics 指标?
  • 这是一个使用 kube-state-metrics 数据的示例。 github.com/helm/charts/blob/master/stable/prometheus-operator/…
  • 我尝试了您的查询,您不应该使用汇率而不是 count 吗?你是对的,PodRestartCount 是一个计数,因此,它会递增直到 pod 更改 ID

标签: kubernetes azure-aks azure-log-analytics azure-monitoring


【解决方案1】:

要重置 BIN() 之间的计数,您可以在序列化输出上使用 prev() 函数来计算差异

KubePodInventory
| where ServiceName == "<service name>" 
| where Namespace == "<namespace name>"
| summarize AggregatedPodRestarts = sum(PodRestartCount) by bin(TimeGenerated, 30m) 
| serialize
| extend prevPodRestarts = prev(AggregatedPodRestarts,1)
| extend diff = AggregatedPodRestarts - prevPodRestarts
| where diff >= 2

这将在您的 BIN 期间为您输出正确的差异。

TimeGenerated [UTC]         prevPodRestarts diff        AggregatedPodRestarts
5/12/2020, 12:00:00.000 AM  1,368,477       191,364     1,559,841   
5/11/2020, 11:00:00.000 PM  1,552,614       3,594       1,556,208   
5/11/2020, 10:00:00.000 PM  182,217         1,370,397   1,552,614

参考: https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/serializeoperator

https://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/prevfunction

【讨论】:

  • 很高兴它的工作,请随意接受这个答案作为一个有效的答案。
猜你喜欢
  • 1970-01-01
  • 2021-10-05
  • 2022-12-01
  • 2019-11-06
  • 2022-10-07
  • 2021-09-20
  • 1970-01-01
  • 2019-06-09
  • 2020-09-16
相关资源
最近更新 更多