mlp - Fluentbit - 解析多种格式的日志(log+json)
问题描述
我正在尝试通过fluentbit将以下日志行发送到elasticsearch,但在[MLP]部分之后我没有找到正确的解决方案来提取时间和json结构:
2020-12-29 08:00:03,230 INFO [http-nio-3410-exec-7] c.e.m.p.PushManager$ImportResponseImpl - [MLP] {"component":{"name":"importserv","version":"5.4.2"},"details":{"feed":"SomeFEED"},"elapsedMs":354,"event":"import","id":"1.0.58855123705431","name":"image1.png","objType":"Image","outcome":"OK","uuid":"1234566573234242342-123434234-12342"}
有人试图实现这样的目标吗?欢迎提出意见和建议。
谢谢!
解决方案
您可以为此使用正则表达式解析器。
[PARSER]
Format regex
Name logging-parser
Regex ^(?<time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) (?<level>\S+) .* (?<capturedJson>{.*})$
Decode_Field json capturedJson
Time_Format %FT%H:%M:%S,%L
Time_Key time
首先,编写一个正则表达式,将您的 json 捕获到一个单独的组中。您可以使用 Rubular 来测试表达式。这是一个解析您的输入的示例,json 被捕获为capturedJson
:https ://rubular.com/r/NAby4NlVomkdWy
接下来,添加Decode_Field json capturedJson
- 这将解析组中捕获的 json 并提取它的字段,因此它们是可搜索的。
上面的代码未针对您的场景进行测试,但我们使用类似的代码来解析也包含 json 的 envoy 日志。
推荐阅读
- sql - 超过最大长度 SQL
- python-3.x - Docker - 将 python 输出写入当前工作目录中的 csv 文件
- c# - 如何使用查询从 cosmos db 中获取最大 id 值
- python - 清理包含多种文本格式的列并创建新列
- python - 如何从终端绘制数据框?
- android - 所有安卓设备都兼容dji SDK mobile吗?
- sage - 在 SageMath 中从 PolynomialRing 转换为其他 PolynomialRing
- android - ListenableWorker 中的 RxJava 执行
- javascript - Google Cloud Function JS 错误:无法将 undefined 或 null 转换为对象
- azure - 使用 aspcore 在 azure blob 中下载和创建空文件夹