2

首先让我解释一下设置/系统:

我有一台通过 GCP Compute Engine 运行的虚拟 Ubuntu 18.04 机器。我遵循GCP文档并通过apt-get.

在这台机器上,我有一个 golang 网络服务,在 Docker 容器中运行,它使用Logrus输出如下所示的日志:

{"message":"some interesting thing occured","severity":"INFO","timestamp":{"seconds":1599668988,"nanos":567943787}}

为了将这些日志从机器/容器获取到 GCP 日志,我创建了一个新的 fluentd 配置文件/etc/google-fluentd/config.d/docker.conf,如fluentd 文档中所述

<source>
  @type forward
  port 24224
  bind 0.0.0.0
</source>

<filter docker.**>
  @type parser
  format json
  key_name log
  reserve_data true
</filter>

以及 Docker 守护程序将此容器的日志发送到 fluentd,如Docker 文档中所述:docker run --log-driver=fluentd ...

我面临的限制是日志确实到达了 GCP 日志查看器,但我的服务字段没有正确解析,因此我无法按严重性等进行排序。到达 GCP 的日志如下所示:

{
  "insertId": "xxxxxxxxxxxxxxxx",
  "jsonPayload": {
    "stream": "stderr",
    "log": "{\"message\":\"some interesting thing occured\",\"severity\":\"INFO\",\"timestamp\":{\"seconds\":1599668988,\"nanos\":567943787}}\n"
  },
  "resource": {
    "type": "gce_instance",
    "labels": {
      "instance_id": "22222222222222222",
      "project_id": "xxxxxxx-333333",
      "zone": "us-east1-b"
    }
  },
  "timestamp": "2020-09-09T16:29:48.568042072Z",
  "labels": {
    "compute.googleapis.com/resource_name": "xxxxxxxx"
  },
  "logName": "some/folder/logs/docker.var.lib.docker.containers.7ec67d861ea6d2dbf20db456dad4e7efc43b91a498580dda325f76170b502509.7ec67d861ea6d2dbf20db456dad4e7efc43b91a498580dda325f76170b502509-json.log",
  "receiveTimestamp": "2020-09-09T16:33:29.159377657Z"
}

我需要采取哪些额外步骤才能让 GCP 日志查看器理解日志?我认为 fluentd 的过滤器/解析器配置足以实现这一点,尤其是关于的部分。

  format json
  key_name log
4

0 回答 0