Filebeat Cheat Sheet
Installation
| Plattform | Befehl |
|---|
| Ubuntu/Debian | `wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch \ |
| RHEL/CentOS | sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
sudo yum install filebeat |
| macOS | brew tap elastic/tap
brew install elastic/tap/filebeat-full |
| Windows | Download from https://artifacts.elastic.co/downloads/beats/filebeat/ Extract and run: .\install-service-filebeat.ps1 |
| Docker | docker 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
| Befehl | Beschreibung |
|---|
sudo systemctl start filebeat | Starten Sie den Filebeat-Dienst |
sudo systemctl stop filebeat | Stoppe Filebeat-Dienst |
sudo systemctl restart filebeat | Filebeat-Dienst neu starten |
sudo systemctl status filebeat | Filebeat-Dienststatus prüfen |
sudo systemctl enable filebeat | Filebeat so konfigurieren, dass es beim Systemstart automatisch startet |
sudo filebeat -e | Filebeat im Vordergrund mit Konsolenausgabe ausführen |
sudo filebeat -e -c /path/to/filebeat.yml | Mit spezifischer Konfigurationsdatei ausführen |
sudo filebeat test config | Konfigurationsdatei-Syntax validieren |
sudo filebeat test output | Konnektivität zum konfigurierten Ausgabeziel testen |
sudo journalctl -u filebeat -f | Filebeat-Servicelogs in Echtzeit anzeigen |
sudo filebeat modules list | Alle verfügbaren Module auflisten |
sudo filebeat modules enable apache | Aktivieren eines bestimmten Moduls (Apache-Beispiel) |
sudo filebeat modules disable apache | Deaktiviere ein bestimmtes Modul |
sudo filebeat setup | Lade Index-Vorlage, Dashboards und Pipelines |
sudo filebeat version | Zeige Filebeat-Versionsinformationen |
Modulverwaltung
| Befehl | Beschreibung |
|---|
sudo filebeat modules list | Zeige alle verfügbaren Module und deren Status |
sudo filebeat modules enable nginx mysql | Mehrere Module gleichzeitig aktivieren |
sudo filebeat modules disable system | Modul deaktivieren |
| `sudo filebeat modules list \ | grep Enabled -A 10` |
sudo filebeat export config --modules apache | Exportieren Sie die Modulkonfiguration spezifisch |
ls /etc/filebeat/modules.d/ | List-Modulkonfigurationsdateien |
sudo vi /etc/filebeat/modules.d/nginx.yml | Modul-Konfigurationsdatei bearbeiten |
Setup und Initialisierung
| Befehl | Beschreibung |
|---|
sudo filebeat setup --index-management | Nur Index-Vorlage in Elasticsearch einrichten |
sudo filebeat setup --dashboards | Nur Kibana-Dashboards einrichten |
sudo filebeat setup --pipelines | Nur 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=pass | Setup mit Authentifizierungsdaten |
sudo filebeat export template | Index-Vorlage nach stdout exportieren |
sudo filebeat export ilm-policy | Export ILM (Index Lifecycle Management) Policy |
Erweiterte Nutzung
| Befehl | Beschreibung |
|---|
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=false | Strikte Berechtigungsüberprüfung deaktivieren |
sudo filebeat -e -E http.enabled=true -E http.host=localhost -E http.port=5066 | HTTP-Monitoring-Endpunkt aktivieren |
curl http://localhost:5066/stats | Query-Monitoring-Endpunkt für Statistiken |
curl http://localhost:5066/state | Detaillierte Statusinformationen abrufen |
sudo filebeat -e -E output.console.enabled=true -E output.elasticsearch.enabled=false | Ereignisse in die Konsole ausgeben statt in Elasticsearch |
sudo filebeat -e -E filebeat.config.inputs.workers=4 | Mit einer bestimmten Anzahl von Workern ausführen |
sudo filebeat -e -E output.elasticsearch.bulk_max_size=100 | Größe der Bulk-Indexierung anpassen |
sudo filebeat -e -E queue.mem.events=8192 | Setze Grenzwert für Warteschlangen-Speicherereignisse |
sudo filebeat -e -E output.elasticsearch.compression_level=3 | Kompression für Elasticsearch-Ausgabe aktivieren |
sudo filebeat test config -e -d "processors" | Prozessoren-Konfiguration mit Debug-Ausgabe testen |
sudo filebeat migrate-registry | Registry von älterer Filebeat-Version migrieren |
sudo filebeat export config | Vollständige Konfiguration nach stdout exportieren |
curl http://localhost:5066/autodiscover | Autodiscover-Status prüfen |
Keystore-Verwaltung
| Befehl | Beschreibung |
|---|
sudo filebeat keystore create | Erstellen Sie einen neuen Keystore für Geheimnisse |
sudo filebeat keystore add ES_PASSWORD | Einen Schlüssel zum Keystore hinzufügen (fordert Wert an) |
sudo filebeat keystore list | Alle Schlüssel im Keystore auflisten |
sudo filebeat keystore remove ES_PASSWORD | Einen 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
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 |