如何从Docker容器向Logging Agent添加配置?

时间:2019-05-06 13:11:13

标签: docker google-cloud-platform google-compute-engine

我正在尝试在Compute Engine上运行docker容器,一切正常,我的PHP应用正确返回了所有数据,但我想增加日志的详细程度。

目前,我已经在容器配置目录中添加了两个流利的配置文件:

  • 这是nginx的
<source>
  @type tail
  format nginx
  path /var/log/feedbacks/nginx-access.log
  pos_file /var/lib/google-fluentd/pos/nginx-access.pos
  read_from_head true
  tag nginx-access
</source>

<source>
  @type tail
  format none
  path /var/log/feedbacks/nginx-error.log
  pos_file /var/lib/google-fluentd/pos/nginx-error.pos
  read_from_head true
  tag nginx-error
</source>
  • 这是PHP日志输出:
<source>
  @type tail
  format /^\[(?<time>[\d\-]+ [\d\:]+)\] (?<channel>.+)\.(?<level>(DEBUG|INFO|NOTICE|WARNING|ERROR|CRITICAL|ALERT|EMERGENCY))\: (?<message>[^\{\}]*) (?<context>(\{.+\})|(\[.*\])) (?<extra>(\{.+\})|(\[.*\]))\s*$/
  path /var/log/feedbacks/structured.log
  pos_file /var/lib/google-fluentd/pos/feedbacks.pos
  read_from_head true
  tag feedbacks
</source>

我已经按如下方式安装了这2个配置文件和相应的日志文件:

  • 容器路径:/usr/src/app/var/logs/,主机路径:/var/log/feedbacks/,模式:r / w
  • 容器路径:/usr/src/app/docker/runnable/fluentd/,主机路径:/etc/google-fluentd/config.d/,模式:r / w

但是当我/ bin / bash到stackdriver-logging-agent内的这些目录时,里面什么也没有,也许我丢失了某些东西...

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

stackdriver-logging-agent通过等效于docker logs [container]读取容器的日志。这为主机OS上的进程提供了一致的API,以收集容器日志。

默认情况下,容器的stdout | stderr被发送到docker logsstackdriver-logging-agent正是通过此流收集并发送到Stackdriver服务。

IIUC正确,您需要确保您的PHP应用程序正在生成更丰富的日志,并将这些日志发送到stdout | stderr。

如果要使用Nginx的库存Docker映像,它将执行以下操作:

lrwxrwxrwx 1 root root 11 May  8 03:01 access.log -> /dev/stdout
lrwxrwxrwx 1 root root 11 May  8 03:01 error.log -> /dev/stderr

在此处查看Docker的文档:

https://docs.docker.com/config/containers/logging/

我在Google网站上找不到关于Container OS的很好的解释。