Elastic学习之旅 (10) Logstash数据采集
大家好,我是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核心技术与实战》

Elastic学习之旅 (10) Logstash数据采集的更多相关文章
- 笔记-JavaWeb学习之旅10
Servlet server applet运行在服务器端的小程序,servlet就是一个接口,定义了Java类被浏览器访问到的规则(Java类重写这个接口,就可以被浏览器(tomcat)识别) Ser ...
- hadoop学习之旅1
大数据介绍 大数据本质也是数据,但是又有了新的特征,包括数据来源广.数据格式多样化(结构化数据.非结构化数据.Excel文件.文本文件等).数据量大(最少也是TB级别的.甚至可能是PB级别).数据增长 ...
- WCF学习之旅—第三个示例之二(二十八)
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
- WCF学习之旅—WCF服务的Windows 服务程序寄宿(十一)
上接 WCF学习之旅—WCF服务部署到IIS7.5(九) WCF学习之旅—WCF服务部署到应用程序(十) 七 WCF服务的Windows 服务程序寄宿 这种方式的服务寄宿,和IIS一样有一个一样 ...
- WCF学习之旅—第三个示例之五(三十一)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) WCF学习之旅—第三个示例之三(二十九) WCF学习 ...
- Hadoop学习之旅三:MapReduce
MapReduce编程模型 在Google的一篇重要的论文MapReduce: Simplified Data Processing on Large Clusters中提到,Google公司有大量的 ...
- WCF学习之旅—WCF第二个示例(五)
二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对 ...
- 【转】基于 Android NDK 的学习之旅-----数据传输(引用数据类型)
原文网址:http://www.cnblogs.com/luxiaofeng54/archive/2011/08/20/2147086.html 基于 Android NDK 的学习之旅-----数据 ...
- 我的Android学习之旅(转)
去年大概在七月份的时候误打误撞接触了一阵子Android,之后由于工作时间比较忙,无暇顾及,九月份的时候自己空闲的时间比较多,公司相对来说加班情况没以前严重.开启了个人的Android学习之旅,初衷是 ...
- 开发了5年android,我开始了go学习之旅
前言 做了近5年的android开发,最近项目也是不怎么忙,空闲的时候总会思考一些事情,不过作为移动开发,我个人觉得很有必要学习后台开发,由于公司是Go语言开发的,了解go语言一段时间后,我发现go语 ...
随机推荐
- 冒泡排序--java进阶day06
1.冒泡排序 https://kdocs.cn/l/ciMkwngvaWfz?linkname=150996835 我们会发现上图排序的样子非常像之前打印的倒三角,所以,冒泡排序也需要使用循环嵌套 2 ...
- 抽象类的注意事项、abstract关键字的冲突--java进阶day02
1.注意事项 1.抽象类不允许创建对象 2.抽象类存在构造方法 3.抽象类中可以存在普通成员方法 4.抽象类的子类存在两种处理方式 第一种不多解释,主要讲第二种,子类继承了抽象类,相当于子类里面有了抽 ...
- 【逆向】修改LightCycler® 96文件Summary日期
修改LightCycler 96文件Summary日期 零.需求 来自我的一个朋友 她是要准备改某个软件(LightCycler 96)保存的数据(时间和日期),当时得知此意图后心里已经判了8成不能改 ...
- 请确保在应用程序配置文件的“entityFramework”节中注册了该提供程序
Exception information: Exception type: MetadataException Exception message: 指定的架构无效. 错误: Model.LW.OT ...
- Dify开发必备:分享8个官方文档不曾解释的关键技巧
Dify 是一个帮助你快速搭建 AI 应用的工具,其定位类似Coze.但相比Coze--Dify是免费的.开源的,人人都可以用.哪怕你不懂编程,也能用它参与到 AI 应用的设计和使用中.总之,如果你是 ...
- BotSharp 5.0 MCP:迈向更开放的AI Agent框架
一.引言 在人工智能快速发展的时代,AI Agent(人工智能代理)作为一种能够自主感知环境.决策并执行动作的实体,在众多领域展现出了巨大的潜力.BotSharp 是一个功能强大的开源项目,由 Sci ...
- 🎀avif转png在线工具推荐
简介 本文为avif格式图片转png图片在线工具推荐 工具 https://convertio.co/zh/avif-png/ 使用 上传avif图片 选择转换的格式 点击转换 下载 结束
- Laravel配置Route调用artisan
//web调用artisan Route::get('/artisan', function(\Illuminate\Http\Request $request) { $all = \Illumina ...
- 特殊符号大全,特殊字符、emoji符号收藏,可复制直接使用
收藏包含:特殊符号.emoji符号.编号序号.数学符号.上标下标.标点符号.货币符号.箭头符号.国旗符号等 ❥웃유☮☏☢☠♚▲♪✞÷↑↓◆◇⊙■□△▽¿─│❣♂♀☿Ⓐ✍☣☤✘☒♛▼♫⌘☪≈←→◈◎☉★ ...
- 单元测试(一)——xUnit
一.为什么要做单元测试 可以频繁测试 比人工测试要快 测试代码和人工代码紧密结合 测试结果非常可靠 更容易更快发现错误 二.测试坐标图 一般开发会做单元测试和集成测试 三.测试分成三个阶段 四.Xun ...