概述及执行流程
集中、转换和存储数据
官方文字说明:Logstash是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。
整体的功能其实是一个管道
一端是存储数据的位置:ES
另外一端是外部,被称为数据源,一般叫DS,是一些数据
可能是代码、应用等都有可能
logStash中被分为三段:
最左侧是input
:相当于创建了一个服务器当前logStash安装在某一个ip地址,input监听一个端口port;外部系统将要存储的数据通过ip和port编译进来。
中间的一块叫filter,过滤器
:功能就是将外部系统输入的数据做一些转换,转为想要输出的结果样式最右侧是output
:这不是一个服务而是一个应用,这是logStash就变为客户端了,它用输出去连接es,像es的某一个索引去写数据
总结:
- 外部可以有若干个应用去连接这个port,这个服务器也可以开启若干个端口port,可以有不同的input对应不同的filter,有不同的output
logStash是一个集中处理的单元(一个服务),可以将若干不同的应用的数据收集起来,通过filter做转换,转换完成以后将其结果数据存储到es中
使用Logstash原因
日志:
- 分析用户行为;
- 分析异常问题:数据的恢复
将这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。
所以日志集中管理功能就可以使用ELK技术栈进行实现。Elasticsearch只有数据存储和分析的能力,Kibana就是可视化管理平台。还缺少数据收集和整理的角色,这个功能就是Logstash负责的
。
工作原理
Data Source
Logstash支持的数据源有很多(文本、网络类型、文件类型等)。例如对于日志功能来说只能能有日志记录和日志传递功能的日志都支持,Spring Boot 中默认推荐logback支持日志输出功能(输出到数据库、数据出到文件)。
springoot如下所示,其输出的就是logback日志
我们就使用logback进行日志输出给Logstash。
对于Logstash来说,Data Source不是数据库DB,而是数据的来源
Logstash Pipeline
整个整体就是 Logstash的功能。
一个logstash中可以启动多个Logstash Pipeline
在Logstash中包含非常重要的三个功能:
- Input
输入源,一般配置为自己监听的主机及端口。DataSource向指定的ip及端口输出日志,input 输入源监听到数据信息就可以进行收集。
- Filter
过滤功能,对收集到的信息进行过滤(额外处理),也可以省略这个配置(不做处理) ,
这个配置不是必要的
- Output
把收集到的信息发送给谁。在ELK技术栈中都是输出给Elasticsearch,后面数据检索和数据分析的过程就给Elasticsearch 了。
最终效果:通过整体步骤就可以把原来一行日志信息转换为Elasticsearch支持的Document形式(键值对形式)的数据进行存储。