logstash解析json数组是一种常见的需求,我以网上一组数据为例来描述

我们的数据test.json内容如下:(此处我linux上的json文本需要是compact的)

{"type":"monitor","server":"10.111.222.333","host":"abc.de","bean":[{"name":"beanName1","reseted":"2015-06-05T15:10:00.192Z","method":[{"name":"getAllXY","count":5,"min":3,"max":5},{"name":"getName","count":4,"min":2,"max":4}]},{"name":"beanName2","reseted":"2015-06-05T15:10:00.231Z","method":[{"name":"getProperty","count":4,"min":3,"max":3}]},{"name":"beanName3","reseted":"2015-06-05T15:10:00.231Z"}]}

为了方便看清楚内容,我们format后查看:

{
"type": "monitor",
"server": "10.111.222.333",
"host": "abc.de",
"bean": [{
"name": "beanName1",
"reseted": "2015-06-05T15:10:00.192Z",
"method": [{
"name": "getAllXY",
"count": 5,
"min": 3,
"max": 5
},
{
"name": "getName",
"count": 4,
"min": 2,
"max": 4
}]
},
{
"name": "beanName2",
"reseted": "2015-06-05T15:10:00.231Z",
"method": [{
"name": "getProperty",
"count": 4,
"min": 3,
"max": 3
}]
},
{
"name": "beanName3",
"reseted": "2015-06-05T15:10:00.231Z"
}]
}

我们可以看到bean字段下是一个json数组,解析这种json数组,我们需要借用logstash split filter plugin

测试:单纯地把bean字段下的json拆分出来

我的配置文件如下

input {
file {
path => "/usr/share/logstash/private.cond/split.json"
codec => "json"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
json {
source => "message"
}
split {
field => "bean"
}
} output {
stdout {
codec => rubydebug
}
}

我们得到如下输出结果

{
"@version" => "1",
"server" => "10.111.222.333",
"type" => "monitor",
"bean" => {
"name" => "beanName1",
"method" => [
[0] {
"min" => 3,
"name" => "getAllXY",
"count" => 5,
"max" => 5
},
[1] {
"min" => 2,
"name" => "getName",
"count" => 4,
"max" => 4
}
],
"reseted" => "2015-06-05T15:10:00.192Z"
},
"path" => "/usr/share/logstash/private.cond/split.json",
"@timestamp" => 2018-08-02T10:36:21.248Z,
"host" => "abc.de"
}
{
"@version" => "1",
"server" => "10.111.222.333",
"type" => "monitor",
"bean" => {
"name" => "beanName2",
"method" => [
[0] {
"min" => 3,
"name" => "getProperty",
"count" => 4,
"max" => 3
}
],
"reseted" => "2015-06-05T15:10:00.231Z"
},
"path" => "/usr/share/logstash/private.cond/split.json",
"@timestamp" => 2018-08-02T10:36:21.248Z,
"host" => "abc.de"
}
{
"@version" => "1",
"server" => "10.111.222.333",
"type" => "monitor",
"bean" => {
"reseted" => "2015-06-05T15:10:00.231Z",
"name" => "beanName3"
},
"path" => "/usr/share/logstash/private.cond/split.json",
"@timestamp" => 2018-08-02T10:36:21.248Z,
"host" => "abc.de"
}

根据输出我们可以看到json数组被我单个拆分出来。

Logstash解析Json array的更多相关文章

  1. Logstash 解析Json字符串,删除json嵌套字段

    一.场景:此文以一个简单的json字符串文件为例,描述如何用logstash解析嵌套的json,并删除其中的某些字段 我们在linux中test.json的内容如下: {"timestamp ...

  2. Logstash替换字符串,解析json数据,修改数据类型,获取日志时间

    在某些情况下,有些日志文本文件类json,但它的是单引号,具体格式如下,我们需要根据下列日志数据,获取正确的字段和字段类型 {'usdCnyRate': '6.728', 'futureIndex': ...

  3. [Cannot deserialize JSON array into type] NewtonSoft.Json解析数据出错原因

    今天用NewtonSoft.JSon解析一个天气数据,数据格式如: {"status":1,"detail":"\u6570\u636e\u83b7\ ...

  4. Logstash:解析 JSON 文件并导入到 Elasticsearch 中

    转载自:https://elasticstack.blog.csdn.net/article/details/114383426 在今天的文章中,我们将详述如何使用 Logstash 来解析 JSON ...

  5. Poco::JSON::Array 中object 设置preserveInsertionOrder 时,stringify出错-->深入解析

    在使用poco version 1.6.0时 Poco::JSON::Array 在object  设置preserveInsertionOrder =true 时 调用 array.stringif ...

  6. [转]解析json:与array,list,map,bean,xml相互转化

    一.解析json之net.sf.json 下载地址 使用netsfjson需要导入的包 JSONObject JSONArray JavaBean与json字符串互转 List与json字符串互转 M ...

  7. Xamarin.Android下获取与解析JSON

    一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的 ...

  8. C语言创建及解析Json的使用法则

    参考原文:http://blog.csdn.net/xukai871105/article/details/33013455 JSON(JavaScriptObject Notation)是一种轻量级 ...

  9. 不一样的dynamic解析json 万能方法

    写过javascript的人都知道js解析json 1:(JSON) 字符串转换为对象. var str = '{"name":"lsw","hobb ...

随机推荐

  1. Java 基础之一对象导论

    对象导论 1.1 抽象过程 所有编程语言都提供抽象机制.人们所能解决的问题的复杂性直接取决于抽象的类型和质量. 汇编语言是对底层机器的轻微抽象. 我们将问题空间中的元素及其再解空间中的表示称为对象.这 ...

  2. Jmeter(二十八)_Docker+Jmeter+Gitlab+Jenkins+Ant(容器化的接口自动化持续集成平台)

    这套接口自动化持续集成环境已经部署差不多了,现在说说我的设计思路 1:利用Docker容器化Gitlab,Jenkins,Jmeter,Ant,链接如下 Docker_容器化gitlab Docker ...

  3. monkey测试基础

    一.环境配置 Java JDK和android SDK 二.基本命令 *安卓手机链接电脑,打开手机的开发者模式,允许usb调试 adb:检查adb是否安装成功 adb devices:查看连接的设备 ...

  4. Ceph分布式存储集群-硬件选择

    在规划Ceph分布式存储集群环境的时候,对硬件的选择很重要,这关乎整个Ceph集群的性能,下面梳理到一些硬件的选择标准,可供参考: 1)CPU选择Ceph metadata server会动态的重新分 ...

  5. linux-安装-源码安装

    编译安装 tengine

  6. 关于dreamweaver的软件测评

    最近在用javascript编写程序,于是便用到了dreamweaver .所以,想写一个关于dreamweaver的软件测评. 学生本人使用的是dreamweaver 8.首先,谈谈本人使用感受,打 ...

  7. 同步手绘板——关于/dev/graphics/fb0权限的获取

    需要先将手机进行root,接着通过代码将/dev/graphics/fb0文件修改为可读的权限

  8. 第三次Sprint

    Not CHECKED OUT CHECKED OUT DONE!: SPRINT GOAL: BETA-READY 修改bug 完善界面

  9. 广商博客冲刺第四五天new

    第三天沖刺傳送門 第六七天沖刺傳送門 以上的前台设计架构已经完成了,现在来完成前台的安卓设计. 首先我们配置了Android SDK Manager 使得程序能在安卓环境下运行. 这就完成了前台安卓的 ...

  10. There are no enabled repos.

    今天要记录一下自己懵逼的一天,原来自己是Ubuntu系统,还以为是centos,导致命令错了 There are no enabled repos. Run "yum repolist al ...