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

无法通过Promtail和Grafana获取PM2日志

解决Promtail无法采集PM2日志的问题

针对你的配置,以下是几个关键排查点和修复方案:

1. 检查Docker挂载目录

Promtail运行在容器中,必须将宿主机的PM2日志目录挂载到容器内对应路径。如果仅挂载了Nginx的/var/log/nginx而未挂载PM2的/var/log/pmx,容器将无法访问到PM2日志文件。

启动Promtail容器时,确保添加PM2目录的挂载参数:

-v /var/log/pmx:/var/log/pmx:ro

(:ro表示只读挂载,符合日志采集的安全需求)

2. 验证PM2日志路径正确性

确认PM2日志实际存储路径是否为/var/log/pmx:

  • 执行pm2 logs查看日志输出路径
  • 检查/var/log/pmx目录下是否存在日志文件,文件名是否匹配*log(比如是否是xxx.out或xxx.err后缀,而非.log)

如果路径或文件名匹配错误,修改配置中的__path__字段,例如:

__path__: /var/log/pm2/*.{out,err}

3. 检查日志文件权限

确保Promtail容器内的运行用户拥有读取/var/log/pmx目录及文件的权限:

  • 查看宿主机上日志文件的权限:ls -l /var/log/pmx/
  • 如果文件属于root用户,可以调整文件权限(如添加其他用户读权限),或启动Promtail容器时使用--user root参数(注意安全风险)

4. 查看Promtail运行日志

通过Docker日志排查具体错误:

docker logs <your-promtail-container-name>

如果存在permission denied或no such file or directory类错误,对应解决权限或路径问题。

修正后的示例配置

确认挂载和路径正确后,配置本身无需大幅修改,以下是调整后的参考:

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:
  - job_name: pm2 logs
    static_configs:
      - targets:
          - localhost  # 本地采集无需指定外部IP
        labels:
          job: pm2 logs
          __path__: /var/log/pmx/*log  # 确保路径与实际一致

  - job_name: gcp-nginx-logs
    static_configs:
      - targets:
          - localhost
        labels:
          job: nginx-logs
          __path__: /var/log/nginx/*log

内容的提问来源于stack exchange,提问作者Amit Choudhary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 05:43:21