RousselTMLEARNING

Article · Alloy : de la découverte à l'expertise

Référence des composants

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.

Exemple de configuration :

loki.source.file "default" {
  targets    = local.file_match.logs.targets
  forward_to = [loki.write.local.receiver]
}

loki.source.journal #

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

Exemple de configuration :

loki.source.journal "default" {
  forward_to = [loki.write.local.receiver]
}

loki.source.docker #

Lit les logs directement depuis le daemon Docker.

Exemple de configuration :

loki.source.docker "default" {
  host       = "unix:///var/run/docker.sock"
  targets    = discovery.docker.local.targets
  forward_to = [loki.write.local.receiver]
}

loki.source.kubernetes #

Lit les logs des pods d'un cluster Kubernetes.

Exemple de configuration :

loki.source.kubernetes "default" {
  targets    = discovery.kubernetes.pods.targets
  forward_to = [loki.write.local.receiver]
}

loki.source.syslog #

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

Exemple de configuration :

loki.source.syslog "default" {
  listener {
    address  = "0.0.0.0:514"
    protocol = "tcp"
  }
  forward_to = [loki.write.local.receiver]
}

loki.source.windowsevent #

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

Exemple de configuration :

loki.source.windowsevent "default" {
  eventlog_name = "Application"
  forward_to    = [loki.write.local.receiver]
}

loki.source.kafka #

Consomme des messages depuis un ou plusieurs topics Kafka.

Exemple de configuration :

loki.source.kafka "default" {
  brokers    = ["kafka:9092"]
  topics     = ["logs"]
  forward_to = [loki.write.local.receiver]
}

loki.source.gcplog #

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

Exemple de configuration :

loki.source.gcplog "default" {
  project_id   = "my-project"
  subscription = "my-sub"
  forward_to   = [loki.write.local.receiver]
}

loki.source.podlogs #

Collecte les logs des pods Kubernetes en utilisant l'API native kubelet podLogs (alternative moderne à `loki.source.kubernetes`).

Exemple de configuration :

loki.source.podlogs "default" {
  targets    = discovery.kubernetes.pods.targets
  forward_to = [loki.write.local.receiver]
}

loki.source.api #

Reçoit des logs directement via une API HTTP basique.

Exemple de configuration :

loki.source.api "default" {
  http {
    listen_address = "0.0.0.0:9999"
  }
  forward_to = [loki.write.local.receiver]
}

loki.source.cloudflare #

Agit comme un serveur HTTP pour recevoir les logs envoyés par Cloudflare Logpush.

Exemple de configuration :

loki.source.cloudflare "default" {
  listen_address = "0.0.0.0:8080"
  forward_to     = [loki.write.local.receiver]
}

loki.source.awsfirehose #

Reçoit les logs poussés par AWS Kinesis Data Firehose.

Exemple de configuration :

loki.source.awsfirehose "default" {
  http {
    listen_address = "0.0.0.0:8080"
  }
  forward_to = [loki.write.local.receiver]
}

loki.source.azure_event_hubs #

Consomme des logs depuis un Azure Event Hub.

Exemple de configuration :

loki.source.azure_event_hubs "default" {
  fully_qualified_namespace = "my-namespace.servicebus.windows.net"
  event_hub                 = "my-hub"
  forward_to                = [loki.write.local.receiver]
}

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).

Exemple de configuration :

loki.process "default" {
  forward_to = [loki.write.local.receiver]
  stage.json {
    expressions = { "level" = "level" }
  }
}

loki.relabel #

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

Exemple de configuration :

loki.relabel "default" {
  forward_to = [loki.write.local.receiver]
  rule {
    action        = "keep"
    source_labels = ["app"]
    regex         = "myapp"
  }
}

loki.write #

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

Exemple de configuration :

loki.write "local" {
  endpoint {
    url = "http://loki:3100/loki/api/v1/push"
  }
}

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.

Exemple de configuration :

// Scrape une cible statique toutes les 15 secondes
prometheus.scrape "default" {
  targets = [{"__address__" = "localhost:9090"}]
  forward_to = [prometheus.remote_write.mimir.receiver]
  scrape_interval = "15s"
}

prometheus.relabel #

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

Exemple de configuration :

prometheus.relabel "default" {
  forward_to = [prometheus.remote_write.local.receiver]
  rule {
    action        = "drop"
    source_labels = ["__name__"]
    regex         = "up"
  }
}

prometheus.remote_write #

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

Exemple de configuration :

prometheus.remote_write "local" {
  endpoint {
    url = "http://mimir:9009/api/v1/push"
  }
}

prometheus.receive_http #

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

Exemple de configuration :

prometheus.receive_http "default" {
  forward_to = [prometheus.remote_write.local.receiver]
}

prometheus.rule #

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

Exemple de configuration :

prometheus.rule "default" {
  rule_path  = "/etc/alloy/rules"
  forward_to = [prometheus.alertmanager.local.receiver]
}

prometheus.alertmanager #

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

Exemple de configuration :

prometheus.alertmanager "local" {
  endpoints = ["http://alertmanager:9093"]
}

prometheus.exporter.unix #

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

Exemple de configuration avec le module textfile :

// Active l'exportateur unix avec des collecteurs spécifiques
prometheus.exporter.unix "default" {
  enable_collectors = ["cpu", "meminfo", "textfile"]
  // Configure le dossier pour le module textfile
  textfile {
    directory = "/var/lib/node_exporter/textfile_collector"
  }
}

prometheus.exporter.windows #

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

Exemple de configuration :

prometheus.exporter.windows "default" {
  enable_collectors = ["cpu", "cs", "logical_disk"]
}

prometheus.exporter.blackbox #

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

Exemple de configuration :

prometheus.exporter.blackbox "default" {
  config_file = "/etc/blackbox.yml"
  targets = [{
    name    = "example.com",
    address = "https://example.com"
  }]
}

prometheus.exporter.consul #

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

Exemple de configuration :

prometheus.exporter.consul "default" {
  server = "http://localhost:8500"
}

prometheus.exporter.postgres #

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

Exemple de configuration :

prometheus.exporter.postgres "default" {
  data_source_names = ["postgresql://user:pass@localhost:5432/db?sslmode=disable"]
}

prometheus.exporter.mysql #

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

Exemple de configuration :

prometheus.exporter.mysql "default" {
  data_source_name = "user:pass@(localhost:3306)/"
}

prometheus.exporter.self #

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

Exemple de configuration :

// Active l'exportateur interne d'Alloy
prometheus.exporter.self "default" {}

// Scrape les métriques générées par l'exportateur interne
prometheus.scrape "scrape_alloy" {
  targets    = prometheus.exporter.self.default.targets
  forward_to = [prometheus.remote_write.mimir.receiver]
}

prometheus.exporter.redis #

Collecte les métriques d'une instance Redis.

Exemple de configuration :

prometheus.exporter.redis "default" {
  redis_addr = "redis:6379"
}

prometheus.exporter.elasticsearch #

Collecte les métriques d'un cluster Elasticsearch.

Exemple de configuration :

prometheus.exporter.elasticsearch "default" {
  address = "http://elasticsearch:9200"
}

prometheus.exporter.mongodb #

Collecte les métriques d'un serveur MongoDB.

Exemple de configuration :

prometheus.exporter.mongodb "default" {
  mongodb_uri = "mongodb://user:pass@mongodb:27017"
}

prometheus.exporter.kafka #

Collecte les métriques d'un cluster Apache Kafka.

Exemple de configuration :

prometheus.exporter.kafka "default" {
  kafka_uris = ["kafka:9092"]
}

prometheus.exporter.memcached #

Collecte les métriques d'un serveur Memcached.

Exemple de configuration :

prometheus.exporter.memcached "default" {
  address = "memcached:11211"
}

prometheus.exporter.snmp #

Collecte des métriques depuis des équipements réseau en utilisant le protocole SNMP.

Exemple de configuration :

prometheus.exporter.snmp "default" {
  targets = [{
    name    = "router",
    address = "192.168.1.1",
    module  = "if_mib"
  }]
}

prometheus.exporter.cadvisor #

Expose des métriques sur les conteneurs en cours d'exécution (utilisation CPU, mémoire, cgroups).

Exemple de configuration :

prometheus.exporter.cadvisor "default" {
  docker_host = "unix:///var/run/docker.sock"
}

prometheus.exporter.github #

Collecte les métriques de dépôts et d'actions GitHub.

Exemple de configuration :

prometheus.exporter.github "default" {
  api_token = sys.env("GITHUB_TOKEN")
  repositories = ["grafana/alloy"]
}

4. Composants `prometheus.operator` #

Composants permettant d'interagir nativement avec les Custom Resources (CRDs) du Prometheus Operator dans Kubernetes.

prometheus.operator.podmonitors #

Découvre et scrape automatiquement les cibles définies via la Custom Resource (CRD) PodMonitor de Kubernetes.

Exemple de configuration :

prometheus.operator.podmonitors "default" {
  forward_to = [prometheus.remote_write.mimir.receiver]
}

prometheus.operator.servicemonitors #

Découvre et scrape les cibles définies via la Custom Resource ServiceMonitor.

Exemple de configuration :

prometheus.operator.servicemonitors "default" {
  forward_to = [prometheus.remote_write.mimir.receiver]
}

prometheus.operator.probes #

Découvre et exécute les vérifications Blackbox définies via la Custom Resource Probe.

Exemple de configuration :

prometheus.operator.probes "default" {
  forward_to = [prometheus.remote_write.mimir.receiver]
}

5. 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).

Exemple de configuration :

otelcol.receiver.otlp "default" {
  grpc { endpoint = "0.0.0.0:4317" }
  http { endpoint = "0.0.0.0:4318" }
  output {
    metrics = [otelcol.processor.batch.default.input]
  }
}

otelcol.receiver.jaeger #

Accepte des traces au format Jaeger.

Exemple de configuration :

otelcol.receiver.jaeger "default" {
  protocols {
    grpc { endpoint = "0.0.0.0:14250" }
  }
  output {
    traces = [otelcol.processor.batch.default.input]
  }
}

otelcol.receiver.zipkin #

Accepte des traces au format Zipkin.

Exemple de configuration :

otelcol.receiver.zipkin "default" {
  endpoint = "0.0.0.0:9411"
  output {
    traces = [otelcol.processor.batch.default.input]
  }
}

otelcol.receiver.kafka #

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

Exemple de configuration :

otelcol.receiver.kafka "default" {
  brokers          = ["kafka:9092"]
  protocol_version = "2.0.0"
  output {
    logs = [otelcol.processor.batch.default.input]
  }
}

otelcol.receiver.filelog #

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

Exemple de configuration :

otelcol.receiver.filelog "default" {
  include = ["/var/log/*.log"]
  output {
    logs = [otelcol.processor.batch.default.input]
  }
}

otelcol.receiver.prometheus #

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

Exemple de configuration :

otelcol.receiver.prometheus "default" {
  output {
    metrics = [otelcol.processor.batch.default.input]
  }
}

otelcol.processor.attributes #

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

Exemple de configuration :

otelcol.processor.attributes "default" {
  action {
    action = "insert"
    key    = "env"
    value  = "prod"
  }
  output {
    traces = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.processor.batch #

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

Exemple de configuration :

otelcol.processor.batch "default" {
  timeout         = "1s"
  send_batch_size = 1000
  output {
    metrics = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.processor.memory_limiter #

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

Exemple de configuration :

otelcol.processor.memory_limiter "default" {
  check_interval = "1s"
  limit_mib      = 1000
  output {
    metrics = [otelcol.processor.batch.default.input]
  }
}

otelcol.processor.tail_sampling #

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

Exemple de configuration :

otelcol.processor.tail_sampling "default" {
  policy {
    name = "errors"
    type = "status_code"
    status_code { status_codes = ["ERROR"] }
  }
  output {
    traces = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.processor.transform #

Applique des transformations puissantes aux données de télémétrie en utilisant le langage OTTL (OpenTelemetry Transform Language).

Exemple de configuration :

otelcol.processor.transform "default" {
  error_mode = "ignore"
  trace_statements = [
    "set(resource.attributes[\"env\"], \"prod\")"
  ]
  output {
    traces = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.processor.resourcedetection #

Détecte automatiquement les informations sur l'environnement d'exécution (Cloud provider, OS, Kubernetes) et les ajoute comme attributs.

Exemple de configuration :

otelcol.processor.resourcedetection "default" {
  detectors = ["env", "system"]
  output {
    traces = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.processor.probabilistic_sampler #

Échantillonne les traces avec une probabilité fixe, utile pour réduire le volume de données à grande échelle.

Exemple de configuration :

otelcol.processor.probabilistic_sampler "default" {
  sampling_percentage = 10
  output {
    traces = [otelcol.exporter.otlp.default.input]
  }
}

otelcol.exporter.otlp #

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

Exemple de configuration :

otelcol.exporter.otlp "default" {
  client {
    endpoint = "tempo:4317"
  }
}

otelcol.exporter.otlphttp #

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

Exemple de configuration :

otelcol.exporter.otlphttp "default" {
  client {
    endpoint = "http://mimir:8080/otlp"
  }
}

otelcol.exporter.loki #

Convertit et envoie des logs OTLP vers Grafana Loki.

Exemple de configuration :

otelcol.exporter.loki "default" {
  forward_to = [loki.write.local.receiver]
}

otelcol.exporter.prometheus #

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

Exemple de configuration :

otelcol.exporter.prometheus "default" {
  forward_to = [prometheus.remote_write.local.receiver]
}

otelcol.auth.basic #

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

Exemple de configuration :

otelcol.auth.basic "default" {
  username = "admin"
  password = "password"
}

otelcol.auth.bearer #

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

Exemple de configuration :

otelcol.auth.bearer "default" {
  token = "my-secret-token"
}

otelcol.auth.oauth2 #

Gère l'authentification via le protocole OAuth2.

Exemple de configuration :

otelcol.auth.oauth2 "default" {
  client_id     = "my-client"
  client_secret = "secret"
  token_url     = "https://example.com/oauth2/token"
}

6. 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.

Exemple de configuration :

discovery.kubernetes "pods" {
  role = "pod"
}

discovery.docker #

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

Exemple de configuration :

discovery.docker "local" {
  host = "unix:///var/run/docker.sock"
}

discovery.ec2 #

Découvre les instances EC2 dans un compte AWS.

Exemple de configuration :

discovery.ec2 "default" {
  region = "eu-west-1"
}

discovery.gce #

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

Exemple de configuration :

discovery.gce "default" {
  project = "my-gcp-project"
  zone    = "europe-west1-b"
}

discovery.azure #

Découvre les machines virtuelles dans Microsoft Azure.

Exemple de configuration :

discovery.azure "default" {
  subscription_id = "my-sub-id"
}

discovery.consul #

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

Exemple de configuration :

discovery.consul "default" {
  server = "localhost:8500"
}

discovery.dns #

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

Exemple de configuration :

discovery.dns "default" {
  names = ["example.com"]
  type  = "A"
}

discovery.file #

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

Exemple de configuration :

discovery.file "default" {
  files = ["/etc/alloy/targets.json"]
}

discovery.http #

Découvre des cibles en interrogeant un endpoint HTTP.

Exemple de configuration :

discovery.http "default" {
  url = "http://example.com/targets"
}

discovery.process #

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

Exemple de configuration :

discovery.process "default" {
  discover_all = true
}

discovery.relabel #

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

Exemple de configuration :

discovery.relabel "default" {
  targets = discovery.kubernetes.pods.targets
  rule {
    action        = "keep"
    source_labels = ["__meta_kubernetes_pod_label_app"]
    regex         = "myapp"
  }
}

discovery.digitalocean #

Découvre les instances (Droplets) dans DigitalOcean.

Exemple de configuration :

discovery.digitalocean "default" {
  bearer_token = sys.env("DO_TOKEN")
}

discovery.linode #

Découvre les instances dans Linode.

Exemple de configuration :

discovery.linode "default" {
  bearer_token = sys.env("LINODE_TOKEN")
}

discovery.scaleway #

Découvre les ressources dans Scaleway (ex: instances, baremetal).

Exemple de configuration :

discovery.scaleway "default" {
  project_id = "my-project-id"
  access_key = sys.env("SCW_ACCESS_KEY")
  secret_key = sys.env("SCW_SECRET_KEY")
}

discovery.nomad #

Découvre les services et applications fonctionnant dans un cluster HashiCorp Nomad.

Exemple de configuration :

discovery.nomad "default" {
  server = "http://nomad.service.consul:4646"
}

7. 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).

Exemple de configuration :

pyroscope.scrape "default" {
  targets    = [{"__address__" = "localhost:8080"}]
  forward_to = [pyroscope.write.local.receiver]
}

pyroscope.write #

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

Exemple de configuration :

pyroscope.write "local" {
  endpoint {
    url = "http://pyroscope:4040"
  }
}

pyroscope.ebpf #

Collecte des profils de performance (CPU) d'applications Linux en utilisant eBPF, sans nécessiter d'instrumentation dans le code.

Exemple de configuration :

pyroscope.ebpf "default" {
  forward_to = [pyroscope.write.local.receiver]
  targets    = discovery.process.local.targets
}

8. 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).

Exemple de configuration :

beyla.ebpf "default" {
  open_port = 8080
  output {
    traces = [otelcol.exporter.otlp.default.input]
  }
}

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).

Exemple de configuration :

faro.receiver "default" {
  server {
    listen_address = "0.0.0.0:12347"
  }
  output {
    logs = [loki.write.local.receiver]
  }
}

9. 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`.

Exemple de configuration :

local.file_match "logs" {
  path_targets = [{"__path__" = "/var/log/*.log"}]
}

local.file #

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

Exemple de configuration :

local.file "secret" {
  filename  = "/etc/secret.txt"
  is_secret = true
}

remote.http #

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

Exemple de configuration :

remote.http "config" {
  url            = "http://example.com/config.json"
  poll_frequency = "5m"
}

remote.vault #

Récupère et renouvelle dynamiquement des secrets depuis HashiCorp Vault.

Exemple de configuration :

remote.vault "db_credentials" {
  server = "http://vault:8200"
  path   = "secret/data/db"
  auth {
    token = sys.env("VAULT_TOKEN")
  }
}

remote.kubernetes.secret #

Lit et met à jour dynamiquement des secrets depuis l'API Kubernetes.

Exemple de configuration :

remote.kubernetes.secret "api_keys" {
  name      = "my-secret"
  namespace = "default"
}

remote.kubernetes.configmap #

Lit et met à jour dynamiquement le contenu de ConfigMaps Kubernetes.

Exemple de configuration :

remote.kubernetes.configmap "app_config" {
  name      = "my-configmap"
  namespace = "default"
}

remote.s3 #

Télécharge périodiquement le contenu d'un objet (ex: fichier de configuration) depuis un bucket S3.

Exemple de configuration :

remote.s3 "targets" {
  endpoint = "s3.eu-west-1.amazonaws.com"
  bucket   = "my-configs"
  path     = "targets.json"
  key      = sys.env("AWS_ACCESS_KEY")
  secret   = sys.env("AWS_SECRET_KEY")
}

📄 Référence des Composants Grafana Alloy →

Mon suivi

  • ⏱ Durée estimée : ≈ 1 h 03

Connectez-vous pour suivre votre progression et prendre des notes. Se connecter

💬 Discussions récentes de la formation

Poser une question sur cette leçon →Voir toutes les discussions de la formation

Glossaire de la formation

Observabilité

La capacité à connaître l'état interne d'un système à partir des données qu'il émet.Ces données sont classées en 3 piliers : logsmétriquestracesprofil...

Traces distribuées

Technique (issue du pilier des Traces) permettant de suivre le cheminement complet d'une requête à travers de multiples micro-services pour identifier...

Métriques

Mesures numériques collectées à intervalles réguliers (ex: CPU, RAM, temps de réponse) utilisées pour évaluer l'état de santé global d'un système au f...

Profilage en continu (Continuous Profiling)

Analyse constante de l'exécution du code en production pour identifier avec précision quelles lignes de code ou fonctions consomment le plus de ressou...

Access Log

Fichier de journalisation enregistrant les requêtes traitées par un serveur web (Apache, Nginx, Lighttpd, etc.). Il permet de tracer l'activité du ser...

Client IP

L'adresse IP de l'utilisateur effectuant la requête vers le serveur web. Lorsqu'un utilisateur passe par un Load Balancer ou un proxy (ex: Cloudflare)...

Timestamp

La date et l'heure exactes auxquelles la requête a été reçue par le serveur.Configuration : %t dans Apache, $time_local ou $time_iso8601 dans Nginx.

Request

La ligne de requête initiale du client. Elle comprend généralement la méthode HTTP (ex: GET), l'URL demandée et la version du protocole HTTP.Configura...

Status Code

Le code de statut HTTP final renvoyé par le serveur au client (ex : 200 pour un succès, 404 pour ressource non trouvée).Configuration : %>s dans Apach...

Size

Le volume des données renvoyées au client, mesuré en octets (généralement sans les en-têtes HTTP).Configuration : %b ou %O dans Apache, $body_bytes_se...

Referrer

L'URL de la page web depuis laquelle le client a cliqué ou suivi un lien pour accéder à la ressource actuelle.Configuration : %{Referer}i dans Apache,...

User-Agent

Les informations d'identification fournies par le client concernant son navigateur, son système d'exploitation et son appareil. Sa structure standard ...

Response Time

La durée totale prise par le serveur pour traiter la requête et renvoyer la réponse au client.Configuration : %D (microsecondes) ou %T (secondes) dans...

Grafana Alloy

Collecteur de télémétrie open source et flexible, successeur de Grafana Agent. Il est conçu pour collecter, transformer et exporter des logs, métrique...

River

Langage de configuration déclaratif utilisé par Grafana Alloy, inspiré de HCL (Terraform). Il permet de définir des pipelines de télémétrie complexes ...

Grafana Loki

Système de journalisation (logs) multi-tenant, hautement disponible et inspiré de Prometheus. Il est conçu pour être très économe en ressources en n'i...

Articles recommandés

Configuration de Grafana Alloy : syntaxe, ports et premiers composants

Dans le cadre d'une formation Grafana ou formation observabilité, maîtrisez la syntaxe déclarativ...

Alloy et l'écosystème Grafana Labs : quel composant pour quel outil ?

La carte des intégrations d'Alloy avec Faro, Beyla, k6, Loki, Mimir, Tempo, Pyroscope, Database O...

La stack LGTM (Loki, Grafana, Tempo, Mimir) : architecture et mise en place

Comprendre la stack LGTM de Grafana Labs : Loki pour les logs, Grafana pour la visualisation, Tem...

Grafana Alloy : Collecte et Transformation de Télémétrie

Apprenez à utiliser Grafana Alloy pour collecter, transformer et acheminer logs, métriques et tra...

Bonnes Pratiques Grafana Alloy : Optimiser sa Collecte de Télémétrie

Découvrez les règles d'or pour configurer Grafana Alloy de manière robuste : modularité, gestion ...

Faro et Alloy : recevoir le RUM front-end avec faro.receiver

Configurer faro.receiver : CORS, clé d'API, limite de débit, source maps, puis envoyer erreurs, W...

Beyla et Alloy : métriques RED et traces sans code avec beyla.ebpf

Activer l'instrumentation eBPF de Beyla dans Alloy : découverte des services, métriques RED vers ...

Grafana Alloy : Profilage Continu avec Pyroscope

Découvrez comment configurer le profilage continu (Continuous Profiling) dans vos environnements ...

Variables d'environnement de Grafana Alloy : GOMEMLIMIT, sys.env et OTEL_RESOURCE_ATTRIBUTES

Quelles variables Grafana Alloy lit-il vraiment ? GOMEMLIMIT, HTTP_PROXY, sys.env, OTEL_RESOURCE_...

Soutenir

♥ SOUTENIR

Soutenez RousselTM Learning

Les formations, articles, TP et attestations restent gratuits et sans publicité intrusive. Une contribution libre, du montant de votre choix, finance l’hébergement, les environnements de TP et l’écriture de nouveaux contenus.

Contribuer avec PayPal Montant libre · carte bancaire ou compte PayPalEn savoir plus
QR code PayPal
Ou scannez ce QR code avec votre téléphone

Merci, chaque contribution compte !