使用 google-fluentd 将错误消息从 nginx 日志解析到 stackdriver
Parsing error messges from nginx log to stackdriver with google-fluend
我们试图通过解析 nginx 错误来设置警报,我们只需要 [error] 级别的消息。 ([error] 27720#27720: *29765923 access forbidden by rule, client: blalbablab
)。主要目标是不发送我们不需要的 gcp stackdriver 日志(减少日志存储 space 使用)。所以我创建了 google-fluend with logs streaming,但我被解析错误消息困住了。这是我的配置。
<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>
在这种情况下使用带有正则表达式规则的解析是否正确?请帮我解决这个问题。
经过一些测试,我得到了一个可用的版本。
<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>
我们试图通过解析 nginx 错误来设置警报,我们只需要 [error] 级别的消息。 ([error] 27720#27720: *29765923 access forbidden by rule, client: blalbablab
)。主要目标是不发送我们不需要的 gcp stackdriver 日志(减少日志存储 space 使用)。所以我创建了 google-fluend with logs streaming,但我被解析错误消息困住了。这是我的配置。
<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>
在这种情况下使用带有正则表达式规则的解析是否正确?请帮我解决这个问题。
经过一些测试,我得到了一个可用的版本。
<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>