2

我可以在容器优化操作系统的堆栈驱动程序日志代理的帮助下将日志注入到 Google 日志查看器作为 JSON。

它将日志作为一个值注入到消息中,而不是作为默认配置的 json 有效负载

我试过什么?

我已将 /etc/stackdriver/logging.config.d/fluentd-lakitu.conf 中的 fluentd 配置更改为以下内容:

<source>
  @type tail
  format json
  path /var/lib/docker/containers/*/*.log
  <parse>
    @type json
  </parse>
  pos_file /var/log/google-fluentd/containers.log.pos
  tag reform_contain
  read_from_head true
</source>

但它无法将日志发送到日志查看器

操作系统:容器优化操作系统 cos-81-12871-1196-0

4

2 回答 2

4

我在Google 的 Public Issue Tracker上发现了这个问题,它讨论了您在用例中提到的相同问题。Google 产品团队已收到有关此限制的通知,他们正在努力解决此问题。你只需要去那里点击标题旁边的星号,你就可以获得问题的更新,并让问题更加可见。

于 2020-09-29T18:57:35.533 回答
0

正如@Kamelia Y提到的关于https://issuetracker.google.com/issues/137517429

提到了使用的解决方法

<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>

上面的代码段将日志解析为 JSON 并注入到 Cloud Logging。

在 Stackdriver 上的Google Groups的讨论中,我们讨论了如何将它与启动脚本一起使用。

这是启动脚本的片段。

cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save
# Shorter version of the above: cp /etc/stackdriver/logging.config.d/fluentd-lakitu.conf{,-save}
(
head -n -2 /etc/stackdriver/logging.config.d/fluentd-lakitu.conf-save; cat <<EOF
<filter cos_containers.**>
@type parser
format json
key_name message
reserve_data false
emit_invalid_record_to_error false
</filter>
EOF
) > /etc/stackdriver/logging.config.d/fluentd-lakitu.conf
sudo systemctl start stackdriver-logging

此图像可用于生成随机 JSON 日志。 https://hub.docker.com/repository/docker/patelathreya/json-random-logger

于 2020-12-28T04:20:18.590 回答