logging { level = "info" format = "logfmt" } otelcol.receiver.otlp "api" { grpc { endpoint = "0.0.0.0:4317" } http { endpoint = "0.0.0.0:4318" } output { metrics = [otelcol.processor.transform.metric_labels.input] traces = [otelcol.processor.batch.default.input] } } otelcol.processor.transform "metric_labels" { error_mode = "ignore" metric_statements { context = "datapoint" statements = [ `set(attributes["service.name"], resource.attributes["service.name"])`, `set(attributes["deployment.environment"], resource.attributes["deployment.environment"])`, ] } output { metrics = [otelcol.processor.batch.default.input] } } otelcol.processor.batch "default" { output { metrics = [otelcol.exporter.prometheus.local.input] traces = [otelcol.exporter.otlp.tempo.input] } } otelcol.exporter.prometheus "local" { forward_to = [prometheus.remote_write.local.receiver] } prometheus.remote_write "local" { endpoint { url = "http://prometheus:9090/api/v1/write" } } otelcol.exporter.otlp "tempo" { client { endpoint = "tempo:4317" tls { insecure = true } } } discovery.docker "linux" { host = "unix:///var/run/docker.sock" } discovery.relabel "docker_logs" { targets = [] rule { source_labels = ["__meta_docker_container_name"] regex = "/(.*)" target_label = "service_name" } rule { source_labels = ["__meta_docker_container_label_com_docker_compose_service"] target_label = "compose_service" } } loki.source.docker "default" { host = "unix:///var/run/docker.sock" targets = discovery.docker.linux.targets labels = {"platform" = "docker"} relabel_rules = discovery.relabel.docker_logs.rules forward_to = [loki.write.local.receiver] } loki.write "local" { endpoint { url = "http://loki:3100/loki/api/v1/push" } }