当前位置: 首页 > news >正文

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"  # 指定文件编码格式为JSONsincedb_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
http://www.lryc.cn/news/490043.html

相关文章:

  • Linux的开发工具(二)
  • Bokeh实现大规模数据可视化的最佳实践
  • Oracle表碎片整理与优化
  • 【华为云函数工作流】python的函数中如何获取请求链接中带的参数
  • 最新Kali安装详细版教程(附安装包,傻瓜式安装教程)
  • 【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用
  • 66 mysql 的 表自增长锁
  • 神经网络问题之一:梯度消失(Vanishing Gradient)
  • 企业网页设计的安全与数据保护
  • 对 TypeScript 中类是怎么理解的?都有哪些应用场景?
  • 2024“龙信杯“电子数据取证竞赛-服务器取证题目Writeup
  • Label-studio-ml-backend 和YOLOV8 YOLO11自动化标注,目标检测,实例分割,图像分类,关键点估计,视频跟踪
  • Elasticsearch Windows版的安装及启动
  • 解决 VMware 嵌套虚拟化提示 关闭“侧通道缓解“
  • 基于Redis实现的手机短信登入功能
  • C# NetworkStream用法
  • 华三预赛从零开始学习笔记(每日编辑,复习完为止)
  • MySQL基础大全(看这一篇足够!!!)
  • [ 应急响应进阶篇-2 ] Linux创建后门并进行应急处置-1:超级用户帐号后门
  • 【无人机/平衡车/机器人】详解STM32+MPU6050姿态解算—卡尔曼滤波+四元数法+互补滤波
  • 数据结构-8.Java. 七大排序算法(上篇)
  • YOLOV5/rknn生成可执行文件部署在RK3568上
  • java http body的格式 ‌application/x-www-form-urlencoded‌不支持文件上传
  • GPU服务器厂家:为什么要选择 GPU 服务器?
  • Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)
  • Idea忽略提交文件、Idea设置文件隐藏、Idea提交时隐藏部分文件、git提交时忽略文件
  • python如何使用spark操作hive
  • 观察者模式和订阅模式
  • 基于ToLua的C#和Lua内存共享方案保姆级教程
  • OpenCV与AI深度学习|16个含源码和数据集的计算机视觉实战项目(建议收藏!)