server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://didi-loki:3100/loki/api/v1/push scrape_configs: # Scrape Docker container logs - job_name: docker docker_sd_configs: - host: unix:///var/run/docker.sock refresh_interval: 30s filters: - name: label values: ["com.docker.compose.project"] relabel_configs: - source_labels: ['__meta_docker_container_name'] regex: '/(.*)' target_label: container - source_labels: ['__meta_docker_container_label_com_docker_compose_service'] target_label: service - source_labels: ['__meta_docker_container_label_com_docker_compose_project'] target_label: project pipeline_stages: # Try to parse JSON logs (Node.js services emit JSON via pino/winston) - json: expressions: level: level service: service request_id: request_id session_id: session_id msg: msg - labels: level: request_id: session_id: # If "level" is missing, leave as info - template: source: level template: '{{ if .Value }}{{ .Value }}{{ else }}info{{ end }}'