【问题标题】:Stackdriver custom multiline logging, time formatStackdriver 自定义多行日志记录,时间格式
【发布时间】:2017-12-10 17:44:30
【问题描述】:

我一直在尝试设置一个自定义的多行日志解析器,以将带有一些可读字段的日志导入 Stackdriver。目前它看起来像这样:

<source>
    type tail
    read_from_head true
    path /root/ansible.log
    pos_file /var/lib/google-fluentd/pos/ansible.pos
    time_format "%a %b %e %T %Z %Y"
    format multiline
    format_firstline /Started ansible run at/
    format1 /Started ansible run at (?<timestart>[^\n]+)\n(?<body>.*)/
    format2 /PLAY RECAP.*/
    format3 /ok=(?<ok>\d+)\s+changed=(?<changed>\d+)\s+unreachable=(?<unreachable>\d+)\s+failed=(?<failed>\d+).*/
    format4 /Finished ansible run at (?<timeend>[^\n]+)/
    tag ansible
</source>

已按照http://docs.fluentd.org/v0.12/articles/parser_multiline 的规范完成,并且可以正常工作。但它在没有适当时间戳的情况下工作 - timestarttimeend 只是 json 中的简单字段。所以在当前状态下,time_format 设置是无用的,因为我在正则表达式中没有time 变量。这确实聚合了我需要的所有变量,当我运行流利的服务时,日志会显示在 Stackdriver 中,并且一切都非常愉快。

但是,当我将其中一个时间变量的名称更改为 time 时,尝试为该条目实际分配 Stackdriver 时间戳,它不起作用。机器上的 fluentd 日志显示 Worker 启动并解析了所有内容,但 Stackdriver 控制台中根本没有显示日志。

timestarttimeend 看起来像 Fri Jun 2 20:39:58 UTC 2017 或类似的东西。时间格式规范位于http://ruby-doc.org/stdlib-2.4.1/libdoc/time/rdoc/Time.html#method-c-strptime,我已经检查并再次检查了太多次,但我无法弄清楚我做错了什么。

编辑:另一个细节:当我尝试解析 time 变量时,虽然 Stackdriver 控制台中没有显示日志,但相应的标记(在本例中为 ansible)会显示在列表中标签。只是结果是空的。

【问题讨论】:

    标签: fluentd stackdriver google-cloud-stackdriver


    【解决方案1】:

    您是正确的,Stackdriver 日志记录代理在 'time' 字段中查找时间戳,但它使用 Ruby 的 Time.iso8601 来解析该值(错误时退回到 Time.at)。您引用的字符串 (Fri Jun 2 20:39:58 UTC 2017) 不是这两种格式中的任何一种,因此它无法解析它(您可能会在/var/log/google-fluentd/google-fluentd.log 中看到错误)。 您可以在配置中添加一个record_transformer 插件,以将您的解析日期更改为正确的格式(提示:enable_ruby 是您的朋友)。比如:

    <filter foo.bar>
      @type record_transformer
      enable_ruby
      <record>
        time ${Time.strptime(record['time'], '%a %b %d %T %Z %Y').iso8601}
      </record>
    </filter>
    

    应该可以...

    【讨论】:

    • 除了,正如我所说,我在 fluentd 日志中没有看到任何错误,fluentd 日志说一切正常,只是日志没有显示在 Stackdriver 中。至于时间格式,我已经在上面的块中尝试使用%a %b %e %T %Z %Y,所以我只是想知道为什么我的方法不起作用。
    猜你喜欢
    • 2011-03-14
    • 2018-08-23
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 2019-07-26
    • 2023-03-25
    • 1970-01-01
    相关资源
    最近更新 更多