问题:PostgreSQL Docker容器日志未显示在New Relic仪表板
排查PostgreSQL Docker日志未同步到New Relic的问题
1. 验证New Relic Infrastructure代理的Docker采集配置
- 检查主机上的
newrelic-infra.yml配置文件,确认Docker日志采集已开启:logs: enabled: true docker: enabled: true - 确保代理进程有权限访问Docker资源:
# 将newrelic-infra用户加入docker组 usermod -aG docker newrelic-infra # 重启代理生效 systemctl restart newrelic-infra
2. 检查容器日志的可访问性
- 如果是通过主机挂载路径采集日志,确认代理能读取该路径:
# 示例:假设容器日志挂载到主机/var/log/postgresql # 检查路径权限 ls -ld /var/log/postgresql # 用代理用户尝试读取日志 sudo -u newrelic-infra cat /var/log/postgresql/postgresql.log - 如果依赖Docker日志驱动,运行
docker inspect <postgres-container-id>查看LogConfig字段,确保使用的是json-file这类New Relic支持的驱动。
3. 核对日志转发规则配置
- 检查
/etc/newrelic-infra/logging.d/下的规则文件(比如postgres.yml),确保匹配规则正确:logs: - name: postgresql # 按文件路径匹配 file: /var/log/postgresql/*.log # 或按容器标签匹配 docker_container: label: com.docker.compose.service: postgres attributes: logtype: postgresql - 重启代理后查看运行日志,排查配置错误:
重点关注权限不足、路径不存在、规则语法错误类的提示。systemctl restart newrelic-infra tail -f /var/log/newrelic-infra/newrelic-infra.log
4. 确认New Relic端的搜索范围
- 在New Relic日志界面,调整时间范围至日志生成的时段,避免因时间过滤导致日志不显示。
- 使用
logtype: postgresql或source: postgresql作为过滤条件,精准定位目标日志。
5. 检查PostgreSQL日志格式
- 确认
postgresql.conf中的日志配置为纯文本格式,避免自定义格式导致代理解析失败:log_destination = 'stderr' logging_collector = on log_line_prefix = '%t [%p] %q%u@%d %l: '
内容的提问来源于stack exchange,提问作者testGB
相关产品推荐
相关产品推荐

