Aller au contenu

Grafana Loki

Le serveur de logs lui-même : s’il est prêt, quelles lignes il refuse et pourquoi, si ses chunks atteignent le stockage, et si son journal d’écriture anticipée a encore du disque.

Du serveur DumbMonit (ou de son agent relais) vers l’équipement :

PortProtocoleUsage
3100TCPAPI HTTP de Loki (par défaut)

Loki publie /ready et /metrics sur son port HTTP ; DumbMonit ne lit que ces deux-là. Il ne lance jamais de requête LogQL et ne lit jamais une ligne de log.

La panne à surveiller est discrète. Quand Loki refuse une ligne (plus ancienne que reject_old_samples_max_age, au-delà du débit d’ingestion ou de la limite de flux du tenant, plus longue que max_line_size), l’émetteur reçoit un 4xx, et Promtail, Alloy ou Fluent Bit abandonnent généralement le lot. Grafana ne montre rien d’autre qu’un trou, découvert le jour où quelqu’un cherche le log d’un incident. La seconde est les chunks qui ne peuvent pas être écrits vers le stockage : Loki les garde en mémoire, et les perd au prochain redémarrage.

Toutes les métriques sont préfixées dumbmonit_loki_. Les totaux sont des compteurs : graphiques et règles les transforment en débits.

MétriqueQuoiLabels
ready1 quand /ready répond ready, 0 pendant le démarrage de Loki ou quand un composant ne peut pas écrire ou lire
version_infovaleur 1version
received_lines_total, received_bytes_totalce que le distributeur a reçu, tous tenants
discarded_lines_totallignes refusées, toujours présent, même à zéro
discarded_lines_reason_totalla même chose par raison : greater_than_max_sample_age, rate_limited, stream_limit, line_too_long, per_stream_rate_limit…reason
flush_failures_total, flush_queue_lengthchunks qui n’ont pas atteint le stockage, chunks en attente de l’atteindre
memory_streamsflux gardés en mémoire par l’ingester
wal_disk_full_failures_total, wal_disk_used_percentécritures du journal d’écriture anticipée perdues pour un disque plein, et à quel point ce disque est plein
requests_total, request_errors_totalrequêtes HTTP et gRPC, et celles répondues par un 5xx ou une erreur gRPC. Un 4xx est la faute du client et n’est pas compté comme une erreur.
ring_unhealthy_membersmembres des anneaux de hachage marqués défaillants
panics_total, log_errors_totalpanics récupérées, messages d’erreur journalisés
retention_last_run_timestamp_secondsdernière exécution réussie de la rétention par le compactor, quand la rétention est activée
memory_resident_bytes

Loki divisé en composants (simple scalable, microservices) expose ces familles là où elles appartiennent : lignes refusées sur le distributeur, flush et WAL sur l’ingester. Ajoutez les composants que vous voulez surveiller ; une famille qu’un composant n’a pas ne produit simplement aucune série.

Les règles intégrées qui s’appliquent : Loki non prêt, Loki refuse des lignes de log, Loki ne peut pas écrire vers le stockage, disque du journal d’écriture anticipée de Loki plein, erreurs de requête Loki, plus Surveillance inaccessible.

Le panneau au-dessus des graphiques lit ce que la sonde a stocké ; ouvrir la page n’interroge jamais Loki. Il dit ce qui ne va pas en une phrase (état de préparation, lignes refusées dans les dernières 24 heures, chunks qui n’ont pas pu être écrits, disque WAL plein, membres de l’anneau défaillants, erreurs serveur), puis les lignes et le volume reçus par seconde, les flux en mémoire et le disque WAL, puis les lignes refusées dans les dernières 24 heures par raison.

  1. Rien à installer : vérifiez depuis l’hôte DumbMonit que Loki répond sur son port HTTP (3100 par défaut).

    curl http://loki.lan:3100/ready
  2. Loki n’a pas de connexion propre : seulement si un reverse proxy devant lui en demande une, choisissez Nom d’utilisateur / mot de passe (ou Jeton bearer) ci-dessous.

  3. Dans DumbMonit, saisissez l’adresse de Loki, par exemple “loki.lan” ou “https://logs.lan/loki” derrière un reverse proxy.

  4. Avec Loki découpé en composants (simple scalable ou microservices), ajoutez au moins le chemin d’écriture.

Documentation du fournisseur : Loki meta-monitoring.

Aucun tenant n’est nécessaire : /ready et /metrics ne sont pas par tenant. Le chemin d’écriture est l’endroit où les lignes refusées et les échecs de flush sont comptés. DumbMonit ne lit que /ready et /metrics : il n’exécute jamais de requête LogQL et ne lit jamais une ligne de log.

IdentifiantChamps
Aucune authentificationLe défaut : Loki lui-même n’a pas de connexion.
Nom d’utilisateur / mot de passeL’authentification basique du reverse proxy devant Loki.
Jeton bearerUn jeton que votre reverse proxy attend dans Authorization: Bearer.

Adresse : un nom d’hôte ou une IP (loki.lan), host:port, ou une URL complète avec un préfixe de chemin (https://logs.lan/loki). Options : protocole (HTTP par défaut), port (3100), vérification du certificat et délai de requête (10 s).