如何在容器优化的OS中更改logName并配置stackdriver logging代理?

时间:2019-03-28 14:35:43

标签: stackdriver google-cloud-stackdriver google-container-os

我想为使用Container-Optimized OSStackdriver Exports中生成的日志设置导出。

对于Linux VM实例,我知道logName是从/etc/google-fluentd/config.d/[APPLICATION_NAME].conf之类的文件中获取的。例如:
以下是/etc/google-fluentd/config.d/syslog.conf在Linux VM中的外观:

<source>
  @type tail

  # Parse the timestamp, but still collect the entire line as 'message'
  format syslog

  path /var/log/syslog
  pos_file /var/lib/google-fluentd/pos/syslog.pos
  read_from_head true
  tag some-log-name
</source>

根据上述conf文件,StackDriver日志中的logName将为“ projects / [PROJECT-NAME] / logs / some-log-name” 。如果手动安装代理,则以下资源说明了日志记录代理的配置。

现在,在使用CONTAINER-OPTIMIZED OS的情况下,没有名为/etc/google-fluentd的文件夹,并且我无法找到conf文件,在该文件中我更改了logName以反映在StackDriver Log Viewer中。到目前为止,这里是此虚拟机生成的日志的示例:

{
   insertId:  "some-random-id"  
   jsonPayload: {…}  
   logName:  "projects/[PROJECT-NAME]/logs/gcplogs-docker-driver"  
   receiveTimestamp:  "2019-03-28T13:10:31.609437487Z"
   resource: {…}  
   timestamp:  "2019-03-28T13:10:30.588317266Z"
}

在上面的日志中,我不知道 gcplogs-docker-driver 的来源是什么。我正在寻找一种方法来改变这种状况。

(PS更改日志名称对我很重要,因为在google cloud bucket中为导出日志而创建的接收器会创建一个目录,该目录的名称与logName标记相同(对于{{1} },名为  logName: "projects/[PROJECT-NAME]/logs/gcplogs-docker-driver将被创建。)

1 个答案:

答案 0 :(得分:1)

  

现在,在使用CONTAINER-OPTIMIZED操作系统的情况下,没有名为/ etc / google-fluentd的文件夹,并且我无法找到conf文件,在该文件中我更改了logName以反映在StackDriver Log Viewer中。

/etc/google-fluentd文件夹用于存储Stackdriver Logging代理(documentationcode)的配置文件。

在容器优化的OS上,代理由stackdriver-logging.service进行容器化和管理,并且config file存储在/etc/stackdriver/logging.config.d

您将需要运行sudo systemctl start stackdriver-logging来启动代理。

  

我不知道logName中gcplogs-docker-driver的来源。我正在寻找一种改变这种情况的方法。

这些日志实际上来自完全不同的来源。它们来自Docker日志记录驱动程序:Google Cloud Logging driver。查看文档,显然它们没有提供任何配置日志名称的方法。

再看一下他们的源代码,显然该日志名称在Docker的源代码中为hard-coded。因此,恐怕没有好的方法来为gcplogs Docker日志记录驱动程序配置日志名称。