Initial vault setup
This commit is contained in:
@@ -0,0 +1,166 @@
|
||||
---
|
||||
title: cAdvisor
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, monitoring, containers, docker, metrics, go, kubernetes]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Monitoring, https://github.com/google/cadvisor]
|
||||
---
|
||||
|
||||
# 📊 cAdvisor
|
||||
|
||||
> **L'analyseur de ressources pour containers** : CPU, RAM, réseau, FS par container. Par Google. La brique de base du monitoring Docker/Kubernetes.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | (GitHub) |
|
||||
| **GitHub** | [google/cadvisor](https://github.com/google/cadvisor) |
|
||||
| **License** | Custom (Apache-2.0 modifié) |
|
||||
| **Langage** | Go |
|
||||
| **Étoiles GitHub** | 19.2k ⭐ |
|
||||
| **Dernière MAJ** | 2026-06-07 |
|
||||
| **Catégorie** | [[cat-monitoring|Monitoring]], Containers |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**cAdvisor** (Container Advisor) est un **daemon de monitoring de containers** développé par **Google**. Il collecte, agrège et expose les **métriques d'utilisation des ressources** (CPU, mémoire, réseau, filesystem) pour **chaque container** tournant sur un hôte.
|
||||
|
||||
cAdvisor est **intégré nativement à Kubernetes** (`kubelet` le lance automatiquement sur chaque node) et c'est la **brique de base** de la stack de monitoring containers. Il est conçu pour être **branché sur Prometheus** via son endpoint `/metrics`.
|
||||
|
||||
- ✅ **Métriques par container** : CPU, RAM, réseau, FS, swap
|
||||
- ✅ **Historique** : ring buffer configurable (par défaut 1-2 min, extensible)
|
||||
- ✅ **Auto-discovery** : détecte tous les containers Docker/containerd/cri-o
|
||||
- ✅ **Web UI** : visualisation en temps réel (basique)
|
||||
- ✅ **Endpoint Prometheus** : `/metrics` au format natif
|
||||
- ✅ **Léger** : ~50-100 Mo de RAM par hôte
|
||||
- ✅ **gRPC API** pour intégration
|
||||
- ✅ **Pas de configuration** : zéro-config après install
|
||||
|
||||
**Public cible** : **DevOps, SRE, plateforme, kubernetes admins**. Utilisé en interne par **toutes les stacks de monitoring de containers** (Prometheus, Datadog, New Relic, etc.).
|
||||
|
||||
**Comparaison** : cAdvisor est à [[app-netdata]] ce que la **jauge de vitesse** est au **tableau de bord complet** : il fait **une chose très bien** (métriques containers). Pour les métriques système globales, on utilise plutôt `node_exporter` (Prometheus) ou Netdata. Pour les **dashboards avancés**, on agrège cAdvisor dans Prometheus + Grafana. cAdvisor ne se substitue **pas** à [[app-glances]] (qui est plus système) ni à [[app-uptime-kuma]] (qui est orienté uptime).
|
||||
|
||||
> ⚠️ **License Custom (Apache-2.0 modifié)** : libre pour usage, mais **interdit de l'utiliser pour concurrencer Google** (notamment Google Cloud). Pour de l'usage interne/self-hosted, c'est OK.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Option 1 : Docker (standalone, recommandé pour Docker hosts)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
cadvisor:
|
||||
image: gcr.io/cadvisor/cadvisor:latest
|
||||
container_name: cadvisor
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
- "8080:8080" # Web UI
|
||||
volumes:
|
||||
- /:/rootfs:ro
|
||||
- /var/run:/var/run:ro
|
||||
- /sys:/sys:ro
|
||||
- /var/lib/docker/:/var/lib/docker:ro
|
||||
- /dev/disk/:/dev/disk:ro
|
||||
privileged: true
|
||||
devices:
|
||||
- /dev/kmsg
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.cadvisor.rule=Host(`cadvisor.example.com`)"
|
||||
- "traefik.http.routers.cadvisor.entrypoints=websecure"
|
||||
- "traefik.http.routers.cadvisor.tls.certresolver=letsencrypt"
|
||||
```
|
||||
|
||||
### Option 2 : Binaire natif (bare-metal)
|
||||
|
||||
```bash
|
||||
# Télécharger depuis la page Releases
|
||||
wget https://github.com/google/cadvisor/releases/download/v0.49.1/cadvisor-v0.49.1-linux-amd64
|
||||
chmod +x cadvisor-v0.49.1-linux-amd64
|
||||
sudo ./cadvisor-v0.49.1-linux-amd64
|
||||
```
|
||||
|
||||
### Option 3 : Kubernetes (intégré)
|
||||
|
||||
```bash
|
||||
# Déjà inclus dans kubelet ! Voir l'endpoint :
|
||||
# https://<node-ip>:10250/metrics/cadvisor
|
||||
# Ou via le service cAdvisor standard
|
||||
kubectl apply -f https://raw.githubusercontent.com/google/cadvisor/master/deploy/kubernetes/base/daemonset.yaml
|
||||
```
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Accéder à l'UI** : `http://IP:8080`
|
||||
2. **Voir les containers détectés** : l'UI liste automatiquement tous les containers en cours
|
||||
3. **Cliquer sur un container** : voir CPU, RAM, network, FS en temps réel
|
||||
4. **Brancher Prometheus** : scraper l'endpoint `http://cadvisor:8080/metrics`
|
||||
5. **Exemple prometheus.yml** :
|
||||
```yaml
|
||||
scrape_configs:
|
||||
- job_name: cadvisor
|
||||
static_configs:
|
||||
- targets: ['cadvisor:8080']
|
||||
```
|
||||
6. **Importer les dashboards Grafana** : il existe des dashboards Grafana pré-faits (ID 893, 179, etc.)
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
|
||||
- **node_exporter** (Prometheus) — Métriques **hôte** (pas containers)
|
||||
- [[app-netdata]] — Métriques système + containers, plus complet
|
||||
- [[app-glances]] — CLI + web, orienté single-host
|
||||
- **Prometheus + kube-state-metrics** — Pour Kubernetes
|
||||
- **OpenTelemetry Collector** — Successeur moderne, vendor-neutral
|
||||
|
||||
### Comparaison cAdvisor vs alternatives
|
||||
|
||||
| Critère | cAdvisor | node_exporter | Netdata |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| Cible | Containers | Hôte (OS) | Hôte + containers |
|
||||
| Métriques/container | ✅ Riche | ❌ | ✅ Basique |
|
||||
| Métriques hôte | ❌ (basique) | ✅ Très riche | ✅ Riche |
|
||||
| RAM | ~100 Mo | ~30 Mo | ~200 Mo |
|
||||
| Prometheus natif | ✅ | ✅ | ✅ |
|
||||
| Setup | 2 min | 2 min | 5 min |
|
||||
|
||||
**Verdict** : cAdvisor est **la brique indispensable** du monitoring containers, mais **ne suffit pas seul**. À combiner avec `node_exporter` (host metrics) et Prometheus + Grafana pour une stack complète.
|
||||
|
||||
### Propriétaires (ce que cAdvisor remplace)
|
||||
|
||||
- **Datadog Container Monitoring** (payant par container)
|
||||
- **New Relic Kubernetes** (payant)
|
||||
- **Sysdig Secure** (payant)
|
||||
- **Dynatrace Container Monitoring** (payant)
|
||||
- **AWS CloudWatch Container Insights** (payant AWS)
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- **Pas d'auth par défaut** : protéger via reverse proxy ([[app-traefik]]) ou réseau interne
|
||||
- **Endpoint `/metrics`** : peut exposer des **noms de containers** et **images** — à protéger
|
||||
- **Privileged + volumes read-only** : cAdvisor a besoin d'accéder à `/sys`, `/var/run/docker.sock` pour fonctionner
|
||||
- **HTTPS** via [[app-traefik]] recommandé
|
||||
- **Métriques à scrubber** : par défaut cAdvisor n'expose pas de PII, mais vérifier les labels custom
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [GitHub google/cadvisor](https://github.com/google/cadvisor)
|
||||
- [Documentation](https://github.com/google/cadvisor/blob/master/docs/storage.md)
|
||||
- [Dashboards Grafana](https://grafana.com/grafana/dashboards/?search=cadvisor)
|
||||
- [Intégration Kubernetes](https://kubernetes.io/docs/concepts/cluster-administration/system-metrics/)
|
||||
|
||||
## Pages Liées
|
||||
|
||||
- [[cat-monitoring]] — Catégorie Monitoring
|
||||
- [[app-prometheus]] — Collecteur de métriques
|
||||
- [[app-netdata]] — Métriques système riche
|
||||
- [[app-glances]] — Monitoring CLI/web
|
||||
- [[app-traefik]] — Reverse proxy HTTPS
|
||||
- [[observabilite]] — Vue d'ensemble observabilité
|
||||
- [[checklist-monitoring-minimal]] — Checklist
|
||||
Reference in New Issue
Block a user