Publié le : 28/10/2024 à 09:00 Vues : 518

Un guide de référence complet sur tous les composants disponibles dans Grafana Alloy, organisé par catégorie (Loki, Prometheus, OpenTelemetry, etc.) pour vous aider à construire vos pipelines d'observabilité.

1. Introduction aux Composants Alloy

Les composants sont les briques de base de tout pipeline Grafana Alloy. Chaque bloc de configuration dans un fichier `.river` définit un composant. Ces composants sont interconnectés pour former un graphe de traitement de données (DAG), où la sortie (export) d'un composant sert d'entrée (argument) à un autre.

2. Composants `loki`

Composants dédiés à la collecte, au traitement et à l'envoi de logs vers Grafana Loki.

loki.source.file

Lit les nouvelles lignes (tail) de fichiers locaux. C'est l'équivalent de Promtail.

loki.source.journal

Lit les logs directement depuis le journal systemd (journald) sur les systèmes Linux.

loki.source.docker

Lit les logs directement depuis le daemon Docker.

loki.source.kubernetes

Lit les logs des pods d'un cluster Kubernetes.

loki.source.syslog

Agit comme un serveur Syslog pour recevoir des logs envoyés sur le réseau.

loki.source.windowsevent

Collecte les événements du journal d'événements Windows.

loki.source.kafka

Consomme des messages depuis un ou plusieurs topics Kafka.

loki.source.gcplog

Récupère les logs depuis Google Cloud Logging.

loki.process

Applique une série d'étapes de traitement (stages) pour parser, transformer ou filtrer les logs (ex: parser du JSON, extraire des labels avec une regex).

loki.relabel

Modifie les labels d'un flux de logs avant de l'envoyer à Loki.

loki.write

Envoie les logs traités vers une instance Grafana Loki.

loki.export

Exporte les logs vers un autre composant qui accepte des logs au format Loki (utile pour le chaînage).

3. Composants `prometheus`

Composants pour le scraping, le traitement et l'envoi de métriques au format Prometheus.

prometheus.scrape

Scrape (collecte) les métriques d'un ou plusieurs endpoints HTTP au format Prometheus.

prometheus.relabel

Ré-étiquette (relabel) les métriques avant leur ingestion.

prometheus.remote_write

Envoie les métriques collectées vers un backend compatible Prometheus Remote Write (comme Mimir, Thanos ou VictoriaMetrics).

prometheus.receive_http

Agit comme un endpoint qui accepte les requêtes `remote_write` d'autres agents Prometheus.

prometheus.rule

Évalue des règles d'enregistrement (recording rules) ou d'alerting Prometheus.

prometheus.alertmanager

Gère le cycle de vie des alertes (groupage, inhibition, routage) générées par `prometheus.rule`.

prometheus.exporter.unix

Collecte les métriques d'un système Linux ou Unix (équivalent de `node_exporter`).

prometheus.exporter.windows

Collecte les métriques d'un système Windows (équivalent de `windows_exporter`).

prometheus.exporter.blackbox

Sonde des endpoints (HTTP, TCP, ICMP) pour des tests de disponibilité.

prometheus.exporter.consul

Expose les métriques de santé d'un cluster Consul.

prometheus.exporter.postgres

Collecte les métriques d'une base de données PostgreSQL.

prometheus.exporter.mysql

Collecte les métriques d'une base de données MySQL ou MariaDB.

prometheus.exporter.self

Expose les métriques de santé et de performance internes de Grafana Alloy lui-même.

4. Composants `otelcol` (OpenTelemetry)

Composants issus de l'OpenTelemetry Collector, permettant une interopérabilité totale avec l'écosystème OTLP.

otelcol.receiver.otlp

Accepte des métriques, logs et traces via le protocole natif OpenTelemetry (gRPC ou HTTP).

otelcol.receiver.jaeger

Accepte des traces au format Jaeger.

otelcol.receiver.zipkin

Accepte des traces au format Zipkin.

otelcol.receiver.kafka

Consomme des données de télémétrie depuis un topic Kafka.

otelcol.receiver.filelog

Lit des logs depuis des fichiers locaux (similaire à `loki.source.file` mais au format OTLP).

otelcol.receiver.prometheus

Accepte des requêtes `remote_write` au format Prometheus.

otelcol.processor.attributes

Ajoute, modifie ou supprime des attributs sur les données de télémétrie.

otelcol.processor.batch

Regroupe les données en lots (batches) avant de les envoyer, pour optimiser le débit réseau.

otelcol.processor.memory_limiter

Empêche Alloy de consommer trop de mémoire en cas de surcharge.

otelcol.processor.tail_sampling

Échantillonne les traces en se basant sur des politiques (ex: ne garder que les traces en erreur).

otelcol.exporter.otlp

Envoie des données de télémétrie à un backend compatible OTLP over gRPC (Port par défaut : 4317).

otelcol.exporter.otlphttp

Envoie des données de télémétrie à un backend compatible OTLP over HTTP (Port par défaut : 4318).

otelcol.exporter.loki

Convertit et envoie des logs OTLP vers Grafana Loki.

otelcol.exporter.prometheus

Expose des métriques OTLP sur un endpoint scrapable par Prometheus.

otelcol.auth.basic

Gère l'authentification `Basic Auth` (utilisateur/mot de passe).

otelcol.auth.bearer

Gère l'authentification par jeton (Bearer Token).

otelcol.auth.oauth2

Gère l'authentification via le protocole OAuth2.

5. Composants `discovery`

Composants pour la découverte dynamique de cibles à superviser dans des environnements changeants.

discovery.kubernetes

Découvre automatiquement les pods, services, endpoints et ingresses dans un cluster Kubernetes.

discovery.docker

Découvre les conteneurs Docker qui tournent sur la machine locale.

discovery.ec2

Découvre les instances EC2 dans un compte AWS.

discovery.gce

Découvre les instances de VM dans Google Cloud Engine.

discovery.azure

Découvre les machines virtuelles dans Microsoft Azure.

discovery.consul

Découvre les services enregistrés dans un cluster HashiCorp Consul.

discovery.dns

Découvre des cibles via des enregistrements DNS (A, AAAA, SRV).

discovery.file

Lit une liste de cibles depuis un fichier JSON ou YAML.

discovery.http

Découvre des cibles en interrogeant un endpoint HTTP.

discovery.process

Découvre des processus en cours d'exécution sur la machine locale.

discovery.relabel

Applique des règles de ré-étiquetage sur les cibles découvertes.

6. Composants `pyroscope`

Composants pour la collecte et l'envoi de profils de performance en continu vers Grafana Pyroscope.

pyroscope.scrape

Collecte des profils de performance depuis des endpoints compatibles pprof (le format standard de Go).

pyroscope.write

Envoie les profils collectés vers une instance Grafana Pyroscope.

7. Composants `beyla` et `faro`

Composants pour l'auto-instrumentation et la collecte de télémétrie front-end.

beyla.ebpf

Utilise eBPF pour auto-instrumenter des applications (Go, C++, Rust...) sans modifier leur code, afin de générer des traces et des métriques (RED : Rate, Errors, Duration).

faro.receiver

Agit comme un point de collecte pour les signaux envoyés par le SDK Grafana Faro (Real User Monitoring pour le front-end).

8. Composants Utilitaires

Composants génériques pour la manipulation de fichiers, de chaînes de caractères et la communication HTTP.

local.file_match

Découvre des fichiers sur le système de fichiers local en se basant sur un pattern. Utile pour alimenter `loki.source.file`.

local.file

Lit le contenu d'un fichier sur le disque et l'expose comme une chaîne de caractères.

remote.http

Récupère le contenu d'une ressource distante via HTTP.

http.client

Définit un client HTTP réutilisable avec des configurations spécifiques (TLS, authentification).

river.relabel

Un composant générique pour appliquer des règles de ré-étiquetage à n'importe quel ensemble de labels.

external.git

Clone un dépôt Git pour lire des fichiers de configuration distants.

Lien copié dans le presse-papiers !