Telegraf尾部带有grok模式错误

时间:2018-08-02 13:59:50

标签: apache-nifi grok telegraf toml

我正在使用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时,出现此错误:

  

解析/etc/telegraf/telegraf.conf时出错,toml:第10行:解析错误

我在Grok debugger中用以下文本测试了我编写的模式:

  

2018-08-02 10:53:16,976信息[心跳监视器线程1]   o.a.n.c.c.h.Abs​​tractHeartbeatMonitor完成处理1个心跳   在11863纳米中

这些是一些测试的结果:

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  

对我来说,第一个选择是正确的选择,但不起作用,问题似乎出在逃脱括号的方式上。

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

要解决转义括号的问题,“部分”解决方案是用单引号更改双引号,以这种方式,在我的情况下(电报版本1.13.4),\可以正确地转义括号。

答案 1 :(得分:0)

存在多个问题:

  • 第一个问题:grok数据格式已在1.8发行版(ref)中添加到Telegraf中,因此我必须使用每晚安装一次,直到该版本发行为止。

  • 第二个问题:如何逃脱括号,以常规方式执行操作时会遇到问题,所以我最后要做的就是将这部分放入自定义模式文件中,从而可以正常工作。