CertManagerMetricsMissing / CertManagerMetricsMissingMultiaz
Что означает алерт
| Алерт | Условие | Severity |
|---|---|---|
CertManagerMetricsMissing |
в хранилище нет метрики certmanager_certificate_expiration_timestamp_seconds локального кластера (prod или stage) 15 минут |
critical |
CertManagerMetricsMissingMultiaz |
нет той же метрики с cluster="prod-multiaz" 15 минут (только в prod) |
critical |
Все остальные алерты cert-manager-alerts для этого кластера не работают, пока метрик нет. Сертификаты при этом продолжают обслуживаться, проблема в мониторинге.
Как собираются метрики
| Кластер | Сбор | Путь до хранилища |
|---|---|---|
| prod | PodMonitor cert-manager в namespace cert-manager (создан вручную, в репозиториях отсутствует), порт http-metrics |
vmagent prod → vminsert prod |
| prod-multiaz | VMPodScrape cert-manager в namespace vm-stack (репозиторий vm-stack, ветка prod-multiaz), порт http |
vmagent multiaz → https://vmalertmanager.sarex.tech/insert/0/prometheus/api/v1/write (basic auth, секрет vmuser-multiaz-remote-write) → vmauth-remote-write prod → vminsert prod |
| stage | VMPodScrape cert-manager в namespace vm-stack (репозиторий vm-stack, ветка stage), порт http |
vmagent stage → vminsert stage |
Диагностика (по шагам)
- Проверить, что контроллер cert-manager работает:
kubectl --context <ctx> -n cert-manager get pods
- Проверить, что объект сбора существует:
kubectl --context yc-sarex-prod -n cert-manager get podmonitor cert-manager
kubectl --context <ctx> -n vm-stack get vmpodscrape cert-manager
- Проверить, что vmagent работает и видит цель:
kubectl --context <ctx> -n vm-stack get pods -l app.kubernetes.io/name=vmagent
kubectl --context <ctx> -n vm-stack logs -l app.kubernetes.io/name=vmagent -c vmagent --since=30m | grep -iE 'error|cert-manager'
- Для prod-multiaz: проверить запись в prod. Ошибки
401в логе vmagent multiaz означают, что пароль в секретеvmuser-multiaz-remote-writeв multiaz не совпадает с паролем в prod. Ошибки503или таймауты означают, что недоступенvmauth-remote-writeв prod или маршрут в istio-config.
kubectl --context yc-sarex-prod -n vm-stack get pods | grep vmauth-remote-write
curl -s -o /dev/null -w '%{http_code}\n' -X POST https://vmalertmanager.sarex.tech/insert/0/prometheus/api/v1/write
Без учётных данных эндпоинт отвечает 401. Другой код означает проблему на пути до vmauth.
Как починить
| Причина | Действие |
|---|---|
| контроллер cert-manager не работает | восстановить deployment контроллера |
| отсутствует VMPodScrape (prod-multiaz, stage) | задеплоить репозиторий vm-stack соответствующей ветки |
| отсутствует PodMonitor (prod) | создать заново по спецификации ниже |
| пароль VMUser изменён в prod | скопировать секрет vmuser-multiaz-remote-write из yc-sarex-prod в yc-sarex-prod-multiaz (namespace vm-stack), перезапустить vmagent multiaz |
не работает vmauth-remote-write |
проверить поды и образ cr.yandex/crp3ccidau046kdj8g9q/vm-stack/vmauth |
Спецификация PodMonitor в prod (kubectl --context yc-sarex-prod apply -f):
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
name: cert-manager
namespace: cert-manager
labels:
app: cert-manager
app.kubernetes.io/instance: cert-manager
app.kubernetes.io/name: cert-manager
spec:
jobLabel: app.kubernetes.io/name
podMetricsEndpoints:
- port: http-metrics
selector:
matchExpressions:
- key: app.kubernetes.io/name
operator: In
values: [cainjector, cert-manager, webhook]
- key: app.kubernetes.io/instance
operator: In
values: [cert-manager]
- key: app.kubernetes.io/component
operator: In
values: [cainjector, controller, webhook]
Критерий закрытия
- Метрика
certmanager_certificate_expiration_timestamp_secondsдля кластера снова появилась в хранилище. - Алерт перешёл в
inactive.