Как вызвать оповещение в Kubernetes с помощью Prometheus Alert Manager - PullRequest
0 голосов
/ 30 ноября 2018

У меня настроен kube-prometheus в моем кластере (https://github.com/coreos/prometheus-operator/tree/master/contrib/kube-prometheus).. Он содержит некоторые предупреждения по умолчанию, такие как «CoreDNSdown и т. Д.». Как создать собственное предупреждение?

Может ли кто-нибудь предоставить мне примерсоздать оповещение, которое отправит электронное письмо на мою учетную запись gmail?

Я следовал этому предупреждению , когда модуль контейнера Docker находится в состоянии Ошибка или CarshLoopBackOff kubernetes . Но я не смог заставить его работать.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

Если вы используете kube-promehtheus, по умолчанию у него есть настройка alertmanager-main secrete и prometheus kind.

Шаг 1: Вы должны удалить основной секрет alertmanager

kubectl delete secret alertmanager-main -n monitoring

Шаг 2: Как объяснил Praful, создайте секрет с новым изменением

cat <<EOF > alertmanager.yaml
route:
  group_by: [Alertname]
  # Send all notifications to me.
  receiver: email-me

receivers:
- name: email-me
  email_configs:
  - to: $GMAIL_ACCOUNT
    from: $GMAIL_ACCOUNT
    smarthost: smtp.gmail.com:587
    auth_username: "$GMAIL_ACCOUNT"
    auth_identity: "$GMAIL_ACCOUNT"
    auth_password: "$GMAIL_AUTH_TOKEN"
EOF

kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring

Шаг 3: Вы должны добавить новое правило прометея

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
  creationTimestamp: null
  labels:
    prometheus: k8s
    role: alert-rules
  name: prometheus-podfail-rules
spec:
  groups:
  - name: ./podfail.rules
    rules:
    - alert: PodFailAlert
      expr: sum(kube_pod_container_status_restarts_total{container="ffmpeggpu"}) BY (container) > 10

Примечание: роль должна быть ролью: alert-rules, котораяуказан в правиле селектора типа прометей, чтобы проверить, что используется

kubectl get prometheus k8s -n monitoring -o yaml
0 голосов
/ 30 ноября 2018

Чтобы отправить оповещение на свою учетную запись gmail, вам необходимо настроить конфигурацию alertmanager в файле, например alertmanager.yaml:

cat <<EOF > alertmanager.yml
route:
  group_by: [Alertname]
  # Send all notifications to me.
  receiver: email-me

receivers:
- name: email-me
  email_configs:
  - to: $GMAIL_ACCOUNT
    from: $GMAIL_ACCOUNT
    smarthost: smtp.gmail.com:587
    auth_username: "$GMAIL_ACCOUNT"
    auth_identity: "$GMAIL_ACCOUNT"
    auth_password: "$GMAIL_AUTH_TOKEN"
EOF

Теперь, когда вы используете kube-prometheus, у вас будетсекрет с именем alertmanager-main, который является конфигурацией по умолчанию для alertmanager.Вам нужно снова создать секрет alertmanager-main с новой конфигурацией, используя следующую команду:

kubectl create secret generic alertmanager-main --from-file=alertmanager.yaml -n monitoring

Теперь вы настроены на то, чтобы оповещение о тревоге было настроено на отправку электронного письма при получении оповещения от прометея.

Теперь вам нужно настроить оповещение о том, что ваша почта будет отправлена.Вы можете настроить оповещение DeadManSwitch, которое срабатывает в каждом случае и используется для проверки конвейера оповещений

groups:
- name: meta
  rules:
    - alert: DeadMansSwitch
      expr: vector(1)
      labels:
        severity: critical
      annotations:
        description: This is a DeadMansSwitch meant to ensure that the entire Alerting
          pipeline is functional.
        summary: Alerting DeadMansSwitch

После этого оповещение DeadManSwitch сработает и должно отправить электронное письмо на вашу почту.

Ссылочная ссылка:

https://coreos.com/tectonic/docs/latest/tectonic-prometheus-operator/user-guides/configuring-prometheus-alertmanager.html

РЕДАКТИРОВАТЬ:

Предупреждение Deadmanswitch должно идти в конфигурации карты, которую читает ваш прометей,Я поделюсь соответствующими снимками с моего прометея здесь:

"spec": {
        "alerting": {
            "alertmanagers": [
                {
                    "name": "alertmanager-main",
                    "namespace": "monitoring",
                    "port": "web"
                }
            ]
        },
        "baseImage": "quay.io/prometheus/prometheus",
        "replicas": 2,
        "resources": {
            "requests": {
                "memory": "400Mi"
            }
        },
        "ruleSelector": {
            "matchLabels": {
                "prometheus": "prafull",
                "role": "alert-rules"
            }
        },

Приведенный выше конфиг - это мой файл prometheus.json, в котором используется имя alertmanager и ruleSelector, который будет выбирать правила на основеprometheus и role метка.Итак, у меня есть моя карта конфигурации правил, например:

kind: ConfigMap
apiVersion: v1
metadata:
  name: prometheus-rules
  namespace: monitoring
  labels:
    role: alert-rules
    prometheus: prafull
data:
  alert-rules.yaml: |+
   groups:
   - name: alerting_rules
     rules:
       - alert: LoadAverage15m
         expr: node_load15 >= 0.50
         labels:
           severity: major
         annotations:
           summary: "Instance {{ $labels.instance }} - high load average"
           description: "{{ $labels.instance  }} (measured by {{ $labels.job }}) has high load average ({{ $value }}) over 15 minutes."

Замените DeadManSwitch в приведенной выше карте конфигурации.

...