Logstash收集多数据源数据神器

简介: Logstash收集多数据源数据神器

前言



Logstash很多老铁,vip会员等在用,这里对于已经会用的老铁可以复习下,不会用老铁,可以通过这篇文章来学习。本文从它的价值,也就是为何会产生Logstash,它能干什么,到它是如何设计的,也就是它的架构原理方面学习,到最后该如何实现Logstash的细节,也就是我们该如何让Logstash来工作,通过各种配置,来定制和控制我们的Logstash。


第一部分为何产生



1.Logstash是什么?


Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地进行存储。

9879bddb58180fe11cdd51de179726a9.png我们可以看到可以搜集多种类型的数据,而且能够把他们标准化,然后发往目的地。对于这些数据,可以用来分析、归档、监控、报警灯。


第二部分设计实现



2.工作流程

分为三个阶段


3fc516d0e4f5ed0e6598213b5a174947.png

处理流



c6b2a1d551ef1a126b7d22081d492614.pngpipeline本质

pipeline 是input-filter-output的三个阶段的处理流程,包含队列管理、插件生命周期管理。



logstash 数据以event的方式流转

原始数据进入logstash后在内部流转并不是以原始数据的形式流转,在input处被转换为event,在output event处被转换为目标格式的数据。可在配置文件中对其进行增删改查操作。


c11fc74b5f9885a12a210253b32cc77d.png

logstash数据流转示例


(1)通过配置文件控制流转

060c98e73d4e314dbfdfdf6d24134805.png


其数据转换过程如下:

0fc76794182c6c6d5e61fa728ee2b048.png

12567d5d6e9b5fb845889b2a756f474f.png

命令运行

echo -e "foo\nbar" | ./bin/logstash -f codec.conf


3.Logstash工作流总结

Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,我们最喜欢的是Elasticsearch)


输入:多数据源

数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。


过滤器:在线实时转换处理

数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。


Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响:


  • 利用 Grok 从非结构化数据中派生出结构
  • 从 IP 地址破译出地理坐标
  • 将 PII 数据匿名化,完全排除敏感字段
  • 整体处理不受数据源、格式或架构的影响


bbd21617a906a735cb4dd687aedfdb0c.png



输出:选择你的存储,导出你的数据


尽管 Elasticsearch 是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。


Logstash 提供众多输出选择,可以将数据发送到指定的地方,并且能够灵活地解锁众多下游用例。


92c9700aef6c04e6154e72ca0c015494.png


4.logstash架构




logstash6.x架构

47677d6f8c009961f85e1a8f6fda281e.png


箭头代表数据流向。可以有多个input。中间的queue负责将数据分发到不同的pipline中,每个pipline由batcher,filter和output构成。batcher的作用是批量从queue中取数据(可配置)。



logstash数据流历程

首先有一个输入数据,例如是一个web.log文件,其中每一行都是一条数据。file imput会从文件中取出数据,然后通过json codec将数据转换成logstash event。


这条event会通过queue流入某一条pipline处理线程中,首先会存放在batcher中。当batcher达到处理数据的条件(如一定时间或event一定规模)后,batcher会把数据发送到filter中,filter对event数据进行处理后转到output,output就把数据输出到指定的输出位置。


输出后还会返回ACK给queue,包含已经处理的event,queue会将已处理的event进行标记。


队列详解


1.queue分类

In Memory

在内存中,固定大小,无法处理进程crash、机器宕机等情况,会导致数据丢失。


Persistent Queue In Disk

可处理进程crash情况,保证数据不丢失。保证数据至少消费一次;充当缓冲区,可代替kafka等消息队列作用。


Persistent Queue(PQ)处理流程

1、一条数据经由input进入PQ,PQ将数据备份在disk,然后PQ响应input表示已收到数据;

2、数据从PQ到达filter/output,其处理到事件后返回ACK到PQ;

3、PQ收到ACK后删除磁盘的备份数据;



第三部分具体实现




logstash设置相关配置文件

logstash设置相关配置文件主要位于conf配置文件下,在logstash启动时使用。


logstash.yml

logstash相关配置,如node.name,path.data等。其中这些配置的参数可以被命令行参数覆盖。


jvm.options

jvm相关参数,比如heap、size等。


pipeline配置文件

定义数据处理流程的文件,一般是用户自定义,以.conf结尾。



logstash.yml常见配置项


8305630955b357922a05ea3bbae6128f.png

37dbceb519096e9d50e5b7c618b1a434.png

logstash命令行配置



95b9022f9c999dfc88f598a85fb8399e.png


pipeline配置


pipeline用于配置input、filter、output插件,框架如下:


7254e7668e2040c9d06fd8d12065e2f0.png

配置语法

数值类型

706e65f6040d8ab3d4d9fcb3abe5da57.png1687304820ff2db60ad455c681541e68.png


注释

00529e3e08c1fea159a022c61674fb27.png


引用logstash event的属性(字段)


在配置中可以引用logstash event的属性(字段),方式如下:

1、直接引用字段

2、在字符串中以sprintf方式引用


12c58e18cbc270f8a14c76786e4b281a.png

cc838f215bf5b28769b97fec8c61d9f3.png

条件判断

支持条件判断语法,从而扩展了配置的多样性

291a16f5bf8c96c9883ff55b3dbccd9b.png

其中表达式操作符如下:

b50b6f98d3f892f170881848a423724f.png

配置示例:

a8b38e4d5afce16704b216658b32d0a6.png

目录
相关文章
|
存储 数据可视化 搜索推荐
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
分布式系列教程(26) -分布式日志搜集工具Elasticsearch简介
112 0
|
存储 监控 数据可视化
【日志系统】Loki日志监控 - 入门初体验
由于需求对日志进行监控,但是日志又很大,不能直接通过流的方式直接将text读取出来,可以使用grafana+loki+promtail搭建一个轻量级的日志系统,部署也简单方便。grafana提供可视化展示日志,然而loki是存储日志和处理查询,Promtail相当于loki的代理,收集日志发给loki。
1143 0
【日志系统】Loki日志监控 - 入门初体验
|
监控 Java 索引
ELK 日志服务的搭建过程
主要介绍 elasticsearch、kibna、logstash 和 filebeat 在 centos7.9 上的部署。
139 1
|
域名解析 存储 监控
案例:ELK日志分析系统
案例:ELK日志分析系统
244 0
|
存储 索引
EFK实战二 - 日志集成
EFK实战二 - 日志集成
292 0
|
数据采集 监控 Linux
​数据采集神器Telegraf对接开源日志服务器GrayLog
​数据采集神器Telegraf对接开源日志服务器GrayLog
758 0
​数据采集神器Telegraf对接开源日志服务器GrayLog
|
数据采集 缓存 JSON
网站流量日志 Flume 收集--配置文件编写和实操| 学习笔记
快速学习网站流量日志 Flume 收集--配置文件编写和实操
网站流量日志 Flume 收集--配置文件编写和实操| 学习笔记
|
存储 监控 数据可视化
ELK日志监控分析系统的探索与实践(一):利用Filebeat监控boot日志
ELK是一套完整的日志收集、展示解决方案,由ElasticSearch、Logstash 和 Kibana三个单词首字母拼接而成。其中:Logstash负责将日志进行过滤、收集,再传输到Elasticsearch上;Elasticsearch负责把日志作为索引进行存储并且构造对应倒排索引;Kibana负责可视化呈现日志,需要查询时Kibana调用Elasticsearch进行日志数据的查询;
ELK日志监控分析系统的探索与实践(一):利用Filebeat监控boot日志
|
机器学习/深度学习 编解码 数据可视化
干货 | ELK 日志实时分析实战
1、日志实时分析是 Elasticsearch 三大核心业务场景之一
534 0
干货 | ELK 日志实时分析实战
五分钟带你玩转Elasticsearch(二十一)生产环境elk系统全配置配置解析
五分钟带你玩转Elasticsearch(二十一)生产环境elk系统全配置配置解析
221 0