server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /mnt/promtail/positions.yaml # Pfad im gemounteten Volume clients: - url: http://loki:3100/loki/api/v1/push # Sendet Logs an den Loki-Service scrape_configs: - job_name: docker_containers docker_sd_configs: - host: unix:///var/run/docker.sock refresh_interval: 5s relabel_configs: # Extrahiere Container-Name (ohne '/') - source_labels: ['__meta_docker_container_name'] regex: '/(.*)' target_label: 'container_name' # Behalte den Log-Stream (stdout/stderr) als Label - source_labels: ['__meta_docker_container_log_stream'] target_label: 'logstream' # Extrahiere Service-Name aus Swarm-Label - source_labels: ['__meta_docker_container_label_com_docker_swarm_service_name'] target_label: 'service_name' # Extrahiere Task-Name aus Swarm-Label - source_labels: ['__meta_docker_container_label_com_docker_swarm_task_name'] target_label: 'task_name' # Füge 'instance'-Label mit dem Hostnamen des Tasks hinzu (Annäherung an Node-Namen) - action: replace source_labels: ['container_name'] # Braucht ein existierendes Label als Quelle target_label: 'instance' replacement: ${HOSTNAME} # Nutzt Swarm HOSTNAME Variable # Verwerfe Logs von Promtail selbst (Regex ggf. an Stacknamen anpassen) - source_labels: ['container_name'] regex: 'monitoring_promtail.*' # Passe 'monitoring' an deinen Stack-Namen an! action: drop