【问题标题】:Parsing error messges from nginx log to stackdriver with google-fluend使用 google-fluentd 将错误消息从 nginx 日志解析到 stackdriver
【发布时间】:2020-12-21 13:50:48
【问题描述】:

我们尝试通过解析 nginx 错误来设置警报,我们只需要 [error] 级别的消息。 ([error] 27720#27720: *29765923 access forbidden by rule, client: blalbablab)。主要目标是不发送我们不需要的 gcp stackdriver 日志(减少使用的日志存储空间)。所以我用日志流创建了 google-fluend,但我一直在解析错误消息。这是我的配置。

<source>
  @type tail
  tag nginx-error
  path /var/log/nginx/error.log
  format multiline
  format_firstline /^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2} \[\w+\] (?<pid>\d+).(?<tid>\d+): /
  format1 /^(?<time>\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[(?<log_level>\w+)\] (?<pid>\d+).(?<tid>\d+): (?<message>$      multiline_flush_interval 3s
  #<parse>
    #@type regexp
    #expression (\s\[error+\])
    #time_key name
    #types id:integer
  #</parse>
</source>

在这种情况下使用带有正则表达式规则的解析是否正确?请帮我解决这个问题。

【问题讨论】:

  • 您的完整用例是什么?您是在进一步处理日志还是只是将它们中继到某个输出目标?如果目的只是转发[error] 日志,那么您可以简单地使用grep 过滤器。但是,正如您提到的解析,听起来还有更多内容。另外,请添加几个完整的示例日志。

标签: nginx google-cloud-platform fluentd stackdriver


【解决方案1】:

经过一些测试,我得到了一个工作版本。

 <source>
  @type tail
  format /^(?<message>.*\[error\].*)$/
  path /var/log/nginx/error.log
  pos_file /var/lib/google-fluentd/pos/nginx-error.pos
  read_from_head true
  tag nginx-error
</source>

【讨论】:

    猜你喜欢
    • 2018-06-19
    • 1970-01-01
    • 2022-08-22
    • 2017-02-06
    • 2017-04-01
    • 2019-01-07
    • 1970-01-01
    • 2019-10-20
    • 1970-01-01
    相关资源
    最近更新 更多