Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于Quarkus中Opentracing的Logstash Grok过滤器';日志_Logstash_Logstash Grok_Quarkus - Fatal编程技术网

用于Quarkus中Opentracing的Logstash Grok过滤器';日志

用于Quarkus中Opentracing的Logstash Grok过滤器';日志,logstash,logstash-grok,quarkus,Logstash,Logstash Grok,Quarkus,正在将Quarkus日志文件导入elasticsearch。我的问题是试图处理logstash中的日志。。。如何使用grok筛选器获取traceId和spanId 下面是一个示例日志条目: 21:11:32 INFO traceId=50a4f8740c30b9ca, spanId=50a4f8740c30b9ca, sampled=true [or.se.po.re.EmployeeResource] (vert.x-eventloop-thread-1) getEmployee with

正在将Quarkus日志文件导入elasticsearch。我的问题是试图处理logstash中的日志。。。如何使用grok筛选器获取traceId和spanId

下面是一个示例日志条目:

21:11:32 INFO  traceId=50a4f8740c30b9ca, spanId=50a4f8740c30b9ca, sampled=true [or.se.po.re.EmployeeResource] (vert.x-eventloop-thread-1) getEmployee with [id:2]
这是我的建议:

%{TIME} %{LOGLEVEL} %{WORD:traceId} %{WORD:spanId} %{GREEDYDATA:msg}

使用grok调试器,似乎没有检测到traceId和spanId。

问题可能有两个方面:

  • 字段之间的间距可能已关闭(请尝试在
    %{LOGLEVEL}
    之后添加
    \s?
    \t
  • 由于包含
    =
类似于此模式的东西可能会起作用(您可能需要对其进行一些修改):


AFIK Grok表达式需要与原始文本完全相同。因此,尝试添加逗号、空格和事件,以显示所有您不想捕获的文本。例如
traceId=

%{TIME} %{LOGLEVEL}  traceId=%{WORD:traceId}, spanId=%{WORD:spanId}, %{GREEDYDATA:msg}
这是日志行和我的grok表达式建议的输出

{
  "TIME": [
    [
      "21:11:32"
    ]
  ],
  "HOUR": [
    [
      "21"
    ]
  ],
  "MINUTE": [
    [
      "11"
    ]
  ],
  "SECOND": [
    [
      "32"
    ]
  ],
  "LOGLEVEL": [
    [
      "INFO"
    ]
  ],
  "traceId": [
    [
      "50a4f8740c30b9ca"
    ]
  ],
  "spanId": [
    [
      "50a4f8740c30b9ca"
    ]
  ],
  "msg": [
    [
      "sampled=true [or.se.po.re.EmployeeResource] (vert.x-eventloop-thread-1) getEmployee with [id:2]"
    ]
  ]
}
正如其他用户所提到的,注意单词之间的空格很重要。例如,logLevel和traceId之间有两个空格。您可以使用
s+
正则表达式来忘记它们。但是,可能过多地使用它会对性能产生很大(而且很糟糕)的影响

%{TIME}\s+%{LOGLEVEL}\s+traceId=%{WORD:traceId},\s+spanId=%{WORD:spanId},\s+%{GREEDYDATA:msg}
%{TIME}\s+%{LOGLEVEL}\s+traceId=%{WORD:traceId},\s+spanId=%{WORD:spanId},\s+%{GREEDYDATA:msg}