0

我正在使用 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}" ]

当我尝试启动电报时,它给了我这个错误:

解析/etc/telegraf/telegraf.conf, toml: line 10: 解析错误

我编写的模式在Grok 调试器中使用以下文本进行了测试:

2018-08-02 10:53:16,976 INFO [Heartbeat Monitor Thread-1] oancchAbstractHeartbeatMonitor 已完成处理 11863 纳秒内的 1 个心跳

以下是一些测试的结果:

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  

对我来说,第一个选项是正确的,但不起作用,问题似乎是括号被转义的方式。

如何解决这个问题?

4

2 回答 2

1

要解决有关转义括号的问题,“部分”解决方案是通过简单引号更改双引号,这样,在我的情况下(电报版本 1.13.4),括号正确转义为 \

于 2020-03-25T21:53:45.730 回答
0

问题不止一个:

  • 第一个问题: grok 数据格式在 1.8 版本(ref)中添加到 Telegraf,所以我必须使用每晚安装,直到这个版本发布。

  • 第二个问题:如何转义括号,以常规方式进行有问题,所以我最终所做的就是将这部分放在自定义模式文件中,这样它就可以完美地工作。

于 2018-08-03T08:18:27.073 回答