server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: # 场景 1: Docker stdio 收集(主要方式) - job_name: docker docker_sd_configs: - host: unix:///var/run/docker.sock refresh_interval: 5s filters: - name: label values: ["logging=promtail"] relabel_configs: - source_labels: ['__meta_docker_container_name'] regex: '/(.*)' target_label: 'container' - source_labels: ['__meta_docker_container_label_logging_jobname'] target_label: 'job' - source_labels: ['__meta_docker_container_id'] target_label: '__path__' replacement: '/var/lib/docker/containers/$1/*.log' pipeline_stages: - json: expressions: log: log stream: stream time: time - json: source: log expressions: level: levelname logger: name message: message request_id: request_id - labels: level: logger: - output: source: log # 场景 2: Log 文件收集(备用) - job_name: app_files static_configs: - targets: - localhost labels: job: functional-scaffold-app-files __path__: /var/log/app/*.log pipeline_stages: - json: expressions: timestamp: asctime level: levelname logger: name message: message request_id: request_id - timestamp: source: timestamp format: "2006-01-02 15:04:05,000" - labels: level: logger: - output: source: message