RousselTMLEARNING

Artículo · Prometheus: del descubrimiento a la experiencia

Buenas prácticas de Prometheus

Este artículo está disponible en francés.

1. Concevoir de bonnes métriques #

Nommage et labels.

Conventions #

Bonnes pratiques Prometheus
Une métrique bien nommée se comprend sans documentation.
RègleExemple correctExemple à éviter
Unités de basehttp_request_duration_secondsrequest_time_ms
Compteurs en _totalhttp_requests_totalhttp_requests_count
Préfixe d'applicationshop_orders_created_totalorders
Un nom, plusieurs labelshttp_requests_total{method="GET"}http_get_requests_total
Labels à faible cardinalitéstatus="500", route="/orders"user_id="4821", url="/orders/9921"
Erreur Courante : Chaque combinaison unique de labels est une série temporelle stockée en mémoire. Un label comme user_id ou request_id peut multiplier le nombre de séries par des millions.

Détecter les problèmes de cardinalité #

# Séries les plus nombreuses par métrique
topk(10, count by (__name__) ({__name__=~".+"}))
prometheus_tsdb_head_series
rate(prometheus_tsdb_head_series_created_total[1h])

curl -s localhost:9090/api/v1/status/tsdb | jq '.data.seriesCountByMetricName[:5]'
promtool tsdb analyze /prometheus | head -40

2. Collecte et règles #

Scrape, relabeling et recording rules.

prometheus.yml #

global:
  scrape_interval: 30s          # un seul intervalle commun ; 15 s si nécessaire
  evaluation_interval: 30s
  external_labels: { cluster: prod-eu, replica: A }
scrape_configs:
  - job_name: api
    scrape_timeout: 10s
    sample_limit: 20000                       # protège contre une explosion de séries
    label_limit: 30
    static_configs: [{ targets: ["api-1:8080", "api-2:8080"] }]
    metric_relabel_configs:
      - { source_labels: [__name__], regex: "go_gc_.*|go_memstats_.*", action: drop }   # supprimer le bruit à la source
      - { regex: "session_id", action: labeldrop }

Recording rules #

groups:
  - name: api.rules
    interval: 30s
    rules:
      - record: job:http_requests:rate5m
        expr: sum by (job) (rate(http_requests_total[5m]))
      - record: job:http_errors:ratio_rate5m
        expr: sum by (job) (rate(http_requests_total{status=~"5.."}[5m])) / sum by (job) (rate(http_requests_total[5m]))
promtool check config prometheus.yml && promtool check rules rules/*.yml
curl -s localhost:8080/metrics | promtool check metrics       # linter de métriques (nommage)
promtool test rules tests/*.yml

3. Alertes utiles #

Symptômes plutôt que causes.

Règles d'or #

  • Alertez sur ce que l'utilisateur ressent (erreurs, latence, saturation) plutôt que sur chaque cause (CPU à 80 %).
  • Utilisez for: pour éviter les alertes sur des pics brefs ; ajoutez une description et un lien vers un runbook.
  • Chaque alerte doit déclencher une action : sinon, supprimez-la ou transformez-la en tableau de bord.
- alert: ApiHighErrorRate
  expr: job:http_errors:ratio_rate5m{job="api"} > 0.05
  for: 10m
  labels: { severity: critical, team: backend }
  annotations:
    summary: "Plus de 5 % d'erreurs sur {{ $labels.job }}"
    runbook_url: https://wiki.exemple.fr/runbooks/api-errors
- alert: Watchdog
  expr: vector(1)                          # doit toujours être active : vérifie la chaîne d'alerte

4. Stockage, haute disponibilité et sécurité #

Exploiter durablement.

Dimensionnement et HA #

# espace ≈ rétention (s) × échantillons/s × ~1,5 octet
rate(prometheus_tsdb_head_samples_appended_total[2h])
prometheus --storage.tsdb.retention.time=30d --storage.tsdb.retention.size=200GB --storage.tsdb.wal-compression
du -sh /prometheus; curl -s localhost:9090/api/v1/status/runtimeinfo | jq '.data.storageRetention'
  • HA : deux Prometheus identiques (label replica différent) + Alertmanager en cluster ; déduplication avec Thanos/Mimir.
  • Long terme : remote_write vers Mimir, Thanos Receive ou VictoriaMetrics ; rétention locale courte.
  • Sécurité : TLS et authentification basique via --web.config.file, API admin désactivée si inutile.
# web.yml
tls_server_config: { cert_file: /etc/prometheus/tls.crt, key_file: /etc/prometheus/tls.key }
basic_auth_users: { admin: "$2y$10$..." }
prometheus --web.config.file=/etc/prometheus/web.yml

Schéma de référence et vérification rapide #

Visualiser le principe et le contrôler en ligne de commande.

Schéma de référence #

Cardinalité et nombre de séries
Chaque nouveau label multiplie le nombre de séries.
topk(10, count by (__name__) ({__name__=~".+"}))

📄 Bonnes pratiques Prometheus : métriques, cardinalité, règles et exploitation →

Mi seguimiento

  • ⏱ Duración estimada : ≈ 10 min

Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión

💬 Debates recientes del curso

Hacer una pregunta sobre esta lección →Ver todos los debates del curso

Glossaire de la formation

Observabilidad

La capacidad de conocer el estado interno de un sistema a partir de los datos que emite.Estos datos se clasifican en 3 pilares: logs (registros)métric...

Métricas

Medidas numéricas recopiladas a intervalos regulares (ej: CPU, RAM, tiempo de respuesta) utilizadas para evaluar el estado de salud general de un sist...

Alerting (Alertas)

Proceso que consiste en notificar a los equipos (vía email, Slack, Teams) cuando se detecta un evento específico, un umbral superado o una anomalía.

Arquitectura

Diseño global y estructural de un sistema informático, definiendo sus diferentes componentes, sus relaciones y los principios que guían su evolución.

OpenTelemetry

Framework de código abierto que proporciona estándares, APIs y SDKs para recopilar y exportar datos de observabilidad (trazas, métricas, logs) de mane...

Artículos recomendados

Recording rules Prometheus : accélérer ses requêtes et ses tableaux de bord

Comprendre et maîtriser les recording rules de Prometheus : évaluation, convention de nommage, pi...

Prometheus : alerter avec Alertmanager (règles, routage, silences)

Mettre en place l'alerting Prometheus : règles d'alerte, Alertmanager, routage, regroupement, inh...

Mesurer des SLI avec Prometheus

Implémenter des SLI de disponibilité et de latence avec Prometheus : métriques nécessaires, requê...

Écrire de bonnes règles d'alerte Prometheus (et les tester)

Concevoir des alertes utiles : alerter sur les symptômes, choisir for et les seuils, labels de sé...

Mimir : ruler, Alertmanager et mimirtool

Évaluer des règles d'enregistrement et d'alerte dans Mimir, configurer l'Alertmanager multi-tenan...

Prometheus : visualiser ses métriques (UI, Grafana et dashboards)

Visualiser les données Prometheus : interface web, graphes PromQL, connexion à Grafana, dashboard...

Les types de métriques dans Prometheus

Découvrez en détail les quatre types de métriques supportés par Prometheus (Counter, Gauge, Histo...

PromQL : introduction au langage de requête de Prometheus

Apprendre PromQL, le langage de requête de Prometheus : sélecteurs, rate, sum by, histogrammes et...

Alerter sur les logs avec le Ruler de Loki

Mettre en place des alertes et des recording rules LogQL avec le Ruler Loki : configuration, fich...

Apoyar

♥ APOYAR

Apoya RousselTM Learning

Los cursos, artículos, prácticas y certificados siguen siendo gratuitos y sin publicidad intrusiva. Una contribución libre, por el importe que elijas, financia el alojamiento, los entornos de prácticas y nuevos contenidos.

Contribuir con PayPal Importe libre · tarjeta o cuenta PayPalMás información
QR code PayPal
O escanea este código QR con tu teléfono

¡Gracias, cada contribución cuenta!