# Log input (legacy, but still supported)filebeat.inputs:-type:logenabled:truepaths:-/var/log/nginx/access.log-/var/log/nginx/error.logexclude_lines:['^DEBUG']include_lines:['^ERR','^WARN']multiline.pattern:'^[[:space:]]'multiline.negate:falsemultiline.match:after
output.elasticsearch:hosts:["elasticsearch:9200"]username:"elastic"password:"${ES_PASSWORD}"# From keystoreindex:"filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"pipeline:"filebeat-%{[agent.version]}-apache-access-default"
# Test configuration and restartsudofilebeattestconfig
sudosystemctlrestartfilebeat
```### Use Case 2: Einrichten der Nginx Log-Sammlung```bash
# Enable Nginx modulesudofilebeatmodulesenablenginx
# Configure modulesudovi/etc/filebeat/modules.d/nginx.yml
# Test and restartsudofilebeattestconfig
sudosystemctlrestartfilebeat
```### Use Case 6: Logs an mehrere Ausgaben senden```bash
# Configure Logstash output for processing and Elasticsearch for backupsudovi/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 logssudo vi /etc/filebeat/filebeat.yml
yaml
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 loggegenü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.eventsund 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 configund 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 Check service status: sudo systemctl status filebeat Review logs: sudo journalctl -u filebeat -n 50 |
| No data in Elasticsearch | Test output connectivity: sudo filebeat test output Check Elasticsearch is running: curl http://elasticsearch:9200 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 Check file ownership: ls -la /var/log/myapp/ Run with proper user: sudo chown root:root /etc/filebeat/filebeat.yml |
| Duplicate events | Check registry file: /var/lib/filebeat/registry/filebeat/data.json Ensure unique input IDs in configuration Avoid multiple Filebeat instances reading same files |
| High memory usage | Reduce queue size: queue.mem.events: 2048 Decrease harvester limit: filebeat.config.inputs.max_harvesters: 100 Enable compression: output.elasticsearch.compression_level: 3 |
| Logs not being tailed | Check file paths are correct: ls -la /var/log/myapp/*.log Verify input is enabled in configuration Check close_inactive setting isn't too aggressive |
| Connection timeout to Elasticsearch | Increase timeout: output.elasticsearch.timeout: 90 Check network connectivity: telnet elasticsearch 9200 Verify credentials: curl -u elastic:password http://elasticsearch:9200 |
| Module not working | Verify module is enabled: sudo filebeat modules list Check log paths in module config: cat /etc/filebeat/modules.d/nginx.yml Ensure ingest pipelines loaded: sudo filebeat setup --pipelines |
| Multiline logs not parsing | Test pattern with sample logs Check multiline.negate and multiline.match settings Review harvester debug logs: sudo filebeat -e -d "harvester" |
| SSL/TLS connection errors | Verify certificate paths and permissions Check certificate validity: openssl x509 -in cert.pem -text -noout Disable SSL verification for testing: output.elasticsearch.ssl.verification_mode: none |
| Registry file corruption | Stop Filebeat: sudo systemctl stop filebeat Backup registry: sudo cp -r /var/lib/filebeat/registry /tmp/registry.bak Remove registry: sudo rm -rf /var/lib/filebeat/registry Restart (will reprocess logs): sudo systemctl start filebeat |
| Autodiscover not detecting containers | Check Docker socket permissions: ls -la /var/run/docker.sock Verify autodiscover config syntax Enable debug: sudo filebeat -e -d "autodiscover" |