Zum Inhalt springen

Filebeat Cheat Sheet

Filebeat Cheat Sheet

Installation

PlattformBefehl
Ubuntu/Debian`wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \
RHEL/CentOSsudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat
macOSbrew tap elastic/tap
brew install elastic/tap/filebeat-full
WindowsDownload from https://artifacts.elastic.co/downloads/beats/filebeat/
Extract and run: .\install-service-filebeat.ps1
Dockerdocker pull docker.elastic.co/beats/filebeat:8.11.0
Kubernetes (Helm)helm repo add elastic https://helm.elastic.co
helm install filebeat elastic/filebeat

Grundlegende Befehle

BefehlBeschreibung
sudo systemctl start filebeatStarten Sie den Filebeat-Dienst
sudo systemctl stop filebeatStoppe Filebeat-Dienst
sudo systemctl restart filebeatFilebeat-Dienst neu starten
sudo systemctl status filebeatFilebeat-Dienststatus prüfen
sudo systemctl enable filebeatFilebeat so konfigurieren, dass es beim Systemstart automatisch startet
sudo filebeat -eFilebeat im Vordergrund mit Konsolenausgabe ausführen
sudo filebeat -e -c /path/to/filebeat.ymlMit spezifischer Konfigurationsdatei ausführen
sudo filebeat test configKonfigurationsdatei-Syntax validieren
sudo filebeat test outputKonnektivität zum konfigurierten Ausgabeziel testen
sudo journalctl -u filebeat -fFilebeat-Servicelogs in Echtzeit anzeigen
sudo filebeat modules listAlle verfügbaren Module auflisten
sudo filebeat modules enable apacheAktivieren eines bestimmten Moduls (Apache-Beispiel)
sudo filebeat modules disable apacheDeaktiviere ein bestimmtes Modul
sudo filebeat setupLade Index-Vorlage, Dashboards und Pipelines
sudo filebeat versionZeige Filebeat-Versionsinformationen

Modulverwaltung

BefehlBeschreibung
sudo filebeat modules listZeige alle verfügbaren Module und deren Status
sudo filebeat modules enable nginx mysqlMehrere Module gleichzeitig aktivieren
sudo filebeat modules disable systemModul deaktivieren
`sudo filebeat modules list \grep Enabled -A 10`
sudo filebeat export config --modules apacheExportieren Sie die Modulkonfiguration spezifisch
ls /etc/filebeat/modules.d/List-Modulkonfigurationsdateien
sudo vi /etc/filebeat/modules.d/nginx.ymlModul-Konfigurationsdatei bearbeiten

Setup und Initialisierung

BefehlBeschreibung
sudo filebeat setup --index-managementNur Index-Vorlage in Elasticsearch einrichten
sudo filebeat setup --dashboardsNur Kibana-Dashboards einrichten
sudo filebeat setup --pipelinesNur Ingest-Pipelines einrichten
sudo filebeat setup -E output.elasticsearch.hosts=['es:9200']Einrichtung mit spezifischem Elasticsearch-Host
sudo filebeat setup -E output.elasticsearch.username=elastic -E output.elasticsearch.password=passSetup mit Authentifizierungsdaten
sudo filebeat export templateIndex-Vorlage nach stdout exportieren
sudo filebeat export ilm-policyExport ILM (Index Lifecycle Management) Policy

Erweiterte Nutzung

BefehlBeschreibung
sudo filebeat -e -d "*"Mit Debug-Logging für alle Komponenten ausführen
sudo filebeat -e -d "publish,harvester"Nur bestimmte Komponenten debuggen
sudo filebeat -e --strict.perms=falseStrikte Berechtigungsüberprüfung deaktivieren
sudo filebeat -e -E http.enabled=true -E http.host=localhost -E http.port=5066HTTP-Monitoring-Endpunkt aktivieren
curl http://localhost:5066/statsQuery-Monitoring-Endpunkt für Statistiken
curl http://localhost:5066/stateDetaillierte Statusinformationen abrufen
sudo filebeat -e -E output.console.enabled=true -E output.elasticsearch.enabled=falseEreignisse in die Konsole ausgeben statt in Elasticsearch
sudo filebeat -e -E filebeat.config.inputs.workers=4Mit einer bestimmten Anzahl von Workern ausführen
sudo filebeat -e -E output.elasticsearch.bulk_max_size=100Größe der Bulk-Indexierung anpassen
sudo filebeat -e -E queue.mem.events=8192Setze Grenzwert für Warteschlangen-Speicherereignisse
sudo filebeat -e -E output.elasticsearch.compression_level=3Kompression für Elasticsearch-Ausgabe aktivieren
sudo filebeat test config -e -d "processors"Prozessoren-Konfiguration mit Debug-Ausgabe testen
sudo filebeat migrate-registryRegistry von älterer Filebeat-Version migrieren
sudo filebeat export configVollständige Konfiguration nach stdout exportieren
curl http://localhost:5066/autodiscoverAutodiscover-Status prüfen

Keystore-Verwaltung

BefehlBeschreibung
sudo filebeat keystore createErstellen Sie einen neuen Keystore für Geheimnisse
sudo filebeat keystore add ES_PASSWORDEinen Schlüssel zum Keystore hinzufügen (fordert Wert an)
sudo filebeat keystore listAlle Schlüssel im Keystore auflisten
sudo filebeat keystore remove ES_PASSWORDEinen Schlüssel aus dem Keystore entfernen

Konfiguration

Hauptkonfigurationsdatei

Speicherort: /etc/filebeat/filebeat.yml(Linux) oder C:\Program Files\filebeat\filebeat.yml(Windows)

Grundlegende Eingabekonfiguration

# Filestream input (recommended for log files)
filebeat.inputs:
- type: filestream
  id: my-app-logs
  enabled: true
  paths:
    - /var/log/myapp/*.log
  fields:
    app: myapp
    environment: production
  fields_under_root: true

Log-Eingabekonfiguration

# Log input (legacy, but still supported)
filebeat.inputs:
- type: log
  enabled: true
  paths:
    - /var/log/nginx/access.log
    - /var/log/nginx/error.log
  exclude_lines: ['^DEBUG']
  include_lines: ['^ERR', '^WARN']
  multiline.pattern: '^[[:space:]]'
  multiline.negate: false
  multiline.match: after

Container-Eingabekonfiguration

# Docker container logs
filebeat.inputs:
- type: container
  enabled: true
  paths:
    - /var/lib/docker/containers/*/*.log
  processors:
    - add_docker_metadata: ~

Elasticsearch-Ausgabe

output.elasticsearch:
  hosts: ["elasticsearch:9200"]
  username: "elastic"
  password: "${ES_PASSWORD}"  # From keystore
  index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
  pipeline: "filebeat-%{[agent.version]}-apache-access-default"

Logstash-Ausgabe

output.logstash:
  hosts: ["logstash:5044"]
  loadbalance: true
  ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
  ssl.certificate: "/etc/pki/client/cert.pem"
  ssl.key: "/etc/pki/client/cert.key"

Kafka-Ausgabe

output.kafka:
  hosts: ["kafka1:9092", "kafka2:9092"]
  topic: "filebeat"
  partition.round_robin:
    reachable_only: false
  compression: gzip
  max_message_bytes: 1000000

Prozessorkonfiguration

processors:
  - add_host_metadata:
      when.not.contains.tags: forwarded
  - add_cloud_metadata: ~
  - add_docker_metadata: ~
  - add_kubernetes_metadata: ~
  - drop_fields:
      fields: ["agent.ephemeral_id", "agent.id"]
  - decode_json_fields:
      fields: ["message"]
      target: "json"
      overwrite_keys: true

Automatische Erkennung für Docker

filebeat.autodiscover:
  providers:
    - type: docker
      hints.enabled: true
      templates:
        - condition:
            contains:
              docker.container.image: nginx
          config:
            - type: container
              paths:
                - /var/lib/docker/containers/${data.docker.container.id}/*.log
              processors:
                - add_docker_metadata: ~

Automatische Erkennung für Kubernetes

filebeat.autodiscover:
  providers:
    - type: kubernetes
      node: ${NODE_NAME}
      hints.enabled: true
      hints.default_config:
        type: container
        paths:
          - /var/log/containers/*${data.kubernetes.container.id}.log

Beispiel für Modulkonfiguration

# /etc/filebeat/modules.d/nginx.yml
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]

Häufige Anwendungsfälle

Anwendungsfall 1: Sammeln von Anwendungsprotokollen

Note: Some sections (like 3, 9, 10, 11-20) were left blank as no specific text was provided to translate.

Would you like me to fill in those sections with appropriate German translations or placeholders?```bash

Enable filestream input for application logs

sudo vi /etc/filebeat/filebeat.yml


```yaml
filebeat.inputs:
- type: filestream
  id: myapp-logs
  enabled: true
  paths:
    - /var/log/myapp/*.log
  fields:
    app: myapp
    env: production
# Test configuration and restart
sudo filebeat test config
sudo systemctl restart filebeat
```### Use Case 2: Einrichten der Nginx Log-Sammlung
```bash
# Enable Nginx module
sudo filebeat modules enable nginx

# Configure module
sudo vi /etc/filebeat/modules.d/nginx.yml
- module: nginx
  access:
    enabled: true
    var.paths: ["/var/log/nginx/access.log*"]
  error:
    enabled: true
    var.paths: ["/var/log/nginx/error.log*"]
# Setup dashboards and restart
sudo filebeat setup --dashboards
sudo systemctl restart filebeat
```### Use Case 3: Docker Container Log-Sammlung
```bash
# Run Filebeat in Docker to collect container logs
docker run -d \
  --name=filebeat \
  --user=root \
  --volume="$(pwd)/filebeat.docker.yml:/usr/share/filebeat/filebeat.yml:ro" \
  --volume="/var/lib/docker/containers:/var/lib/docker/containers:ro" \
  --volume="/var/run/docker.sock:/var/run/docker.sock:ro" \
  docker.elastic.co/beats/filebeat:8.11.0
```### Use Case 4: Kubernetes DaemonSet Deployment
```bash
# Deploy Filebeat as DaemonSet using Helm
helm repo add elastic https://helm.elastic.co
helm repo update

# Create values file
cat > filebeat-values.yaml <<EOF
daemonset:
  enabled: true
  filebeatConfig:
    filebeat.yml: |
      filebeat.autodiscover:
        providers:
          - type: kubernetes
            node: \${NODE_NAME}
            hints.enabled: true
      output.elasticsearch:
        hosts: ["elasticsearch:9200"]
EOF

# Install Filebeat
helm install filebeat elastic/filebeat \
  --namespace logging --create-namespace \
  -f filebeat-values.yaml
```### Use Case 5: Mehrzeilige Log-Analyse (Stack Traces)
```bash
# Configure multiline pattern for Java stack traces
sudo vi /etc/filebeat/filebeat.yml
filebeat.inputs:
- type: filestream
  id: java-app
  enabled: true
  paths:
    - /var/log/java-app/*.log
  parsers:
    - multiline:
        type: pattern
        pattern: '^[[:space:]]+(at|\.{3})\b|^Caused by:'
        negate: false
        match: after
# Test and restart
sudo filebeat test config
sudo systemctl restart filebeat
```### Use Case 6: Logs an mehrere Ausgaben senden
```bash
# Configure Logstash output for processing and Elasticsearch for backup
sudo vi /etc/filebeat/filebeat.yml
output.logstash:
  hosts: ["logstash:5044"]
  loadbalance: true

# Note: Only one output can be active at a time in Filebeat
# For multiple outputs, use Logstash as intermediary
```### Use Case 7: Filtern und Anreichern von Logs
```bash
# Add processors to enrich and filter logs
sudo vi /etc/filebeat/filebeat.yml
processors:
  - drop_event:
      when:
        regexp:
          message: "^DEBUG"
  - add_fields:
      target: ''
      fields:
        datacenter: us-east-1
        team: platform
  - decode_json_fields:
      fields: ["message"]
      target: "json"
      overwrite_keys: true
  - drop_fields:
      fields: ["agent.ephemeral_id", "ecs.version"]
```## Best Practices
`filestream`- **Filestream-Eingabe verwenden**: Bevorzugen `log`gegenüber dem Legacy-Eingabetyp für bessere Leistung und Zuverlässigkeit bei Dateirotation
- **Module aktivieren**: Verwenden Sie vorgefertigte Module (nginx, apache, mysql, etc.) anstelle von benutzerdefinierten Konfigurationen, wenn möglich, für schnellere Einrichtung und bessere Analyse
- **Backpressure-Behandlung implementieren**: Konfigurieren Sie `queue.mem.events`und `output.elasticsearch.bulk_max_size`, um Lastspitzen ohne Datenverlust zu bewältigen
- **Anmeldeinformationen sichern**: Speichern Sie sensible Informationen (Passwörter, API-Schlüssel) im Filebeat-Keystore anstatt in Klartext in Konfigurationsdateien
- **Ressourcennutzung überwachen**: HTTP-Endpunkt (`http.enabled: true`) aktivieren, um Filebeat-Leistung und Harvester-Status zu überwachen
- **Index-Lebenszyklusmanagement (ILM) verwenden**: ILM-Richtlinien konfigurieren, um Indexaufbewahrung automatisch zu verwalten und Speicherkosten zu reduzieren
- **Logs taggen und anreichern**: Benutzerdefinierte Felder und Metadaten mithilfe von Prozessoren hinzufügen, um Logs besser durchsuchbar und kontextuell zu machen
- **Vor Produktiveinsatz testen**: Verwenden Sie immer `filebeat test config`und `filebeat test output`, bevor Konfigurationsänderungen bereitgestellt werden
- **Mehrzeilige Logs behandeln**: Mehrzeilige Muster für Stack Traces und mehrzeilige Anwendungslogs konfigurieren, um Log-Fragmentierung zu verhindern
- **Autodiscover implementieren**: Autodiscover für dynamische Umgebungen (Docker, Kubernetes) verwenden, um neue Container automatisch zu erkennen und zu konfigurieren
- **Regelmäßige Updates**: Filebeat auf dem neuesten Stand halten, um Kompatibilität und Sicherheits-Patches mit Ihrer Elasticsearch-Version sicherzustellen
- **Geeignete Berechtigungen setzen**: Sicherstellen, dass Filebeat Lesezugriff auf Logdateien hat, aber dem Prinzip der geringsten Rechte folgt

Shall I continue with the remaining sections?
| Problem | Lösung |
|-------|----------|
| **Filebeat not starting** | Check configuration syntax: `sudo filebeat test config`<br>Check service status: `sudo systemctl status filebeat`<br>Review logs: `sudo journalctl -u filebeat -n 50` |
| **No data in Elasticsearch** | Test output connectivity: `sudo filebeat test output`<br>Check Elasticsearch is running: `curl http://elasticsearch:9200`<br>Verify index exists: `curl http://elasticsearch:9200/_cat/indices?v` |
| **Permission denied errors** | Ensure Filebeat has read access: `sudo chmod 644 /var/log/myapp/*.log`<br>Check file ownership: `ls -la /var/log/myapp/`<br>Run with proper user: `sudo chown root:root /etc/filebeat/filebeat.yml` |
| **Duplicate events** | Check registry file: `/var/lib/filebeat/registry/filebeat/data.json`<br>Ensure unique input IDs in configuration<br>Avoid multiple Filebeat instances reading same files |
| **High memory usage** | Reduce queue size: `queue.mem.events: 2048`<br>Decrease harvester limit: `filebeat.config.inputs.max_harvesters: 100`<br>Enable compression: `output.elasticsearch.compression_level: 3` |
| **Logs not being tailed** | Check file paths are correct: `ls -la /var/log/myapp/*.log`<br>Verify input is enabled in configuration<br>Check close_inactive setting isn't too aggressive |
| **Connection timeout to Elasticsearch** | Increase timeout: `output.elasticsearch.timeout: 90`<br>Check network connectivity: `telnet elasticsearch 9200`<br>Verify credentials: `curl -u elastic:password http://elasticsearch:9200` |
| **Module not working** | Verify module is enabled: `sudo filebeat modules list`<br>Check log paths in module config: `cat /etc/filebeat/modules.d/nginx.yml`<br>Ensure ingest pipelines loaded: `sudo filebeat setup --pipelines` |
| **Multiline logs not parsing** | Test pattern with sample logs<br>Check `multiline.negate` and `multiline.match` settings<br>Review harvester debug logs: `sudo filebeat -e -d "harvester"` |
| **SSL/TLS connection errors** | Verify certificate paths and permissions<br>Check certificate validity: `openssl x509 -in cert.pem -text -noout`<br>Disable SSL verification for testing: `output.elasticsearch.ssl.verification_mode: none` |
| **Registry file corruption** | Stop Filebeat: `sudo systemctl stop filebeat`<br>Backup registry: `sudo cp -r /var/lib/filebeat/registry /tmp/registry.bak`<br>Remove registry: `sudo rm -rf /var/lib/filebeat/registry`<br>Restart (will reprocess logs): `sudo systemctl start filebeat` |
| **Autodiscover not detecting containers** | Check Docker socket permissions: `ls -la /var/run/docker.sock`<br>Verify autodiscover config syntax<br>Enable debug: `sudo filebeat -e -d "autodiscover"` |
## Quick Reference: Common File Locations

| Artikel | Speicherort (Linux) | Speicherort (Windows) |
|------|------------------|-------------------|
| **Main config** | `/etc/filebeat/filebeat.yml` | `C:\Program Files\filebeat\filebeat.yml` |
| **Module configs** | `/etc/filebeat/modules.d/` | `C:\Program Files\filebeat\modules.d\` |
| **Registry** | `/var/lib/filebeat/registry/` | `C:\ProgramData\filebeat\registry\` |
| **Logs** | `/var/log/filebeat/` | `C:\ProgramData\filebeat\logs\` |
| **Binary** | `/usr/share/filebeat/bin/filebeat` | `C:\Program Files\filebeat\filebeat.exe` |
| **Data directory** | `/var/lib/filebeat/` | `C:\ProgramData\filebeat\` |
## Performance Tuning Parameters

| Parameter | Standard | Beschreibung | Empfohlener Bereich |
|-----------|---------|-------------|-------------------|
| `queue.mem.events` | 4096 | Anzahl der Ereignisse, die die Warteschlange aufnehmen kann | 2048-8192 |
| `queue.mem.flush.min_events` | 2048 | Mindestanzahl von Ereignissen vor dem Flush | 1024-4096 |
| `output.elasticsearch.bulk_max_size` | 50 | Max Events pro Bulk-Anfrage | 50-1600 |
| `output.elasticsearch.worker` | 1 | Anzahl der Ausgabemitarbeiter | 1-4 |
| `filebeat.config.inputs.max_harvesters` | 0 (unbegrenzt) | Max gleichzeitige Datei-Leser | 100-500 |
| `close_inactive` | 5m | Datei nach Inaktivität schließen | 1m-10m || `scan_frequency` | 10s | How often to check for new files | 5s-30s |