web-dev-qa-db-ja.com

DockerコンテナポッドにエラーまたはCarshLoopBackOffkubernetesが発生したときにアラートを送信

AWSでkubernetesクラスターをセットアップし、cAdvisor + Prometheus + Alertmanagerを使用して複数のポッドを監視しようとしています。私がやりたいことは、コンテナー/ポッドがダウンしたり、エラー状態またはCarshLoopBackOff状態でスタックしたり、実行中以外の状態でstcukが発生したりした場合に、(サービス/コンテナー名を含む)電子メールアラートを起動することです。

6
shiv455

Prometheusは 幅広いメトリック を収集します。例として、再起動を監視するためにメトリックkube_pod_container_status_restarts_totalを使用できます。これは、問題を反映します。

アラートで使用できるタグが含まれています。

  • container = container-name
  • 名前空間= pod-namespace
  • pod = pod-name

したがって、必要なのは、正しいSMTP設定、レシーバー、および次のようなルールを追加して、alertmanager.yamlconfig を構成することだけです。

global:
  # The smarthost and SMTP sender used for mail notifications.
  smtp_smarthost: 'localhost:25'
  smtp_from: '[email protected]'
  smtp_auth_username: 'alertmanager'
  smtp_auth_password: 'password'

receivers:
- name: 'team-X-mails'
  email_configs:
  - to: '[email protected]'

# 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 }}"
7
Anton Kostenko