11

我在 AWS 上设置了我的 kubernetes 集群,我正在尝试使用 cAdvisor + Prometheus + Alert manager 监控多个 Pod。如果容器/pod 出现故障或卡在 Error 或 CarshLoopBackOff 状态或 stcuk 处于运行之外的任何其他状态,我想要做的是启动电子邮件警报(带有服务/容器名称)。

4

2 回答 2

13

Prometheus 收集范围广泛的指标。例如,您可以使用指标kube_pod_container_status_restarts_total来监控重启,这将反映您的问题。

它包含您可以在警报中使用的标签:

  • 容器=container-name
  • 命名空间=pod-namespace
  • 吊舱=pod-name

因此,您需要做的就是通过添加正确的 SMTP 设置、接收器​​和如下规则来配置您的alertmanager.yaml 配置:

global:
  # The smarthost and SMTP sender used for mail notifications.
  smtp_smarthost: 'localhost:25'
  smtp_from: 'alertmanager@example.org'
  smtp_auth_username: 'alertmanager'
  smtp_auth_password: 'password'

receivers:
- name: 'team-X-mails'
  email_configs:
  - to: 'team-X+alerts@example.org'

# Only one default receiver
route:
  receiver: team-X-mails

# Example group with one alert
groups:
- name: example-alert
  rules:
    # Alert about restarts
  - alert: RestartAlerts
    expr: count(kube_pod_container_status_restarts_total) by (pod-name) > 5
    for: 10m
    annotations:
      summary: "More than 5 restarts in pod {{ $labels.pod-name }}"
      description: "{{ $labels.container-name }} restarted (current value: {{ $value }}s) times in pod {{ $labels.pod-namespace }}/{{ $labels.pod-name }}"
于 2018-03-26T10:57:24.833 回答
0

我正在使用这个:

    - alert: PodCrashLooping
  annotations:
    description: Pod {{ $labels.namespace }}/{{ $labels.pod }} ({{ $labels.container }}) is restarting {{ printf "%.2f" $value }} times / 5 minutes.
    summary: Pod is crash looping.
  expr: rate(kube_pod_container_status_restarts_total{job="kube-state-metrics",namespace=~".*"}[5m]) * 60 * 5 > 0
  for: 5m
  labels:
    severity: critical
于 2021-08-04T14:27:13.817 回答