json - 从 JSON 中删除字符
问题描述
我尝试用logstash解析一些json,目前我喜欢输入的文件具有以下结构(简化):
-4: {"audit":{"key1":"value1","key2":"value2"}}
-4: {"audit":{"key1":"value1","key2":"value2"}}
因此我需要删除 -4: 前缀以便使用 json 正确解析文件。不幸的是,我不能将 json 编解码器用于输入插件,因为它的 json 格式不正确。因此我对管道的要求是:
- 删除 -4: 前缀
- 将事件编码为 json
- 进行适当的突变
我尝试使用以下管道,这给了我一个解析错误:
input {
tcp {
port => 5001
codec => multiline {
pattern => "^-\d:."
what => previous
}
#codec => json_lines
type => "raw_input"
}
}
filter {
if [type] == "raw_input" {
mutate {
gsub => ["message", "^-\d:.", ""]
}
}
json {
source => "message"
}
mutate {
convert => { "[audit][sequenceNumber]" => "integer" }
add_field => { "test" => "%{[audit][sequenceNumber]}"}
}
}
output {
file {
path => "/var/log/logstash/debug-output.log"
codec => line { format => "%{message}" }
}
}
是否可以使用logstash 实现这一目标?有什么建议怎么做吗?
解决方案
我会使用dissect
过滤器
if [type] == "raw_input" {
dissect {
mapping => {
"message" => "-%{num}: %{msg}"
}
}
}
json {
source => "msg"
}
推荐阅读
- git - mac M1 git pull 显示类 AMSupportURLConnectionDelegate 都在 /usr/lib/libauthinstall.dylib 中实现 两者之一将被使用
- python - VI_ERROR_TMO 当计算机对函数发生器进行查询时
- postgresql - 从几个 csv 上传大型数据库时出错
- javascript - 如何在谷歌工作表上的 2 个工作表之间查找?
- proxy - 将我的名字显示为 ISP,而不是显示我的网络链接或备份
- django - 从另一个开发服务器端口访问时,Django 请求会话值发生变化
- typescript - NestJs 中的异常处理程序
- javascript - 使用(受控)日期输入的浏览器行为差异
- flutter - 颤振警报对话框 setState 没有改变
- python - 如何拥有另一种编程语言的子程序