RousselTMLEARNING

Artículo · Prometheus: del descubrimiento a la experiencia

Prometheus en Kubernetes: Operator y ServiceMonitor

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

1. Superviser Kubernetes : ce qu'il faut collecter #

Quatre sources de métriques.

Les sources #

SourceContenuExposé par
kube-state-metricsÉtat des objets : pods, deployments, jobs, PVC...Deployment kube-state-metrics
node-exporterCPU, RAM, disque, réseau des nœudsDaemonSet
kubelet / cAdvisorConsommation des conteneursChaque nœud (/metrics/cadvisor)
Control planeAPI server, scheduler, etcd, controller-managerComposants du cluster
Vos applicationsMétriques métier et techniquesEndpoint /metrics

2. Installer kube-prometheus-stack #

Tout-en-un avec Helm.

Installation #

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
helm install monitoring prometheus-community/kube-prometheus-stack \
  -n monitoring --create-namespace \
  --set grafana.adminPassword=ChangeMe! \
  --set prometheus.prometheusSpec.retention=15d \
  --set prometheus.prometheusSpec.serviceMonitorSelectorNilUsesHelmValues=false

kubectl -n monitoring get pods
kubectl -n monitoring port-forward svc/monitoring-grafana 3000:80
kubectl -n monitoring port-forward svc/monitoring-kube-prometheus-prometheus 9090:9090

Le chart installe l'opérateur, Prometheus, Alertmanager, Grafana avec des dashboards Kubernetes prêts à l'emploi, node-exporter, kube-state-metrics et un jeu de règles d'alerte standard.

3. Les CRD de l'Operator #

Déclarer ce que l'on veut superviser.

ServiceMonitor et PodMonitor #

Fonctionnement du Prometheus Operator
Plus besoin d'éditer prometheus.yml : on déclare des objets Kubernetes.
# Application exposant /metrics sur le port nommé "http-metrics"
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: mon-api
  namespace: monitoring
  labels: { release: monitoring }
spec:
  namespaceSelector: { matchNames: [production] }
  selector:
    matchLabels: { app: mon-api }
  endpoints:
    - port: http-metrics
      path: /metrics
      interval: 30s
# Sans Service : cibler directement les pods
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata: { name: workers, namespace: monitoring, labels: { release: monitoring } }
spec:
  namespaceSelector: { matchNames: [production] }
  selector: { matchLabels: { app: worker } }
  podMetricsEndpoints:
    - port: metrics

PrometheusRule #

apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata: { name: mon-api-alertes, namespace: monitoring, labels: { release: monitoring } }
spec:
  groups:
    - name: mon-api
      rules:
        - alert: ApiHighErrorRate
          expr: sum(rate(http_requests_total{app="mon-api",status=~"5.."}[5m])) / sum(rate(http_requests_total{app="mon-api"}[5m])) > 0.05
          for: 10m
          labels: { severity: critical }
          annotations: { summary: "Plus de 5 % d'erreurs sur mon-api" }
kubectl get servicemonitors,podmonitors,prometheusrules -A
kubectl -n monitoring get prometheus -o yaml | grep -A3 serviceMonitorSelector
Erreur Courante : Si votre ServiceMonitor n'est pas pris en compte, vérifiez d'abord que son label release correspond au serviceMonitorSelector de l'objet Prometheus, puis que le port du Service est bien nommé.

4. Requêtes PromQL Kubernetes #

Les indispensables.

Quelques requêtes utiles #

Cibles Prometheus dans Kubernetes
Vérification rapide des cibles collectées.
# Pods qui redémarrent
increase(kube_pod_container_status_restarts_total[1h]) > 3

# Pods non prêts
kube_pod_status_ready{condition="false"} == 1

# CPU par namespace (cœurs)
sum by (namespace) (rate(container_cpu_usage_seconds_total{container!=""}[5m]))

# Mémoire utilisée / demandée
sum by (pod) (container_memory_working_set_bytes{container!=""})
  / sum by (pod) (kube_pod_container_resource_requests{resource="memory"})

# Réplicas indisponibles
kube_deployment_status_replicas_unavailable > 0

# PVC bientôt pleins
kubelet_volume_stats_available_bytes / kubelet_volume_stats_capacity_bytes < 0.1
Bonne Pratique : Pour de grands clusters, déléguez le stockage long terme à Mimir/Thanos avec remoteWrite et réduisez la rétention locale de Prometheus.

📄 Prometheus dans le monde Kubernetes (Operator, ServiceMonitor, kube-prometheus-stack) →

Mi seguimiento

  • ⏱ Duración estimada : ≈ 12 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

Prometheus sur Kubernetes et l'interface web de Prometheus

Déployer Prometheus sur Kubernetes avec kube-prometheus-stack (Prometheus Operator, ServiceMonito...

Déployer Thanos sur Kubernetes (kube-prometheus-stack, Helm et Operator)

Installer Thanos sur Kubernetes : sidecar via kube-prometheus-stack, secret objstore, Bitnami/kub...

Exploiter VictoriaMetrics : vmalert, sauvegardes, Kubernetes et supervision

Évaluer règles et alertes avec vmalert, sauvegarder avec vmbackup, déployer sur Kubernetes avec l...

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...

Elastic Agent en Kubernetes

Desplegar Elastic Agent en Kubernetes: DaemonSet gestionado por Fleet, integración Kubernetes, ku...

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...

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

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

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!