带有 grok 模式错误的 Telegraf 尾部
Telegraf tail with grok pattern error
我正在使用 Telegraf 从 Apache NiFi 获取日志信息,为此我正在使用此配置:
[[inputs.tail]]
## files to tail.
files = ["/var/log/nifi/nifi-app.log"]
## Read file from beginning.
from_beginning = true
#name_override = "nifi_app"
## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
data_format = "grok"
grok_patterns = [ "%{DATE:date} %{TIME:time} %{WORD:EventType} \[%{GREEDYDATA:NifiTask} %{NOTSPACE:Thread}\] %{NOTSPACE:NifiEventType} %{GREEDYDATA:EventText} %{NUMBER:EventDuration} %{WORD:EventDurationUnits}" ]
当我尝试启动 telegraf 时,它给我这个错误:
Error parsing /etc/telegraf/telegraf.conf, toml: line 10: parse error
我写的模式在 Grok debugger 中测试过,文本如下:
2018-08-02 10:53:16,976 INFO [Heartbeat Monitor Thread-1]
o.a.n.c.c.h.AbstractHeartbeatMonitor Finished processing 1 heartbeats
in 11863 nanos
这些是一些测试的结果:
grok_patterns = ["\[%{GREEDYDATA:NifiTask}\]"] ==> toml: line 10: parse error
grok_patterns = ["[%{GREEDYDATA:NifiTask}]"] ==> Invalid data format: grok
grok_patterns = ['\[%{GREEDYDATA:NifiTask}\]'] ==> Invalid data format: grok
grok_patterns = ["\[%{GREEDYDATA:NifiTask}\]"] ==> Invalid data format: grok
grok_patterns = ['[%{GREEDYDATA:NifiTask}]'] -> Invalid data format: grok
第一个选项对我来说是正确的,但没有用,问题似乎出在括号的转义方式上。
如何解决这个问题?
问题不止一个:
第一个问题:在 1.8 版本 (ref) 中将 grok 数据格式添加到 Telegraf 中,因此在发布此版本之前我必须使用夜间安装。
第二个问题:括号怎么转义,常规的转义有问题,所以最后我把这部分放在自定义的pattern文件里,这样就完美了.
要解决有关转义括号的问题,"partial" 解决方案是通过单引号更改双引号,这样,在我的情况下(电报版本 1.13.4)括号通过 \ 正确转义
我正在使用 Telegraf 从 Apache NiFi 获取日志信息,为此我正在使用此配置:
[[inputs.tail]]
## files to tail.
files = ["/var/log/nifi/nifi-app.log"]
## Read file from beginning.
from_beginning = true
#name_override = "nifi_app"
## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
data_format = "grok"
grok_patterns = [ "%{DATE:date} %{TIME:time} %{WORD:EventType} \[%{GREEDYDATA:NifiTask} %{NOTSPACE:Thread}\] %{NOTSPACE:NifiEventType} %{GREEDYDATA:EventText} %{NUMBER:EventDuration} %{WORD:EventDurationUnits}" ]
当我尝试启动 telegraf 时,它给我这个错误:
Error parsing /etc/telegraf/telegraf.conf, toml: line 10: parse error
我写的模式在 Grok debugger 中测试过,文本如下:
2018-08-02 10:53:16,976 INFO [Heartbeat Monitor Thread-1] o.a.n.c.c.h.AbstractHeartbeatMonitor Finished processing 1 heartbeats in 11863 nanos
这些是一些测试的结果:
grok_patterns = ["\[%{GREEDYDATA:NifiTask}\]"] ==> toml: line 10: parse error
grok_patterns = ["[%{GREEDYDATA:NifiTask}]"] ==> Invalid data format: grok
grok_patterns = ['\[%{GREEDYDATA:NifiTask}\]'] ==> Invalid data format: grok
grok_patterns = ["\[%{GREEDYDATA:NifiTask}\]"] ==> Invalid data format: grok
grok_patterns = ['[%{GREEDYDATA:NifiTask}]'] -> Invalid data format: grok
第一个选项对我来说是正确的,但没有用,问题似乎出在括号的转义方式上。
如何解决这个问题?
问题不止一个:
第一个问题:在 1.8 版本 (ref) 中将 grok 数据格式添加到 Telegraf 中,因此在发布此版本之前我必须使用夜间安装。
第二个问题:括号怎么转义,常规的转义有问题,所以最后我把这部分放在自定义的pattern文件里,这样就完美了.
要解决有关转义括号的问题,"partial" 解决方案是通过单引号更改双引号,这样,在我的情况下(电报版本 1.13.4)括号通过 \ 正确转义