Kubernetes 是否可以避免对已触发的警报发送重复的延迟通知?

Kubernetes 是否可以避免对已触发的警报发送重复的延迟通知?,kubernetes,prometheus,prometheus-alertmanager,Kubernetes,Prometheus,Prometheus Alertmanager,免责声明:我第一次使用普罗米修斯 每次作业成功结束时,我都会尝试发送松弛通知 为了实现这一点,我安装了kube state metrics、Prometheus和AlertManager 然后我创建了以下规则: rules: - alert: KubeJobCompleted annotations: identifier: '{{ $labels.instance }}' summary: Job Completed Successfully

免责声明:我第一次使用普罗米修斯

每次作业成功结束时,我都会尝试发送松弛通知

为了实现这一点,我安装了kube state metrics、Prometheus和AlertManager

然后我创建了以下规则:

rules:
  - alert: KubeJobCompleted
    annotations:    
      identifier: '{{ $labels.instance }}'
      summary: Job Completed Successfully
      description: Job *{{ $labels.namespace }}/{{ $labels.job_name }}* is completed successfully.
    expr: |
      kube_job_spec_completions{job="kube-state-metrics"} - kube_job_status_succeeded{job="kube-state-metrics"}  == 0
    labels:
      severity: information
并添加了AlertManager接收器文本(模板):

我当前的结果是:每当一个新作业成功完成时,我都会收到一个Slack通知,其中列出了所有成功完成的作业

我不介意一开始就收到整个列表,但之后我希望收到只包含指定组间隔内新完成的作业的通知


有可能吗?

只需添加额外的规则即可显示上一次完成的作业:

行:
for:
-将列出10分钟内刚刚完成的作业:

rules:
  - alert: KubeJobCompleted
    annotations:    
      identifier: '{{ $labels.instance }}'
      summary: Job Completed Successfully
      description: Job *{{ $labels.namespace }}/{{ $labels.job_name }}* is completed successfully.
    expr: |
      kube_job_spec_completions{job="kube-state-metrics"} - kube_job_status_succeeded{job="kube-state-metrics"}  == 0
      for: 10m
    labels:
      severity: information

最后,我使用kube\u job\u status\u completion\u timetime()来消除过去的事件(避免重复事件)

规则:
-警报:Kubejob已完成
注释:
标识符:“{$labels.instance}}”
摘要:作业已成功完成
描述:作业*{{$labels.namespace}}/{{{$labels.Job_name}}*已成功完成。
表达式:|
时间()-kube_作业状态完成时间<60和kube_作业规格完成时间{job=“kube state metrics”}-kube_作业状态{job=“kube state metrics”}=0
标签:
严重性:信息
rules:
  - alert: KubeJobCompleted
    annotations:    
      identifier: '{{ $labels.instance }}'
      summary: Job Completed Successfully
      description: Job *{{ $labels.namespace }}/{{ $labels.job_name }}* is completed successfully.
    expr: |
      kube_job_spec_completions{job="kube-state-metrics"} - kube_job_status_succeeded{job="kube-state-metrics"}  == 0
      for: 10m
    labels:
      severity: information
rules:
  - alert: KubeJobCompleted
    annotations:    
      identifier: '{{ $labels.instance }}'
      summary: Job Completed Successfully
      description: Job *{{ $labels.namespace }}/{{ $labels.job_name }}* is completed successfully.
    expr: |
      time() - kube_job_status_completion_time < 60 and kube_job_spec_completions{job="kube-state-metrics"} - kube_job_status_succeeded{job="kube-state-metrics"}  == 0
    labels:
      severity: information