logging - 在 Fluentd 中将字符串参数解析为 json
问题描述
我正在使用 Fluentd 从文件中流式传输日志并将它们推送到 MongoDB。我做了一些如下配置,但无法将字符串提取为 json。
这是系统写入文件的示例日志
2021-10-11T12:29:08.0328851Z stdout F {"level":"info","msg":"[map[counter:148] Basic counter is counting]","time":"2021-10-11T12:29:08.032Z"}
这是流畅的配置
<source>
@type tail
path /var/log/containers/*.log
pos_file fluentd-docker.pos
read_from_head true
tag kubernetes.*
exclude_path ["/var/log/containers/fluent*"]
<parse>
@type multi_format
<pattern>
format json
time_key time
time_type string
time_format "%Y-%m-%dT%H:%M:%S.%NZ"
keep_time_key false
</pattern>
<pattern>
format regexp
expression /^(?<time>.+) (?<stream>stdout|stderr)( (?<logtag>.))? (?<log>.*)$/
time_format '%Y-%m-%dT%H:%M:%S.%N%:z'
keep_time_key false
</pattern>
</parse>
</source>
<match **>
@type mongo
host "#{ENV['FLUENT_MONGO_HOST']}"
port "#{ENV['FLUENT_MONGO_PORT']}"
database admin
collection logs
# for capped collection
capped
capped_size 1024m
# authentication
user "#{ENV['FLUENT_MONGO_USER']}"
password "#{ENV['FLUENT_MONGO_PASSWORD']}"
<inject>
# key name of timestamp
time_key time
</inject>
<buffer>
# flush
flush_interval 10s
</buffer>
</match>
这是输出
我想丢弃流、日志标签和日志字段。
这就是我要的:
{
"level" : "info",
"msg" : "Test message"
"time" : 2021-10-11T12:46:15.376+00:00
}
解决方案
推荐阅读
- android - Android - 我的应用替换了共享其内容的应用
- android - 如何使 AppBarLayout Drawable 背景分布在状态栏上?
- excel - Excel:未应用条件格式
- maps - 在 Mapbox 中添加监听器 Google 地图
- c# - 在 html actionlink 中使用 Replace
- javascript - AngularJs if ng-href 和 colpase ng-href 中的语句
- javascript - 查找出现奇数次的整数
- android - 在 React Native 中没有触发 React Navigation 'beforeRemove' 事件
- postman - 为什么创建 Postman 文档时 JSON 正文显示不正确?
- php - 如何从 PHP 中的字符串中获取第一个非重复字符?