Este artículo está disponible en francés.
1. Superviser Kubernetes : ce qu'il faut collecter #
Quatre sources de métriques.
Les sources #
| Source | Contenu | Exposé par |
|---|---|---|
| kube-state-metrics | État des objets : pods, deployments, jobs, PVC... | Deployment kube-state-metrics |
| node-exporter | CPU, RAM, disque, réseau des nœuds | DaemonSet |
| kubelet / cAdvisor | Consommation des conteneurs | Chaque nœud (/metrics/cadvisor) |
| Control plane | API server, scheduler, etcd, controller-manager | Composants du cluster |
| Vos applications | Métriques métier et techniques | Endpoint /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:9090Le 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 #
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: metricsPrometheusRule #
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 serviceMonitorSelectorErreur Courante : Si votreServiceMonitorn'est pas pris en compte, vérifiez d'abord que son labelreleasecorrespond auserviceMonitorSelectorde l'objetPrometheus, puis que le port du Service est bien nommé.
4. Requêtes PromQL Kubernetes #
Les indispensables.
Quelques requêtes utiles #
# 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.1Bonne 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.Mi seguimiento
Inicia sesión para seguir tu progreso y tomar notas. Iniciar sesión
💬 Debates recientes del curso
- Prometheus consomme 12 Go de RAM : comment trouver les métriques coupables ?✓ resuelto · 2 respuesta(s)
- PromQL : quelle différence entre rate() et irate() ?✓ resuelto · 1 respuesta(s)
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...