RousselTMLEARNING

Observabilité

Beats : aller plus loin (sécurité, performances, Elastic Agent et migration vers Alloy)

Industrialiser Filebeat, Metricbeat et les autres Beats : sorties sécurisées, processors, modules, tuning, monitoring, Elastic Agent et Fleet, et migration vers Grafana Alloy ou OpenTelemetry.

1. Sécuriser et fiabiliser les Beats #

Sorties et processors.

Sortie TLS et file d'attente #

# filebeat.yml
filebeat.inputs:
  - type: filestream
    id: app-logs
    paths: [/var/log/app/*.log]
    parsers: [{ ndjson: { target: "", add_error_key: true } }]

processors:
  - add_host_metadata: ~
  - add_docker_metadata: ~
  - drop_event: { when: { equals: { log.level: debug } } }
  - drop_fields: { fields: [agent.ephemeral_id, ecs.version] }
  - script:
      lang: javascript
      source: |
        function process(event) { var m = event.Get("message"); if (m && m.indexOf("password") >= 0) event.Cancel(); }

output.elasticsearch:
  hosts: ["https://es01:9200"]
  api_key: "${ES_API_KEY}"
  ssl.certificate_authorities: ["/etc/filebeat/ca.crt"]
  bulk_max_size: 2048
  worker: 2

queue.disk: { max_size: 2GB }             # file persistante : pas de perte si Elasticsearch est indisponible
logging.metrics.enabled: true
filebeat test config -e
filebeat test output
filebeat modules list | head
filebeat modules enable nginx system && filebeat setup --index-management
sudo systemctl restart filebeat && journalctl -u filebeat -n 50 --no-pager
Erreur Courante : Ne stockez jamais de mots de passe en clair : utilisez le keystore (filebeat keystore create && filebeat keystore add ES_API_KEY) puis ${ES_API_KEY}.

2. Performances et supervision #

Réglages et métriques.

Tuning #

ParamètreEffetConseil
bulk_max_sizeTaille des lots envoyés1 000 – 4 000 selon la taille des événements
workerConnexions parallèles par hôteAugmenter si Elasticsearch absorbe
queue.mem.eventsTampon mémoireAjuster selon le débit
close_inactiveFermeture des fichiers inactifsÉvite de garder des milliers de fichiers ouverts
harvester_limitNombre de lecteurs simultanésLimiter sur les gros répertoires
# Métriques internes
curl -s localhost:5066/stats | jq '.libbeat.output.events'
filebeat -e -d "publish"                 # debug d'envoi
# Monitoring avec Metricbeat : metricbeat modules enable beat-xpack

3. Elastic Agent et Fleet #

L'agent unifié.

Principe #

Chemins d'évolution depuis les Beats
Choisissez selon votre backend et votre stratégie multi-signal.

Elastic Agent regroupe les Beats en un seul binaire (logs, métriques, sécurité) géré à distance par Fleet : politiques centralisées, mises à jour en un clic, intégrations préconfigurées dans Kibana.

# Enrôler un agent Fleet
curl -L -O https://artifacts.elastic.co/downloads/beats/elastic-agent/elastic-agent-8.15.0-linux-x86_64.tar.gz
tar xzf elastic-agent-*.tar.gz && cd elastic-agent-*
sudo ./elastic-agent install --url=https://fleet.exemple.fr:8220 --enrollment-token=<TOKEN>
sudo elastic-agent status
sudo elastic-agent inspect

4. Migrer vers Alloy ou OpenTelemetry #

Standardiser la collecte.

Équivalences et conversion #

BeatÉquivalent AlloyÉquivalent OTel Collector
Filebeatloki.source.file, loki.source.journalfilelogreceiver, journaldreceiver
Metricbeat (system)prometheus.exporter.unixhostmetricsreceiver
Packetbeat / Heartbeatprometheus.exporter.blackboxhttpcheckreceiver
Processorsloki.process, otelcol.processor.*transform, filter, attributes
// Équivalent Alloy d'un input Filebeat vers Elasticsearch/OTLP
local.file_match "app" { path_targets = [{"__path__" = "/var/log/app/*.log"}] }
loki.source.file "app" { targets = local.file_match.app.targets  forward_to = [loki.write.default.receiver] }
Bonne Pratique : Migrez progressivement : faites tourner l'ancien et le nouvel agent en parallèle sur quelques hôtes, comparez les volumes (count_over_time) puis généralisez.

Pour aller plus loin