# ============================================================================= # SOURCES: Woher kommen die Daten? # ============================================================================= sources: docker_logs: type: docker_logs # ============================================================================= # TRANSFORMS: Verarbeitung der Daten # ============================================================================= transforms: parse_logs: type: remap inputs: [docker_logs] source: | # Zeilenumbrüche in der Nachricht entfernen, um Loki-Parsing zu erleichtern .message = replace(.message, "\n", " ") # Das Feld 'service' setzen. # Falls dein Grafana Dashboard nach 'service_name' sucht, ändere dies hier zu .service_name .service = "my-cluster" # Optional: Zusätzliche Metadaten bereinigen (falls gewünscht) # .container_name = .container_name || "unknown" # ============================================================================= # SINKS: Wohin sollen die Daten? # ============================================================================= sinks: # Debug-Ausgabe in der Konsole (hilfreich beim Testen) stdout_debug: type: console inputs: [parse_logs] encoding: codec: json loki_sink: type: loki inputs: [parse_logs] endpoint: "http://docker1.lan:3100" encoding: codec: json labels: # HIER LAG DER FEHLER: Die Felder müssen explizit als Labels definiert werden! host: "{{ host }}" service: "{{ service }}" # Damit wird "my-cluster" zum Loki-Index container_name: "{{ container_name }}" # Sehr wichtig für Docker-Logs, um Dienste zu trennen