You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Loki采集容器内自定义路径的应用日志

如何用Promtail同时采集默认容器日志和自定义路径应用日志

首先明确:日志采集由Promtail负责,Loki仅做存储和查询,所以你需要修改的是Promtail的配置文件(通常为promtail-config.yaml),而非Loki的配置。

以下是具体实现步骤:

1. 保留原有容器日志采集配置

默认容器日志采集一般通过docker_sd_configs或kubernetes_sd_configs发现容器,采集/var/log/containers/*.log路径的日志。确保这部分配置保留,示例如下:

scrape_configs:
  # 原有容器日志采集任务
  - job_name: docker-containers
    docker_sd_configs:
      - host: unix:///var/run/docker.sock
        refresh_interval: 10s
    relabel_configs:
      - source_labels: ['__meta_docker_container_name']
        regex: '/(.*)'
        target_label: 'container'
      - source_labels: ['__meta_docker_container_log_stream']
        target_label: 'stream'
    pipeline_stages:
      - docker: {}

2. 添加自定义路径日志的采集配置

容器内应用的自定义日志路径需要先挂载到宿主机,再让Promtail采集宿主机上的挂载路径。

2.1 挂载容器内日志路径到宿主机

  • Docker场景:启动容器时用-v参数挂载
docker run -d \
  -v /宿主机本地路径/app-logs:/容器内自定义日志路径 \
  your-app-image:latest
  • Kubernetes场景:在Deployment的volumeMounts和volumes中配置挂载规则

2.2 在Promtail中新增采集任务

在scrape_configs下添加新的job_name,指定宿主机上的日志路径:

scrape_configs:
  # 原有容器日志采集任务(保留)
  - job_name: docker-containers
    ... # 省略原有配置内容

  # 新增自定义应用日志采集任务
  - job_name: custom-app-logs
    static_configs:
      - targets: ['localhost']
        labels:
          job: custom-app
          __path__: /宿主机本地路径/app-logs/*.log # 替换为实际挂载路径
    pipeline_stages:
      # 根据日志格式添加解析规则,比如JSON格式日志:
      - json:
          expressions:
            level: level
            message: msg
            ts: timestamp
      - labels:
          level:

3. 验证配置并重启Promtail

  • 检查配置语法正确性:
promtail -config.file=promtail-config.yaml -check-config
  • 重启Promtail服务,使新配置生效

4. 在Grafana中查询两类日志

重启后,在Grafana Explore界面通过标签筛选:

  • 容器日志:{job="docker-containers"}
  • 自定义应用日志:{job="custom-app"}

内容的提问来源于stack exchange,提问作者ilavarasan M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:28:11