Runbook : LokiIngestionSlow¶
Alerte : LokiIngestionSlow (PrometheusRule, severity warning)
Symptôme :
Le taux d'ingestion des logs est < 80 % du target, ou la file d'attente dépasse 5 000 entries depuis plus de 10 min. Risque : perte de logs (buffer du log shipper saturé).
Severity : 🟡 warning, notif Slack #akko-observability
Alerte historique, opt-in uniquement¶
À lire en premier. Le chemin de logs AKKO par défaut est Fluent Bit -> VictoriaLogs. Il n'y a ni Loki ni Promtail dans une installation standard.
Le nom d'alerte
LokiIngestionSlowest conservé pour compatibilité. Il est conditionné parloki.enableddansprometheusrule-akko.yaml, etloki.enabledvaut false par défaut. L'alerte ne se déclenche que si un client réactive explicitement un backend Loki avecloki.enabled: true. Sur une installation par défaut, cette alerte ne se déclenche jamais.Si vous êtes sur le chemin par défaut, allez directement à Chemin par défaut : Fluent Bit -> VictoriaLogs.
Chemin par défaut : Fluent Bit -> VictoriaLogs¶
Sur une installation standard, des logs lents ou perdus proviennent de l'un de ces trois points : la santé d'ingestion VictoriaLogs, la contre-pression (backpressure) de Fluent Bit, ou le stockage/rétention VictoriaLogs.
1. Santé d'ingestion VictoriaLogs¶
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl port-forward -n akko svc/akko-victorialogs 9428:9428 &
curl -sS http://localhost:9428/metrics | grep -E "vl_rows_ingested_total|vl_http_requests_total"
Métriques clés :
- vl_rows_ingested_total (doit croître)
- vl_http_requests_total{path="/insert/loki/api/v1/push"} (endpoint de push Loki-compat)
- vl_free_disk_space_bytes (doit rester bien au-dessus de zéro)
Vérifiez aussi que le pod VictoriaLogs est sain :
kubectl get pod -n akko -l app.kubernetes.io/name=victoria-logs-single
kubectl logs -n akko -l app.kubernetes.io/name=victoria-logs-single --tail=200 | grep -iE "error|reject|cannot"
2. Contre-pression Fluent Bit (le log shipper)¶
kubectl get ds akko-fluent-bit -n akko
kubectl logs ds/akko-fluent-bit -n akko --tail=200 | grep -iE "error|retry|backpressure|drop|chunk"
Symptômes de contre-pression :
- [warn] [engine] failed to flush chunk (VictoriaLogs n'absorbe pas assez vite)
- [error] [output] ... connection refused (service VictoriaLogs down ou mauvais endpoint)
- compteurs de retry qui augmentent
Vérifiez la config Fluent Bit (endpoint, mem_buf_limit, politique de retry) :
3. Stockage et rétention VictoriaLogs¶
La rétention VictoriaLogs par défaut est de 14 j sur un PVC de 50Gi. Si le PVC est plein, l'ingestion ralentit ou se bloque.
kubectl get pvc -n akko -l app.kubernetes.io/name=victoria-logs-single
kubectl exec -n akko -it <pod-victorialogs> -- df -h /storage
Causes fréquentes + correctif (chemin par défaut)¶
| Cause | Symptôme | Correctif |
|---|---|---|
| PVC VictoriaLogs plein | vl_free_disk_space_bytes proche de 0, ingestion bloquée |
Réduire la rétention (14 j par défaut) ou augmenter storageSize dans les values akko-observability, puis helm upgrade |
| Flush Fluent Bit en échec | failed to flush chunk dans les logs akko-fluent-bit |
Vérifier que le service VictoriaLogs est joignable ; augmenter mem_buf_limit dans akko-fluent-bit-config |
| Service VictoriaLogs down | connection refused côté Fluent Bit |
Redémarrer / vérifier le pod akko-victorialogs, vérifier le service sur le port 9428 |
| Endpoint mal configuré | 404 au push, 0 ligne ingérée | Corriger l'endpoint OUTPUT dans akko-fluent-bit-config (Loki-compat /insert/loki/api/v1/push ou push VictoriaLogs natif) |
| Pic de volume de logs | latence d'ingestion, retries qui montent | Réduire les sources bruyantes au niveau INPUT/FILTER de Fluent Bit |
Réduire le volume de logs (correctif #1 pour les pics)¶
Réduisez les sources bruyantes au niveau de Fluent Bit plutôt que de jeter des
données au stockage. Champs à ne pas promouvoir en champs de flux à forte
cardinality :
- pod_name (change à chaque restart)
- container_id
- trace_id
- request_id
- user_id sans bucket
À préférer, des champs stables à faible cardinality :
- namespace, app, component
- level (info/warn/error, quelques valeurs)
Correctif pérenne (R02)¶
Ajuster la rétention et la taille VictoriaLogs¶
# helm/akko/charts/akko-observability/values.yaml (slot logs)
logs:
backend: victorialogs
victorialogs:
retention: "14d" # défaut ; abaisser pour libérer, ou augmenter storageSize
storageSize: 50Gi
Puis commit + push + helm upgrade. Jamais kubectl edit configmap.
Libérer le stockage VictoriaLogs¶
VictoriaLogs applique la rétention automatiquement. Si le PVC est plein avant
que la rétention n'agisse, abaissez retention ou augmentez storageSize dans
les values ci-dessus, puis helm upgrade. Ne modifiez jamais les données du PVC
à la main.
Prévention¶
- Dashboard Perses « Logs Ingestion » (page Logs du cockpit) avec panels :
- Lignes/s ingérées (
vl_rows_ingested_total) - Retries de flush / chunks perdus côté Fluent Bit
- Espace disque libre VictoriaLogs
- PrometheusRule précoce : warning quand l'espace disque libre passe sous 20 %
- Revue mensuelle des sources de logs bruyantes dans
akko-fluent-bit-config
Lessons learned¶
- L10 : La rétention VictoriaLogs est de 14 j par défaut. VictoriaLogs n'est pas un data warehouse : les logs plus vieux que la fenêtre de rétention doivent aller en cold storage (object storage direct).
Liens utiles¶
- VictoriaLogs LogsQL
- Service de supervision
- Source du slot logs :
helm/akko/charts/akko-observability/values.yaml