Initial vault setup
This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
---
|
||||
title: InfluxDB
|
||||
created: 2026-06-07
|
||||
updated: 2026-06-07
|
||||
type: app
|
||||
tags: [catalogue, database, tsdb, time-series, metrics, monitoring, iot, go, mit]
|
||||
confidence: high
|
||||
contested: false
|
||||
sources: [https://selfh.st/apps/?tag=Database, https://github.com/influxdata/influxdb]
|
||||
---
|
||||
|
||||
# 🗄️ InfluxDB
|
||||
|
||||
> **La base de données time-series open source (MIT)** : optimisée pour stocker des millions de points de données horodatés (métriques, IoT, événements) avec un moteur de requêtes type Flux et InfluxQL.
|
||||
|
||||
## 📋 Informations Générales
|
||||
|
||||
| Champ | Valeur |
|
||||
| :--- | :--- |
|
||||
| **Site web** | [influxdata.com](https://www.influxdata.com/) |
|
||||
| **GitHub** | [influxdata/influxdb](https://github.com/influxdata/influxdb) |
|
||||
| **License** | **MIT** (version OSS v2.x, depuis 2024) |
|
||||
| **Langage** | Go |
|
||||
| **Étoiles GitHub** | 31k ⭐ |
|
||||
| **Dernière MAJ** | 2026-06-05 |
|
||||
| **Catégorie** | [[cat-database\|Database]] |
|
||||
|
||||
## 📝 Description
|
||||
|
||||
**InfluxDB** est une **base de données time-series (TSDB)** conçue dès le départ pour gérer des **volumes massifs de points horodatés** : métriques système, données IoT, télémétrie, événements, monitoring d'infrastructure. Sa structure de stockage TSM (Time-Structured Merge Tree) est optimisée pour les **insertions très rapides** et les **agrégations sur des fenêtres temporelles**.
|
||||
|
||||
L'écosystème InfluxDB inclut :
|
||||
- **InfluxDB v2** (OSS, MIT) — le moteur principal
|
||||
- **Telegraf** — agent de collecte de métriques (300+ plugins)
|
||||
- **InfluxDB UI** — interface web intégrée
|
||||
- **InfluxQL / Flux** — deux langages de requêtes
|
||||
- **InfluxDB Cloud** — offre SaaS propriétaire
|
||||
|
||||
### 📜 À propos de la licence (confusion historique)
|
||||
|
||||
La licence d'InfluxDB a changé plusieurs fois, ce qui crée de la confusion :
|
||||
- **v1.x** : MIT
|
||||
- **v2.0 → v2.6** : passage à **SSPL** (Server Side Public License) — licence non approuvée OSI, restrictive
|
||||
- **v2.7+** (octobre 2024) : **retour à MIT** pour la version OSS, sous la pression de la communauté (suite à la crise des licences de Redis, Elastic, HashiCorp)
|
||||
|
||||
**Aujourd'hui, InfluxDB v2 OSS est MIT**. C'est à nouveau un choix sûr pour un homelab ou un projet commercial open. La version **InfluxDB v3** (Cloud et Core) est sous licence propriétaire / non-OSS, mais **InfluxDB v2 OSS reste MIT et activement maintenue**.
|
||||
|
||||
À comparer à **Prometheus** (l'autre roi du time-series, plus orienté monitoring pur, langage PromQL) et à **TimescaleDB** (extension Postgres pour le time-series, plus classique).
|
||||
|
||||
- ✅ **Moteur TSM** optimisé pour ingestions massives et compressions
|
||||
- ✅ **Schéma flexible** : pas de schéma rigide, on tag les mesures
|
||||
- ✅ **Langage Flux** (scripting, time-series natif) + **InfluxQL** (SQL-like)
|
||||
- ✅ **Retention policies** : effacement automatique des données anciennes
|
||||
- ✅ **Continuous Queries** : agrégations pré-calculées
|
||||
- ✅ **Telegraf** : agent de collecte avec 300+ plugins (systeme, docker, mqtt, snmp…)
|
||||
- ✅ **Tasks et alerts** intégrées
|
||||
- ✅ **HTTP API** + **client libraries** (Go, Python, JS, Java…)
|
||||
- ✅ **UI web** intégrée
|
||||
|
||||
**Public cible** : homelabs qui veulent monitorer leur infra ou stocker des données IoT, développeurs d'observabilité, data engineers.
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
### Option 1 : Docker Compose (recommandé)
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
version: '3.8'
|
||||
services:
|
||||
influxdb:
|
||||
image: influxdb:2.7
|
||||
container_name: influxdb
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
DOCKER_INFLUXDB_INIT_MODE: setup
|
||||
DOCKER_INFLUXDB_INIT_USERNAME: admin
|
||||
DOCKER_INFLUXDB_INIT_PASSWORD: "ChangeMe123!"
|
||||
DOCKER_INFLUXDB_INIT_ORG: mon-org
|
||||
DOCKER_INFLUXDB_INIT_BUCKET: homelab
|
||||
DOCKER_INFLUXDB_INIT_RETENTION: 30d
|
||||
DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: "CHANGEZ_CE_TOKEN_LONG_ET_ALEATOIRE"
|
||||
ports:
|
||||
- "8086:8086" # API + UI
|
||||
volumes:
|
||||
- influxdb-data:/var/lib/influxdb2
|
||||
- influxdb-config:/etc/influxdb2
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.influxdb.rule=Host(`influxdb.example.com`)"
|
||||
- "traefik.http.routers.influxdb.entrypoints=websecure"
|
||||
- "traefik.http.routers.influxdb.tls.certresolver=letsencrypt"
|
||||
- "traefik.http.services.influxdb.loadbalancer.server.port=8086"
|
||||
|
||||
volumes:
|
||||
influxdb-data:
|
||||
influxdb-config:
|
||||
```
|
||||
|
||||
### Option 2 : Binaire natif
|
||||
|
||||
```bash
|
||||
wget https://dl.influxdata.com/influxdb/releases/influxdb2-2.7.x_linux_amd64.tar.gz
|
||||
tar xzf influxdb2-*.tar.gz
|
||||
cd influxdb2-*
|
||||
./influxd
|
||||
```
|
||||
|
||||
## ⚙️ Configuration Initiale
|
||||
|
||||
1. **Premier accès** : `http://IP:8086` (puis `https://influxdb.example.com` via Traefik) → Setup automatique demande org, bucket, admin, token
|
||||
2. **Créer un bucket** : Load Data → Buckets → + Create Bucket (rétention par défaut, par ex. 30d)
|
||||
3. **Récupérer un token** : Load Data → API Tokens → générer un token (lecture ou read+write)
|
||||
4. **Brancher Telegraf** : configurer l'agent Telegraf pour push les métriques système (ex: `outputs.influxdb_v2.urls = ["http://influxdb:8086"]`)
|
||||
5. **Explorer les données** : Data Explorer → sélection bucket → measurements → fields → visualisation
|
||||
6. **Créer une alerte** : Alerts → + Create Check → seuil + endpoint (Slack, HTTP, PagerDuty)
|
||||
|
||||
## 🔄 Alternatives
|
||||
|
||||
### Open Source
|
||||
- **Prometheus** — Le standard CNCF, pull-based, PromQL, idéal pour Kubernetes
|
||||
- **VictoriaMetrics** — Compatible Prometheus, plus performant, MIT
|
||||
- **TimescaleDB** — Extension Postgres pour le time-series, requêtes SQL classiques
|
||||
- **QuestDB** — TSQL-like, très rapide, Apache-2.0
|
||||
- **ClickHouse** — Colonnaire OLAP, excellent pour analytics de logs/métriques
|
||||
- **TDengine** — TSDB IoT, double licence (AGPL + propriétaire)
|
||||
|
||||
### Propriétaires / Cloud
|
||||
- **InfluxDB Cloud** — v3 de l'éditeur, serverless ou dédiée
|
||||
- **Grafana Cloud** — Métriques + logs + traces
|
||||
- **Datadog** — Observabilité tout-en-un
|
||||
- **New Relic** — APM + métriques
|
||||
- **Chronosphere** — M3-based, orienté enterprise
|
||||
|
||||
### Comparaison
|
||||
|
||||
| Critère | InfluxDB v2 OSS | Prometheus | TimescaleDB |
|
||||
| :--- | :--- | :--- | :--- |
|
||||
| Licence | MIT | Apache-2.0 | Apache-2.0 (community) / TSL (cloud) |
|
||||
| Ingestion | Push (Telegraf, HTTP) | Pull (scraping) | Push / SQL insert |
|
||||
| Langage de requête | Flux + InfluxQL | PromQL | SQL standard |
|
||||
| Rétention | Native (1j à infini) | TSDB local / remote_write | Dépend du partitionnement |
|
||||
| Scalabilité | Cluster (Enterprise) | Fédération | Sharding natif |
|
||||
| Idéal pour | IoT, métriques, events | Monitoring infra / K8s | Analytics SQL sur séries temporelles |
|
||||
| UI | Intégrée | Minimal (Grafana) | pgAdmin ou Grafana |
|
||||
|
||||
**Verdict** : InfluxDB v2 (MIT) est **le bon choix** pour un homelab qui veut un TSDB autonome avec UI et un écosystème riche (Telegraf). Pour du monitoring pur, **Prometheus + Grafana** reste le duo roi.
|
||||
|
||||
## 🔐 Sécurité
|
||||
|
||||
- **Authentification** par token (API tokens scoped)
|
||||
- **HTTPS obligatoire** via [[app-traefik]] — l'UI et l'API exposent tous les buckets
|
||||
- **Pas de chiffrement at-rest** natif (donc chiffrer le volume avec LUKS/ZFS si la machine est partagée)
|
||||
- **Backups** : [[app-backup]] (restic) sur les volumes `influxdb-data` et `influxdb-config`, ou utiliser `influx backup` qui dump les buckets en ligne
|
||||
- **Tokens** : secrets, à stocker hors de l'image, à surveiller (rotation régulière)
|
||||
|
||||
## 📚 Ressources
|
||||
|
||||
- [Site officiel](https://www.influxdata.com/)
|
||||
- [GitHub influxdata/influxdb](https://github.com/influxdata/influxdb)
|
||||
- [Documentation v2](https://docs.influxdata.com/influxdb/v2/)
|
||||
- [Telegraf plugins](https://docs.influxdata.com/telegraf/v1/plugins/)
|
||||
|
||||
## Pages Liées
|
||||
- [[cat-database]] — Catégorie Database
|
||||
- [[app-traefik]] — Reverse-proxy HTTPS
|
||||
- [[app-backup]] (restic) — Sauvegardes
|
||||
- [[app-grafana]] (à créer) — Visualisation idéale d'InfluxDB
|
||||
- [[recettes-docker-compose]] — Recettes
|
||||
- [[securisation-home-lab]] — Bonnes pratiques
|
||||
- [[glossaire-homelab]] — Glossaire
|
||||
Reference in New Issue
Block a user