【问题标题】:Parsing fields out of textPayload in stackdriver logging在堆栈驱动程序日志记录中从 textPayload 中解析字段
【发布时间】:2016-06-02 02:07:29
【问题描述】:

这是来自tomcat访问日志的一行:

127.0.0.1 - - [24/May/2016:17:53:05 -0700] "POST /users HTTP/1.1" 200 10676

有没有办法在这里解析出客户端 IP、HTTP 请求方法、请求路径、响应代码等各种字段,并将其加载到 BigQuery 表中的单独列中?

this page 底部的表格链接到fluent catch-all config,但我认为应该以可配置的方式解析出不同的日志并以不同方式加载以便于查询?

或者我在这里遗漏了一些基本的东西?

【问题讨论】:

  • 这不仅仅是将一个问题转换为另一个问题的答案,但 tomcat 日志显示为 textPayload 而不是由 fluentd 结构化似乎是这里的根本问题。我不知道这是否意味着您没有正确设置 fluentd 或者 fluentd tomcat 配置是否只是次优的,但这是您可能会使用的线程。解决这个问题似乎可以解决您的问题。

标签: google-bigquery fluentd stackdriver


【解决方案1】:

这可能不是你的意思 - 但只是猜测:

如何将日志加载到 GBQ 表中,以便每个日志行成为表中的行,然后将其解析到另一个表中,如下所示(代码不是假装是最佳的 - 只是为了展示想法)

SELECT 
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){0} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){1} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){2} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){3} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){4} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){5} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){6} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){7} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){8} (.+?) '),
  REGEXP_EXTRACT(log_line, r'(?: (?:.+?)){9} (.+?) '),
FROM (
  SELECT ' ' + REGEXP_REPLACE(log_line, r'[\[\]\"]', '') + ' ' AS log_line 
  FROM 
    (SELECT '127.0.0.1 - - [24/May/2016:17:53:05 -0700] "POST /users HTTP/1.1" 200 10676' AS log_line)
)

【讨论】:

  • 是的,这似乎是一种方法,除非有办法以流利的方式配置正则表达式。在接受你的之前,我会再等几天看看是否有更好的答案。
  • 当然。我不是流利的用户,所以不知道是不是:o)
【解决方案2】:

您可以将其作为“CSV”导入吗? BigQuery 允许您指定自定义分隔符和引号字符。

127.0.0.1 - - [24/May/2016:17:53:05 -0700] "POST /users HTTP/1.1" 200 10676

看起来您可以提供一个空格作为引号字符,并提供双引号作为(可选)引号。我希望上面的示例行解析为:

“127.0.0.1”、“-”、“-”、“[24/May/2016:17:53:05”、“-0700]”、“POST /users HTTP/1.1”、200、10676

时间戳+时区有点混乱,您最初需要将一些字段作为字符串导入,但您可以使用查询(如 Mikhail 的回答)进行后处理以修复它并避免尚未 -另一个配置和管理的工具。

【讨论】:

    猜你喜欢
    • 2021-03-15
    • 1970-01-01
    • 2020-05-06
    • 2019-04-16
    • 1970-01-01
    • 2019-10-10
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多