【问题标题】:Telegraf parsing logstash-style "grok" patternsTelegraf 解析 logstash 风格的“grok”模式
【发布时间】:2017-12-04 12:07:01
【问题描述】:

我一直在尝试将数据从日志文件中提取到 influx 中。结构如下

20171130-22:02:21.832 : something data work now
20171230-22:02:22.843 : something data2
20171231-22:02:23.232 : something data3

我用过这个模式

[inputs.logparser.grok]
        #patterns = ['%{ts-"20060102-15:04:05.999":timestamp}%{GREEDYDATA:random_data}']
        patterns = ['(?<timestamp>\d{8}-\d{2}:\d{2}:\d{2}\.\d+)\s*:\s*%{GREEDYDATA:random_data}']

我可以获得有关制定模式的帮助吗?

【问题讨论】:

    标签: regex logstash influxdb logstash-grok telegraf


    【解决方案1】:

    你可以使用

    (?<timestamp>\d{8}-\d{2}:\d{2}:\d{2}\.\d+)\s*:\s*%{GREEDYDATA:random_data}
    

    详情

    • (?&lt;timestamp&gt;\d{8}-\d{2}:\d{2}:\d{2}\.\d+) - timestamp 字段模式:
      • \d{8} - 9 位数字
      • - - 一个连字符
      • \d{2}:\d{2}:\d{2} - 2 位、:、2 位、: 和 2 位
      • \.\d+ - 一个点和 1 个以上的数字
    • \s*:\s* - : 包含 0+ 个空白字符
    • %{GREEDYDATA:random_data} - .*,直到行尾的任何内容

    【讨论】:

    • 非常感谢.. 它说 Error parsing log line: error parsing regexp: invalid or unsupported Perl syntax: (?&lt; ... 你能帮我语法以便成功写入 influx ?我对此很陌生..
    • 抱歉,你确定你在使用 Grok 的正则表达式吗?因为 Grok 正则表达式支持命名捕获组,所以它们用于设置提取的字段名称。
    • 我认为是的。这是我使用的语法 [inputs.logparser.grok] #patterns = ['%{ts-"20060102-15:04:05.999":timestamp}%{GREEDYDATA:random_data}'] patterns = ['(? \d{8}-\d{2}:\d{2}:\d{2}\.\d+)\s*:\s*%{GREEDYDATA:random_data}']
    • @phaigeim 请检查the docs。我确信该模式的使用方式存在一些问题。我在grokdebug.herokuapp.com 进行了测试,效果很好。
    • 再次感谢@Wiktor。我一直在使用这个github.com/influxdata/telegraf/tree/master/plugins/inputs/… 来构建模式。在 grokdebug.herokuapp.com 工作时,有些东西不适用于 telegraf .. 有什么不同吗?
    猜你喜欢
    • 1970-01-01
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 2015-12-18
    • 1970-01-01
    相关资源
    最近更新 更多