需求:input为json,output为ES,需使用filter提取json中的某个字段,并执行加法、加法、乘法等算法操作

思路:mutate过滤器+ruby过滤器实现

避坑:根据ES及Logstash版本 参考官网API

配置:

input

{"timestamp": 1538545228,"rect_id": 205,"serial_no":"OSDC5W9O","location_id":"214_332_123","device_item_id": 113,"device_id": 13,"tenant_id": 2324,"mac_address": "sd3lk2l4l2b4","slave_id": "004","iot_id":"8bf6f72267d951cb87ffd72f982959e1","metric": {"device_status": 0,"g_sensor": 0,"weight": 420,"humidity": 50,"env_temp": 50,"pig_temp": 45,"sow_action": 3,"boar_action": 3,"distance_1": 120,"distance_2": 100,"distance_vertical": 80,"NH3": 0.05,"CO2": 0.1,"illumination": 8.1}}

output

{
"timestamp" => 1538582828,
"rect_id" => 200,
"device_id" => 13,
"@version" => "1",
"tenant_id" => 2324,
"device_item_id" => 113,
"@timestamp" => 2018-10-05T00:45:39.857Z,
"iot_id" => "8bf6f72267d951cb87ffd72f982959e1",
"type" => "logstash-kafka",
"metric" => {
"device_status" => 0,
"g_sensor" => 0,
"humidity" => 50,
"distance_1" => 120,
"weight" => 420,
"pig_temp" => 45,
"sow_action" => 3,
"boar_action" => 3,
"distance_vertical" => 80,
"CO2" => 0.1,
"illumination" => 8.1,
"distance_2" => 100,
"env_temp" => 50,
"NH3" => 0.05
},
"serial_no" => "OSDC5W9O",
"mac_address" => "sd3lk2l4l2b4",
"location_id" => "214_332_123",
"timestamp_origin" => 1538554028,
"slave_id" => "004"
}
input {
kafka {
bootstrap_servers => ["xxxxxx:9092,xxxxxx:9092"] #替换为自己的Kafka集群地址
client_id => "logstash-172.19.100.180"
group_id => "logstash-dev"
auto_offset_reset => "latest" #smallest
consumer_threads => 5
decorate_events => true
topics => ["zds-iot-topic"]
type => "logstash-kafka"
codec => "json"
}
}
filter {
if [type] == "logstash-kafka" {
mutate {
copy => { "timestamp" => "timestamp_origin" }
}
# Add 8 hours
ruby {code => "event.set('timestamp', event.get('timestamp').to_i + 28800)"}
}
} output {
if [type] == "java_log" {
elasticsearch {
hosts => ["xx.xx.xx.xx:9200"]
index => "javaapp_log_index"
}
}
if [type] == "logstash-kafka" {
elasticsearch {
hosts => ["xx.xx.xx.xx:9200"]
index => "iot_data"
document_type => "sensor"
}
}
stdout { }
}

Logstash 算术运算操作的更多相关文章

  1. logstash使用操作部分

    1.logstash的概念及特点.概念:logstash是一个数据采集.加工处理以及传输(输出)的工具.特点: - 所有类型的数据集中处理 - 不同模式和格式数据的正常化 - 自定义日志格式的迅速扩展 ...

  2. 使用logstash从Kafka中拉取数据并传输给elasticsearch且创建相应索引的操作

    注意事项:默认Kafka传递给elastci的数据是在'data'字段,且不包含其他数据,所以需要使用额外的操作进行处理 logstash配置文件操作 input { kafka { bootstra ...

  3. elk系列8之logstash+redis+es的架构来收集apache的日志

    preface logstash--> redis --> logstash --> es这套架构在讲究松耦合关系里面是最简单的, 架构图如下: 解释下这个架构图的流程 首先前端lo ...

  4. elk系列8之logstash+redis+es的架构来收集apache的日志【转】

    preface logstash--> redis --> logstash --> es这套架构在讲究松耦合关系里面是最简单的,架构图如下: 解释下这个架构图的流程 首先前端log ...

  5. 一个logstash引发的连环案,关于logstash提示:Reached open files limit: 4095, set by the 'max_open_files' option or default, files yet to open: 375248

    不多说,直接上问题.版本logstash-2.4.0,启动后提示错误: !!! Please upgrade your java version, the current version '1.7.0 ...

  6. C#知识点记录

    用于记录C#知识要点. 参考:CLR via C#.C#并发编程.MSDN.百度 记录方式:读每本书,先看一遍,然后第二遍的时候,写笔记. CLR:公共语言运行时(Common Language Ru ...

  7. weblogic 12C 数据源配置出错的解决办法

    驱动程序类名称:   11G 10.3.6与12G数据源配置有很大区别,整个一天才搞明白.   如有疑问可留言:http://www.cnblogs.com/endv/p/4110798.html 配 ...

  8. Python数据结构与算法--面向对象

    前面已经讲过,Python是一种面向对象的编程语言. 面向对象编程语言中最重要的特征是允许程序员创建类建立数据模型来解决问题. 我们之前利用抽象数据类型提供的逻辑来描述数据对象 (它的状态) 和功能 ...

  9. x86汇编指令详解

    80x86指令系统 80x86指令系统,指令按功能可分为以下七个部分. (1) 数据传送指令. (2) 算术运算指令. (3) 逻辑运算指令. (4) 串操作指令. (5) 控制转移指令. (6) 处 ...

随机推荐

  1. node启动appium.js

    node启动appium.js,appium.js目录中不能有空格或者(x86)等字样

  2. python‘s second day for me

    in     not in 主要用来检测一些字符串是否存在,或者避免一些字符串 while True: comment = input('请输入你的评论') if '顾清秋' in comment: ...

  3. 代做JSP课程设计,毕业设计

    代做JSP课程设计,毕业设计,大家都是学生,绝对靠谱,有意者加我Q 279283855

  4. C# List对于自定义对象的比较判断

    实际开发中,我们经常会把同类型的一系列对象封装到List集合中,当我们有需要在封装对象到List集合中时,排除重复的对象,这时直接使用: if(!List.Contains(obj)) { List. ...

  5. 11.redis连接

    转自:http://www.runoob.com/redis/redis-tutorial.html Redis 客户端连接 Redis 通过监听一个 TCP 端口或者 Unix socket 的方式 ...

  6. 初识Dash -- 构建一个人人都能够轻松上手的界面,操控数据和可视化

    从事数据科学工作,少不了使用Pandas.scikit-learn这些Python生态系统中的利器,还有就是控制工作流的Jupyter Notebooks,没的说,你和同事都爱用.但是,要想将工作成果 ...

  7. Form表单标签的Enctype属性的作用及应用示例介绍

    Enctype :指定将数据回发到服务器时浏览器使用的编码类型.用于表单里有图片上传. 编码类型有以下三种: application/x-www-form-urlencoded: 在发送前编码所有字符 ...

  8. easyui datagrid combobox下拉框获取数据问题

    最近在使用easyui的datagrid,在可编辑表格中添加一个下拉框,查了下API,可以设置type : 'combobox',来做下拉框,这下拉框是有了,可是这后台数据怎么传过来呢,通过查API可 ...

  9. ios学习杂记

    commond  + alt + enter Xcode分屏.拖动xib连线

  10. C语言中static修饰符的意义

    在C语言中,static通常有2种含义:1)定义变量的生命周期:2)定义变量或者函数的作用域. 变量的生命周期是指,相对于程序运行的进程生命周期,变量存在的时间段.变量的生命周期由变量的存储类型(位置 ...