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插件的使用(将一个事件拆分成多个事件)的更多相关文章

  1. 【jquery】【ztree】节点添加自定义按钮、编辑和删除事件改成自己定义事件

    setting添加 edit: { drag: { isCopy: false, isMove: true }, enable: true,//设置是否处于编辑状态 showRemoveBtn: sh ...

  2. 切割数组 - 将一个数组拆分成多个长度为n的数组

    有时候接口返回的数据很长,而前端显示需要分组显示这些数据,这个时候就需要将数组拆分: datas = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; var arrLen ...

  3. oracle将一个字段拆分成多个值 (regexp_substr函数)

    select regexp_substr(p.attributename, '[^,]+',1,level) c1from tablename p connect by level <= len ...

  4. mysql将一个表拆分成多个表(一)(转载)

    转载 直接根据数据量进行拆分 有一个5000条数据的表,要把它变成没1000条数据一个表的5等份. 假设:表名:xuesi 主键:kidxuesi共有5000条数据,kid从1到5000自动增长题目: ...

  5. Pycharm使用技巧:Split Vertically/Horizontally(垂直/水平拆分窗口)

    Split Vertically或者Split Horizontally可以把当前编辑窗口垂直或者水平拆分成两个. 使用: 在编辑窗口中打开你要展示的两个文件(如图中的  "郭靖" ...

  6. ElasticSearch7.3学习(三十二)----logstash三大插件(input、filter、output)及其综合示例

    1. Logstash输入插件 1.1 input介绍 logstash支持很多数据源,比如说file,http,jdbc,s3等等 图片上面只是一少部分.详情见网址:https://www.elas ...

  7. logstash过滤器插件filter详解及实例

    1.logstash过滤器插件filter 1.1.grok正则捕获 grok是一个十分强大的logstash filter插件,他可以通过正则解析任意文本,将非结构化日志数据弄成结构化和方便查询的结 ...

  8. [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 ...

  9. logstash常用插件解析

    官方地址:https://www.elastic.co/guide/en/logstash-versioned-plugins/current/index.html 配置文件写法: # 日志导入inp ...

随机推荐

  1. WIN10高清壁纸

    下面给大家分享我自己收集的WIN10的壁纸(大家可以存在在自己网盘里) 百度网盘下载 提取码:dsf5

  2. vue不常用到的v-model修饰符

    v-model的input事件同步输入框的数据根据输入的内容实时改变.v-model.lazy则是与change事件同步,即失去焦点或是回车才更新 v-model.number 将输入的数字转换为Nu ...

  3. echarts更改折线图区域颜色、折线颜色、折点颜色

    series : [ { name:'订单流入总数', type:'line', stack: '总量', areaStyle: { normal: { color: '#8cd5c2' //改变区域 ...

  4. 优化webpack构建时间的小技巧

    在之前工作的地方,我们一直使用webpck去构建.但是,经过长达四年的更新迭代,每个人都在同一个项目中做了不同的操作和更新,这导致我们生产构建时间达到了惊人的一分半,watch模式的rebuild也达 ...

  5. 深入理解 CSS(Cascading Style Sheets)中的层叠(Cascading)

    标题中的 Cascading 亦可以理解为级联. 进入正文,这是一个很有意思的现象.可以直接跳到 总结一下 部分,看完再回过头来阅读本文. 引子 假设我们有如下结构: <p class=&quo ...

  6. bzoj_1036 树链剖分套线段树

    bzoj_1036 ★★★★   输入文件:bzoj_1036.in   输出文件:bzoj_1036.out   简单对比时间限制:1 s   内存限制:162 MB [题目描述] 一棵树上有n个节 ...

  7. 简单的 FFT 变形 - BZOJ 2194

    「BZOJ2194」快速傅立叶之二 2015年4月29日3,8300 Description 请计算C[k]=sigma(a[i]*b[i-k]) 其中 k < = i < n ,并且有 ...

  8. 使用远程接口库进一步扩展Robot Framework的测试能力

    引言: Robot Framework的四层结构已经极大的提高了它的扩展性.我们可以使用它丰富的扩展库来完成大部分测试工作.可是碰到下面两种情况,仅靠四层结构就不好使了: 1.有些复杂的测试可能跨越多 ...

  9. [LOJ#3022][网络流]「CQOI2017」老 C 的方块

    题目传送门 定义有特殊边相邻的格子颜色为黑,否则为白 可以看出,题目给出的限制条件的本质是如果两个小方块所在的格子 \(x\) 和 \(y\) 为两个相邻的黑格,那么 \(x\) 和 \(y\) 之间 ...

  10. Elasticsearch如何修改Mapping结构并实现业务零停机

    Elasticsearch 版本:6.4.0 一.疑问 在项目中后期,如果想调整索引的 Mapping 结构,比如将 ik_smart 修改为 ik_max_word 或者 增加分片数量 等,但 El ...