大家好,我是Edison。

上一篇:结构化搜索

Logstash是啥?

Logstash是一款优秀的开源ETL工具/数据搜集处理引擎,可以对采集到的数据做一系列的加工和处理,目前已支持200+插件具有比较成熟的生态。

下图展示了Logstash的上下游主流生态:

Logstash不仅可以从日志中获取数据,才可以从Kafka 甚至是 数据库中采集数据。采集到数据之后,可以转发给ElasticSearch(最常见的场景),也可以转发给MongoDB等。

Logstash的核心概念

第一个概念:Logstash Pipeline

Logstash的Pipeline包含了 input(采集) - filter(转换) - output(输出) 三个阶段的处理流程。

第二个概念:Logstash Event

数据在Pipeline内部流转时的具体表现形式就是Event,数据在input阶段被转换为Event,而在output阶段被转化成目标格式数据。

我们可以通过下图来了解Logstash的基本架构:input-filter-output三个阶段,每个阶段都可以使用一些常用插件来实现一些功能。

Logstash的配置文件

我们知道了Logstash的核心是input-filter-output的三阶段pipeline,那么对于Logstash我们要做的就是定义这个pipeline要做什么,因此我们可以来看看它的配置文件结构,如下图所示的一个logstash配置文件:

input:使用了stdin插件读取控制台的内容作为输入;

filter:使用了grok和date插件对输入的数据做了格式化的处理转换;

output:使用了elasticsearch插件将解析后的数据发送到elasticsearch,并通过stdout插件对解析后的数据调用rubydebug做一个输出;

从上面的介绍可以看出,一个Logstash Pipeline的每个阶段都可以用多个插件,完全取决于你的业务需求。

这时候,我们再来看看我们在 快速搭建ELK 中的logstash配置文件时,是不是就容易理解了?

input {
file {
path => "/usr/local/elastic/elk7/logstash-7.1.0/bin/movies.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["id","content","genre"]
} mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
} mutate { split => ["content", "("]
add_field => { "title" => "%{[content][0]}"}
add_field => { "year" => "%{[content][1]}"}
} mutate {
convert => {
"year" => "integer"
}
strip => ["title"]
remove_field => ["path", "host","@timestamp","message","content"]
} }
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "movies"
document_id => "%{id}"
}
stdout {}
}

小结

本篇,我们了解了ElasticSearch中的数据采集神器Logstash的核心概念和基本架构,并通过一个简单的Logstash配置文件了解了如何定义Pipeline。通过使用常用的插件,基本可以满足我们日常的需求!

参考资料

极客时间,阮一鸣,《ElasticSearch核心技术与实战

作者:周旭龙

出处:https://edisonchou.cnblogs.com

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

Elastic学习之旅 (10) Logstash数据采集的更多相关文章

  1. 笔记-JavaWeb学习之旅10

    Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...

  2. hadoop学习之旅1

    大数据介绍 大数据本质也是数据,但是又有了新的特征,包括数据来源广.数据格式多样化(结构化数据.非结构化数据.Excel文件.文本文件等).数据量大(最少也是TB级别的.甚至可能是PB级别).数据增长 ...

  3. WCF学习之旅—第三个示例之二(二十八)

    上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1)  使用NuGet下载最新版的Entity Fram ...

  4. WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)

    上接    WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) 七 WCF服务的Windows 服务程序寄宿 这种方式的服务寄宿,和IIS一样有一个一样 ...

  5. WCF学习之旅—第三个示例之五(三十一)

       上接WCF学习之旅—第三个示例之一(二十七)               WCF学习之旅—第三个示例之二(二十八)              WCF学习之旅—第三个示例之三(二十九) WCF学习 ...

  6. Hadoop学习之旅三:MapReduce

    MapReduce编程模型 在Google的一篇重要的论文MapReduce: Simplified Data Processing on Large Clusters中提到,Google公司有大量的 ...

  7. WCF学习之旅—WCF第二个示例(五)

    二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对 ...

  8. 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)

    原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...

  9. 我的Android学习之旅(转)

    去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...

  10. 开发了5年android,我开始了go学习之旅

    前言 做了近5年的android开发,最近项目也是不怎么忙,空闲的时候总会思考一些事情,不过作为移动开发,我个人觉得很有必要学习后台开发,由于公司是Go语言开发的,了解go语言一段时间后,我发现go语 ...

随机推荐

  1. 常见的 AI 模型格式

    来源:博客链接 过去两年,开源 AI 社区一直在热烈讨论新 AI 模型的开发.每天都有越来越多的模型在 Hugging Face 上发布,并被用于实际应用中.然而,开发者在使用这些模型时面临的一个挑战 ...

  2. 【大数据】HBase 集群部署:全流程详细步骤解析

    [大数据]HBase 集群部署:全流程详细步骤解析 前言 本文帮助你从零搭建一个三台机器(虚拟机)的HBase集群,适用于大数据专业或者用到HBase的同学查看,由于操作步骤过多,特此记录,完整操作过 ...

  3. tesseract引擎RVV代码学习笔记

      Tesseract 是一个开源的 OCR(Optical Character Recognition,光学字符识别)引擎,可将图像中的文本转换为机器可读的文本格式.由于组内曾经有同事为这个项目贡献 ...

  4. C#(如何解决使用enum和struct作为Dictionary的TKey带来的GC

  5. 又来一个挑战 Elastic 的,初识 SigLens

    Elastic Stack 在日志领域具备无与伦比的地位,各类新兴的开源项目都声称比 Elastic 更节省资源,同时检索速度也不慢,比如 ClickHouse.Loki.OpenObserve.VM ...

  6. cocos3.x creator常见问题及解决办法

     原文地址: cocos3.x creator剪切.动画.物理引擎.碰撞检测等常见问题及解决办法 - 搜栈网 (seekstack.cn)https://www.seekstack.cn/post/4 ...

  7. 《Deep Learning Inference on Embedded Devices: Fixed-Point vs Posit》(一)

    After the success of performing deep learning inference by using an 8-bit precision representation o ...

  8. Modbus-RTU报文结构及常用功能码详解

    Modbus-RTU报文结构及常用功能码 Modbus是一种串行通讯协议,是Modicon公司(现在的施耐德电气)于1979年为使用可编程逻辑控制器(PLC)通信而发表的.现在的Modbus协议已经成 ...

  9. 三维装箱问题(3D Bin Packing Problem, 3D-BPP)

    提出问题 集装箱海运家具, 沙发, 茶几, 椅子等等, 有多少套家具,以及每个家具的长宽高都会告诉你. 把所有的家具都装进集装箱里, 要求通过算法算出一共需要多少集装箱. 1.要考虑怎样装, 需要的集 ...

  10. 记录一次SpringBoot + Vue前后分离项目的部署流程

    前言 本教程使用黑马 SpringBoot3+Vue3全套视频教程 大事件项目作为前后端代码. 前置需要: mysql jdk redis nginx linux环境 打包 前端 构建项目命令 npm ...