1. Multi-tenancy #
Isoler les équipes.
Activer les tenants #
Avec auth_enabled: true, chaque requête doit porter l'en-tête X-Scope-OrgID. Loki ne vérifie pas l'identité : placez un proxy d'authentification (nginx, Gateway) qui injecte l'en-tête.
# Envoi et lecture pour le tenant "equipe-a"
curl -H "X-Scope-OrgID: equipe-a" -X POST http://loki:3100/loki/api/v1/push ...
logcli query '{app="api"}' --org-id=equipe-a
# Interroger plusieurs tenants à la fois
logcli query '{app="api"}' --org-id="equipe-a|equipe-b" # nécessite multi_tenant_queries_enabled: true# Alloy : tenant dans loki.write
loki.write "default" {
endpoint {
url = "http://loki:3100/loki/api/v1/push"
tenant_id = "equipe-a"
}
}
# Limites spécifiques par tenant (runtime_config)
overrides:
equipe-a:
ingestion_rate_mb: 20
max_streams_per_user: 50000
retention_period: 360h2. Les limites qui protègent le cluster #
Comprendre les erreurs 429.
limits_config #
limits_config:
ingestion_rate_mb: 10
ingestion_burst_size_mb: 20
per_stream_rate_limit: 5MB
per_stream_rate_limit_burst: 15MB
max_streams_per_user: 100000
max_label_names_per_series: 15
max_label_value_length: 2048
reject_old_samples: true
reject_old_samples_max_age: 168h
max_query_length: 721h
max_entries_limit_per_query: 5000
query_timeout: 2m| Erreur côté agent | Cause probable | Action |
|---|---|---|
429 Too Many Requests: Ingestion rate limit exceeded | Débit trop élevé pour le tenant | Augmenter ingestion_rate_mb ou réduire le bruit |
429 ... per stream rate limit exceeded | Un flux trop bavard | Ajouter un label (ex. pod) pour répartir |
400 ... entry too far behind | Logs trop anciens | Ajuster reject_old_samples_max_age ou corriger l'horloge |
max streams limit exceeded | Cardinalité excessive | Revoir les labels |
3. Diagnostiquer la cardinalité #
Trouver les labels qui coûtent cher.
Commandes de diagnostic #
# Nombre de valeurs par label
logcli labels --since=24h
logcli labels pod --since=24h | wc -l
logcli series '{app="api"}' --since=1h --analyze-labels # répartition des labels
logcli stats '{env="prod"}' --since=24h
# Flux actifs côté Loki (Prometheus)
sum(loki_ingester_memory_streams)
topk(10, sum by (tenant) (loki_ingester_memory_streams))
sum by (reason) (rate(loki_discarded_samples_total[5m]))4. Superviser Loki #
Métriques, mixin et runbook.
Que surveiller ? #
# Santé et latence
histogram_quantile(0.99, sum by (le, route) (rate(loki_request_duration_seconds_bucket{route=~"loki_api_v1_push|loki_api_v1_query_range"}[5m])))
# File d'attente d'écriture et flush
loki_ingester_wal_corruptions_total
rate(loki_ingester_chunks_flushed_total[5m])
# Erreurs
sum by (status_code) (rate(loki_request_duration_seconds_count{status_code=~"5.."}[5m]))# Dashboards et alertes officiels (mixin)
git clone https://github.com/grafana/loki && cd loki/production/loki-mixin
jb install && mixtool generate all mixin.libsonnetErreur Courante : Redémarrer massivement les ingesters sans WAL entraîne une perte des logs non encore flushés : activez le WAL et utilisez replication_factor: 3 en production.Mon suivi
Connectez-vous pour suivre votre progression et prendre des notes. Se connecter
Articles recommandés
Comprendre la notion de score
Le concept de score va permettre à Elasticsearch de classer vos documents par pertinence lors d u...
Comprendre Elastic Common Schema(ECS)
Comme toujours dans nos missions de conseil, nous recommandons aux entreprises d'uniformiser, de ...
Grail : Dynatrace Data Lakehouse
Désormais vous disposez dans Dynatrace (SaaS) d'un Data Lakehouse nommé Grail dont vous pouvez co...
C'est quoi l'observabilité
La capacité à connaître l'état interne d'un système à partir des données que cette dernière émet...
Les types de transactions dans les base de données
Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...
Différences entre Technologies et Services dans Dynatrace
Dans Dynatrace, les concepts de 'Technologie' et de 'Services' aident à organiser et surveiller l...
Dynatrace : Différences entre SQL Modifications, SQL Queries or Procedures, et SQL Transactions
Cet article détaille les différences entre trois concepts essentiels dans l'exécution des instruc...
Types de consommation de licence
Comprendre l'évolution de la facturation dans Dynatrace : la différence entre l'ancien modèle de ...
Les Types de Services Dynatrace : Comprendre et Optimiser Votre Surveillance Applicative
Découvrez les différents types de services que Dynatrace peut surveiller, leur rôle, et comment l...