输入-
[{"id": 23232, "user_name__v": "[email protected]", "data_type__v": "full__v", "token_id__v": 43434, "last_login__v": "2023-10-18T09:19:41.000Z", "active__v": true, "profile_type__v": "us_document_bulk_action_users_with_creat__c"}, {"id": 17685499, "user_name__v": "[email protected]", "data_type__v": "full__v", "token_id__v": 566, "last_login__v": "2023-10-18T09:18:56.000Z", "active__v": true, "profile_type__v": "busineess"}, {"id": 343434, "user_name__v": "[email protected]", "data_type__v": "full__v", "token_id__v": 37431, "last_login__v": "2023-11-01T07:39:00.000Z", "active__v": true, "profile_type__v": "it_actions__c"}]
配置文件过滤器 -
filter {
json {
source => "message"
target => "message"
}
mutate {
add_field => {
"app" => "TestingApp"
"job" => "cronData"
}
}
mutate {
remove_field => [ "event" ]
}
}
我无法将此 json 数组转换为 json 对象,我尝试拆分它,但没有按预期工作。
所需输出:Json 格式,可在 Loki 中使用基本转换来创建表数据/时间序列。
我尝试过拆分,但没有按预期工作。
您只需要在输入上应用 json 过滤器
filter {
json {
source => "array_input"
target => "parsed_array"
remove_field => "array_input"
}
ruby {
code => "event.get('parsed_array').each { |kv| event.set(kv['Field'], kv['Value']) }"
}
}
如果我没记错的话,我想这样解释你的问题。
我想一一解决您在这个问题中遇到的问题。
解决方案1: 首先,json 文件中的每个对象必须位于一行中,如下所示。
{"id":1,"something":"text1"}
{"id":2,"something":"text2"}
{"id":3,"something":"text3"}
解决方案2: 要拆分 json 文件,我们可以使用 split 将每个 json 对象转换为单独的事件。
解决方案3: 为了生成时间序列数据,Loki 需要一个时间戳。数据中的“last_login__v”字段应设置为@timestamp。
配置文件:
filter {
json {
source => "message"
target => "message"
}
split {
field => "[message]"
}
date {
match => ["[message][last_login__v]", "ISO8601"]
target => "@timestamp"
}
mutate {
add_field => {
"app" => "TestingApp"
"job" => "cronData"
}
}
mutate {
remove_field => [ "event" ]
}
}
希望对您有帮助