logstash 解析数组格式json数据:split, json

1,需求说明

===原始数据格式: 1条 (2*2)==》4个指标数据
[{"app":"aa","url":"www.1.com","metrics":[{"name":"cpu","value":11},{"name":"mem","value":1}]},
{"app":"bb","url":"www.2.com","metrics":[{"name":"cpu","value":12},{"name":"mem","value":2}]}]

====> 希望得到的数据格式 =4个指标数据单独为一行
1{
          "name" => "cpu",
           "app" => "aa",
    "@timestamp" => 2024-11-22T05:57:29.671882657Z,
           "url" => "www.1.com",
         "value" => 11
}
2{
          "name" => "mem",
           "app" => "aa",
    "@timestamp" => 2024-11-22T05:57:29.671882657Z,
           "url" => "www.1.com",
         "value" => 1
}
3{
          "name" => "cpu",
           "app" => "bb",
    "@timestamp" => 2024-11-22T05:57:29.672029155Z,
           "url" => "www.2.com",
         "value" => 12
}
4{
          "name" => "mem",
           "app" => "bb",
    "@timestamp" => 2024-11-22T05:57:29.672029155Z,
           "url" => "www.2.com",
         "value" => 2
}

2,logstash 任务配置

[root@t1 test]# cat a.json
[{"app":"aa","url":"www.1.com","metrics":[{"name":"cpu","value":11},{"name":"mem","value":1}]},{"app":"bb","url":"www.2.com","metrics":[{"name":"cpu","value":12},{"name":"mem","value":2}]}]

[root@t1 test]# cat logstash-pipline.conf
input {
    #    kafka {
    #        bootstrap_servers => "localhost:9092"
    #        topics => ["your_topic_name"]
    #        codec => "json"
    #        add_field => {
    #            "source" => "kafka"
    #        }
    #    }
    file {
       path => "/root/test/a.json"  # 指定JSON文件的路径
       start_position => "beginning"  # 从文件的开头开始读取(可选,默认为"end",即从文件末尾开始读取新添加的内容)
       codec => "json"  # 指定文件编码格式为JSON
       sincedb_path => "/dev/null"  # 禁用sincedb文件,以便每次运行时都重新读取整个文件(可选,通常用于调试)
  }
}

filter {
    if [message] { ##拆分message: 大数组
        json {
            source => "message"
            target => "data_array"
        }
        split {
            field => "data_array"
            remove_field => "message"
        }
    }

    split { ##拆分metrics: 小数组
                field => "metrics"
     }
     mutate {
                add_field => {"field1" => "%{metrics}"}
     }
     json {
        source => "field1"
      }
     mutate {
        remove_field => ["field1","metrics","log","host","@version"] #log,host,@version是系统添加的字段
    }
}

output {
  stdout { codec => rubydebug }  # 将数据输出到控制台,并使用rubydebug编解码器进行格式化
}

[root@t1 test]# /data01/logstash-8.7.1/bin/logstash -f /root/test/logstash.conf

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/921376.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(7) 探索Python函数的无限可能:从递归到Lambda的奇妙之旅

欢迎进入Python编程的奇幻世界!在这个课程中,我们将一起探索编程的乐趣,通过生动有趣的方式,培养编程的逻辑思维和创造力,该课程适合有一定基础的中学及以上学生及成年人。 以下是我们课程的大纲: 【Python:趣味编程,探索未来】 目录 1. 前言2. 认识我们的“魔法咒语”…

【深度学习|目标跟踪】DeepSort 详解

DeepSort详解 1、Sort回顾2、DeepSort的状态向量3、DeepSort的外观特征4、DeepSort的track状态5、DeepSort的代价矩阵以及门控矩阵6、DeepSort的级联匹配 1、Sort回顾 查看这篇博客 2、DeepSort的状态向量 Sort中的卡尔曼滤波使用的目标的状态向量是一个7维的向量&#xff0c…

MetaGPT实现多动作Agent

异步编程学习链接 智能体 LLM观察思考行动记忆 多智能体 智能体环境SOP评审路由订阅经济 教程地址 多动作的agent的本质是react,这包括了think(考虑接下来该采取啥动作)act(采取行动) 在MetaGPT的examples/write_…

重学SpringBoot3-Spring Retry实践

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-Spring Retry实践 1. 简介2. 环境准备3. 使用方式3.1 注解方式基础使用自定义重试策略失败恢复机制重试和失败恢复效果注意事项 3.2 编程式使用3.3 监听…

E. Counting Arrays

题意:给定一个长度为n,要求乘积为m,其中组成m的数要求是整数 思路:首先有个很显然的想法:设表示前i个点乘积为j的最小值。因为询问数很多,所以必须离线把所有的东西都处理出来。 转移:&#x…

Leetcode 生命游戏

以下是上述Java代码的算法思想及其逻辑的中文解释: 算法思想 这段代码实现了LeetCode第289题“生命游戏”的解决方案。核心思想是: 利用原地修改的方式(in-place)存储下一状态的变化: 通过引入额外的状态值&#xff0…

文件管理 IV(文件系统)

一、文件系统结构 文件系统(File system)提供高效和便捷的磁盘访问,以便允许存储、定位、提取数据。文件系统有两个不同的设计问题:第一个问题是,定义文件系统的用户接口,它涉及定义文件及其属性、所允许的…

单神经元 PID 解耦控制

单神经元 PID 解耦控制是一种将单神经元自适应控制与解耦控制相结合的方法,适用于多输入多输出(MIMO)系统。其核心是利用单神经元的自适应能力实现 PID 参数在线调整,同时通过解耦策略减少变量之间的相互影响,提高控制…

【青牛科技】电流模式PWM控制器系列--D4870

概述: D4870是用于开关电源的电流模式PWM(PWM)控制器系列产品。 该电路待机功耗低,启动电流低。在待机模式下,电路进入间歇工作模式,从而有效地降低电路的待机功耗。 电路的开关频率为 65KHz,抖动的振荡频率&…

【8210A-TX2】Ubuntu18.04 + ROS_ Melodic + TM-16多线激光 雷达评测

简介:介绍 TM-16多线激光雷达 在8210A载板,TX2核心模块环境(Ubuntu18.04)下测试ROS驱动,打开使用RVIZ 查看点云数据,本文的前提条件是你的TX2里已经安装了ROS版本:Melodic。 大家好,…

计算机毕设-基于springboot的高校网上缴费综合务系统视频的设计与实现(附源码+lw+ppt+开题报告)

博主介绍:✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围:Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

在 macOS 和 Linux 中,波浪号 `~`的区别

文章目录 1、在 macOS 和 Linux 中,波浪号 ~macOS示例 Linux示例 区别总结其他注意事项示例macOSLinux 结论 2、root 用户的主目录通常是 /root解释示例切换用户使用 su 命令使用 sudo 命令 验证当前用户总结 1、在 macOS 和 Linux 中,波浪号 ~ 在 macO…

【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器

1.实验目的 通过实验课程与理论课的学习深入理解掌握的触发器的原理、创建、修改、删除、基本的使用方法、主要用途,并且可以在练习的基础上,熟练使用触发器来进行数据库的应用程序的设计;深入学习深刻理解与触发器相关的T-SQL语句的编写的基…

小程序24-滚动效果:scroll-view组件详解

在微信小程序中如果想实现内容滚动,需要使用 scroll-view 组件 scroll-view:可滚动视图区域,适用于需要滚动展示内容的场景,用户可以通过手指滑动或者点击滚动条滚动内容。 scroll-x允许横向滚动scroll-y允许纵向滚动 实现横向…

Leetcode 分发糖果

这段代码的算法思想是 贪心算法,通过两次遍历,分别从左到右、从右到左调整糖果分配,以满足题目中相邻评分较高的孩子必须获得更多糖果的要求,并最终计算出最少需要分配的糖果总数。 以下是代码的详细思想与执行过程: …

39页PDF | 毕马威_数据资产运营白皮书(限免下载)

一、前言 《毕马威数据资产运营白皮书》探讨了数据作为新型生产要素在企业数智化转型中的重要性,提出了数据资产运营的“三要素”(组织与意识、流程与规范、平台与工具)和“四重奏”(数据资产盘点、评估、治理、共享)…

【Redis_Day5】String类型

【Redis_Day5】String类型 String操作String的命令set和get:设置、获取键值对mset和mget:批量设置、获取键值对setnx/setex/psetexincr和incrby:对字符串进行加操作decr/decrby:对字符串进行减操作incrbyfloat:浮点数加…

linux安装mysql57——笔记

rpm -qa | grep mysql有东西就rpm -e 文件名 下载 wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm安装 yum -y install mysql57-community-release-el7-10.noarch.rpm安装 yum -y install mysql-community-server如果出现Error: GPG c…

基于Java Springboot高校会议室预订管理系统

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据…

基于 NCD 与优化函数结合的非线性优化 PID 控制

基于 NCD 与优化函数结合的非线性优化 PID 控制 1. 引言 NCD(Normalized Coprime Factorization Distance)优化是一种用于非线性系统的先进控制方法。通过将 NCD 指标与优化算法结合,可以在动态调整控制参数的同时优化控制器性能。此方法特别…