我正在尝试在Compute Engine上运行docker容器,一切正常,我的PHP应用正确返回了所有数据,但我想增加日志的详细程度。
目前,我已经在容器配置目录中添加了两个流利的配置文件:
<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>
<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
内的这些目录时,里面什么也没有,也许我丢失了某些东西...
感谢您的帮助!
答案 0 :(得分:0)
stackdriver-logging-agent
通过等效于docker logs [container]
读取容器的日志。这为主机OS上的进程提供了一致的API,以收集容器日志。
默认情况下,容器的stdout | stderr被发送到docker logs
,stackdriver-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的很好的解释。