logstash split插件的使用(将一个事件拆分成多个事件)
kafka中的原始数据格式(1条数据)
{
"body": {
"cwd": "/home/test/",
"monitor": {
"proc_num": 2,
"procs": [{
"cmd": "",
"cpu_usage_rate": 2.0,
"mem_usage_rate": 3.0,
"pid": 4976,
"procname": "test-name"
}, {
"cmd": "/home/test2",
"cpu_usage_rate": 5.0,
"mem_usage_rate": 6.0,
"pid": 4977,
"procname": "test-name2"
}],
"timestamp": 1547124214814
},
"os_tag": "Linux",
"system": {
"connection": {
"haddr": "00:50:56:B3:7E:7A",
"ip": "192.168.21.80",
"name": "ens160"
},
"cpu": ["Intel Xeon", "Intel Xeon", "Intel Xeon", "Intel Xeon"],
"memory": {
"swap_total": "7918841856",
"total": "15600787456"
},
"uname": "Linux Linux 3.10.0-862.el7.x86_64 x86_64 x86_64",
"vendor": "CentOS 7.5.1804"
}
},
"meta": {
"request_id": "3-14865"
}
}
logstash处理后的数据格式(2条数据)
{
"hostname": "test",
"procs": {
"mem_usage_rate": 2.0,
"cpu_usage_rate": 3.0,
"pid": 4976,
"cmd": "",
"procname": "test-name"
},
"@timestamp": "2019-01-11T02:08:57.225Z",
"memory": {
"total": "3975188480",
"swap_total": "4177522688"
},
"connection": {
"ip": "192.168.31.182",
"name": "ens160",
"haddr": "00:50:56:B3:7E:35"
},
"proc_num": 4
}
{
"hostname": "test",
"procs": {
"mem_usage_rate": 5.0,
"cpu_usage_rate": 6.0,
"pid": 4976,
"cmd": "test",
"procname": "test-name"
},
"connection": {
"ip": "192.168.31.182",
"name": "ens160",
"haddr": "00:50:56:B3:7E:35"
},
"proc_num": 4
}
logstash的配置
input {
kafka {
bootstrap_servers=> "192.168.31.92:9092,192.168.31.93:9092,192.168.31.94:9092"
group_id => "test_group"
topics =>"test_topic"
auto_offset_reset => "earliest"
type => "test_type"
consumer_threads => 1
codec => "json"
}
}
filter{
if !([body][monitor][procs]) {
drop { }
}
mutate {
remove_field => ["body[cwd]","body[os_tag]","body[system][filesystem]","body[system][cpu]","body[system][disk]",
"body[system][has_docker]","body[system][if]","body[system][uname]","body[system][vendor]","meta","url","body[configuration]"]
}
date {
match => ["body[monitor][timestamp]","UNIX_MS"]
remove_field => ["body[monitor][timestamp]"]
}
mutate {
add_field => {
"client_id" => "%{params[client_id]}"
"system" => "%{body[system]}"
"monitor" => "%{body[monitor]}"
}
remove_field => ["body","params"]
}
json {
source => "system"
remove_field => ["system"]
}
json {
source => "monitor"
remove_field => ["monitor"]
}
if ([procs]) {
split {
field => "procs"
}
}
}
output {
elasticsearch {
hosts => ["192.168.21.80:9200"]
index => "test_index"
codec => "json"
}
}
logstash split插件的使用(将一个事件拆分成多个事件)的更多相关文章
- 【jquery】【ztree】节点添加自定义按钮、编辑和删除事件改成自己定义事件
setting添加 edit: { drag: { isCopy: false, isMove: true }, enable: true,//设置是否处于编辑状态 showRemoveBtn: sh ...
- 切割数组 - 将一个数组拆分成多个长度为n的数组
有时候接口返回的数据很长,而前端显示需要分组显示这些数据,这个时候就需要将数组拆分: datas = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; var arrLen ...
- oracle将一个字段拆分成多个值 (regexp_substr函数)
select regexp_substr(p.attributename, '[^,]+',1,level) c1from tablename p connect by level <= len ...
- mysql将一个表拆分成多个表(一)(转载)
转载 直接根据数据量进行拆分 有一个5000条数据的表,要把它变成没1000条数据一个表的5等份. 假设:表名:xuesi 主键:kidxuesi共有5000条数据,kid从1到5000自动增长题目: ...
- Pycharm使用技巧:Split Vertically/Horizontally(垂直/水平拆分窗口)
Split Vertically或者Split Horizontally可以把当前编辑窗口垂直或者水平拆分成两个. 使用: 在编辑窗口中打开你要展示的两个文件(如图中的 "郭靖" ...
- ElasticSearch7.3学习(三十二)----logstash三大插件(input、filter、output)及其综合示例
1. Logstash输入插件 1.1 input介绍 logstash支持很多数据源,比如说file,http,jdbc,s3等等 图片上面只是一少部分.详情见网址:https://www.elas ...
- logstash过滤器插件filter详解及实例
1.logstash过滤器插件filter 1.1.grok正则捕获 grok是一个十分强大的logstash filter插件,他可以通过正则解析任意文本,将非结构化日志数据弄成结构化和方便查询的结 ...
- [Swift]LeetCode842. 将数组拆分成斐波那契序列 | Split Array into Fibonacci Sequence
Given a string S of digits, such as S = "123456579", we can split it into a Fibonacci-like ...
- logstash常用插件解析
官方地址:https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html 配置文件写法: # 日志导入inp ...
随机推荐
- ChromeDriver+Selenium安装
介绍 Selenium是一个自动化测试工具,利用它我们可以驱动浏览器执行特定的动作,如点击.下拉等操作. ChromeDriver是一个Chrome浏览器驱动,用于驱动Chrome浏览器完成相应的操作 ...
- 利用log4net创建日志文件时过滤日志,这是坑还是?
前言 网上貌似没有太多关于log4net过滤日志的资料,在研究过程中发现一点小问题,这里做下记录,希望对后续有用到的童鞋起到一丢丢帮助作用. log4net日志过滤 由于是在.NET Core中使用, ...
- FIND_IN_SET 精确查找
FIND_IN_SET(str,strlist) mysql专为精确匹配字符串而设置的函数 一个字符串列表就是一个由一些被‘,’符号分开的自链组成的字符串 1,2,3,4,5,6,7,8,9: 此函数 ...
- Ant Design Pro路由传值
Ant Design Pro 路由传值 了解Ant Design Pro组件间通讯原理的小伙伴肯定都知道,两个页面之间可以通过Models进行传值,在以往的传值过程中,我都是直接将需要的值直接一股脑的 ...
- 道格拉斯-普克算法(JavaScript实现)
需求: 有时候当移动速度很慢,GPS定位的轨迹点就非常的多,这时候为了缩减数据量,需要将不突出的点去掉. 思路: (1) 在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离. (2)选其最大者与 ...
- 来自PTA Basic Level的三只小野兽
点我阅读原文 最近利用闲暇时间做了一下 PTA Basic Level[1] 里的题,里面现在一共有 95 道题,这些题大部分很基础,对于刷倦了 leetcode 的小伙伴可以去里面愉快的玩耍哦. 这 ...
- React16源码解读:开篇带你搞懂几个面试考点
引言 如今,主流的前端框架React,Vue和Angular在前端领域已成三足鼎立之势,基于前端技术栈的发展现状,大大小小的公司或多或少也会使用其中某一项或者多项技术栈,那么掌握并熟练使用其中至少一种 ...
- 使用RobotFramework的DataBaseLibrary(Java实现)
RobotFramework能用Python和Jython两条腿走路.但有的时候你得选一条.今天就碰上个问题,为了整合其它模块必须用Java实现的DataBaseLibrary 其实实它很简单,记录步 ...
- NumPy排序
numpy.sort()函数 该函数提供了多种排序功能,支持归并排序,堆排序,快速排序等多种排序算法 使用numpy.sort()方法的格式为: numpy.sort(a,axis,kind,orde ...
- Java.数据结构.集合体系详解
I. 第一部分:常见数据结构 首先简单说下数据结构. 什么是数据结构?数据结构就是组织数据的方式. 常见的数据结构:栈,堆,树,图,数组,队列,链表. 这里主要介绍与java集合体系相关的栈.数组和链 ...