faro.receiver "stage_app_agent_receiver" { server { listen_address = "0.0.0.0" listen_port = 12347 cors_allowed_origins = ["*"] // cors_allowed_origins = ["https://avicenna.genius.ceo"] api_key = "t3stK3y" max_allowed_payload_size = "10MiB" rate_limiting { rate = 100 } } sourcemaps {} output { logs = [loki.process.logs_process_client.receiver] traces = [otelcol.exporter.otlp.tempo.input] } } loki.process "logs_process_client" { forward_to = [loki.write.to_loki.receiver] stage.logfmt { mapping = { "kind" = "", "service_name" = "", "app_name" = "", "namespace" = "" } } stage.labels { values = { "kind" = "kind", "service_name" = "service_name", "app" = "app_name", "namespace" = "namespace" } } } otelcol.receiver.otlp "otel_collector" { grpc { endpoint = "0.0.0.0:4317" } http { endpoint = "0.0.0.0:4318" cors { allowed_origins = ["https://avicenna.genius.ceo/"] } } // Definiert, wohin die empfangenen Daten weitergeleitet werden output { metrics = [otelcol.exporter.prometheus.otel_metrics.input] logs = [otelcol.exporter.loki.otel_logs.input] traces = [otelcol.exporter.otlp.tempo.input] } } loki.write "to_loki" { endpoint { url = "http://loki:3100/loki/api/v1/push" } } prometheus.remote_write "to_prometheus" { endpoint { url = "http://prometheus:9090/api/v1/write" } } // Docker-Container auf dem Host entdecken discovery.docker "logs_integration_docker" { host = "unix:///var/run/docker.sock" refresh_interval = "5s" } discovery.relabel "logs_integration_docker" { targets = [] rule { action = "labelmap" regex = "__meta_docker_container_label_com_docker_swarm_node_id" replacement = "node_id" } rule { action = "labelmap" regex = "__meta_docker_container_label_com_docker_stack_namespace" replacement = "namespace" } rule { action = "labelmap" regex = "__meta_docker_container_label_com_docker_swarm_service_name" replacement = "service_name" } rule { action = "labelmap" regex = "__meta_docker_container_name" replacement = "container_name" } } loki.source.docker "logs_from_containers" { host = "unix:///var/run/docker.sock" targets = discovery.docker.logs_integration_docker.targets // Nutzt die entdeckten Container relabel_rules = discovery.relabel.logs_integration_docker.rules // Leitet die gesammelten Logs an den definierten Loki-Endpunkt weiter forward_to = [loki.write.to_loki.receiver] } otelcol.exporter.otlp "tempo" { // Name kann variieren client { endpoint = "tempo:4317" // Ziel: Tempo Service auf Port 4317 tls { insecure = true // Interne Kommunikation ohne TLS } } } otelcol.exporter.prometheus "otel_metrics" { forward_to = [prometheus.remote_write.to_prometheus.receiver] } otelcol.exporter.loki "otel_logs" { forward_to = [loki.write.to_loki.receiver] } // Logging für Alloy selbst konfigurieren logging { level = "info" format = "logfmt" } // prometheus.scrape "alloy_self" { // targets = [ // prometheus.target_group { // targets = [{"__address__" = "localhost:12345"}] // } // ] // forward_to = [...] // An Prometheus Remote Write oder lokalen Agent // }