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: truefilebeat 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-pagerErreur 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ètre | Effet | Conseil |
|---|---|---|
bulk_max_size | Taille des lots envoyés | 1 000 – 4 000 selon la taille des événements |
worker | Connexions parallèles par hôte | Augmenter si Elasticsearch absorbe |
queue.mem.events | Tampon mémoire | Ajuster selon le débit |
close_inactive | Fermeture des fichiers inactifs | Évite de garder des milliers de fichiers ouverts |
harvester_limit | Nombre de lecteurs simultanés | Limiter 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-xpack3. Elastic Agent et Fleet #
L'agent unifié.
Principe #
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 inspect4. Migrer vers Alloy ou OpenTelemetry #
Standardiser la collecte.
Équivalences et conversion #
| Beat | Équivalent Alloy | Équivalent OTel Collector |
|---|---|---|
| Filebeat | loki.source.file, loki.source.journal | filelogreceiver, journaldreceiver |
| Metricbeat (system) | prometheus.exporter.unix | hostmetricsreceiver |
| Packetbeat / Heartbeat | prometheus.exporter.blackbox | httpcheckreceiver |
| Processors | loki.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.