Logstash 简介
1. 介绍¶
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到你所选择的目的地。
2.集中、转换和存储数据¶
Logstash是一个开源的服务器端数据处理管道,可以同时从多个数据源获取数据,并对其进行转换,然后将其发送到你最喜欢的“存储”。(当然,我们最喜欢的是Elasticsearch)
输入 采集各种样式、大小和来源的数据
数据往往以各种各样的形式,或分散或集中地存在于很多系统中。Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
过滤器 实时解析和转换数据
数据从源传输到存储库的过程中,Logstash过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
Logstash 能够动态地转换和解析数据,不受格式或复杂度的影响
- 利用 Grok 从非结构化数据中派生出结构
- 从 IP 地址破译出地理坐标
- 将 PII 数据匿名化,完全排除敏感字段
- 整体处理不受数据源、格式或架构的影响
输出 选择你的存储,导出你的数据
尽管Elasticsearch是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
3. Logstash 处理¶
3.1 input¶
- file
- redis
- beats
- kafka
3.2 filter¶
- grok [带正则]
- mutate
- drop
- date
3.3 output¶
- stdout
- elasticsearch
- redis
- kafka
4. Logstash 配置¶
4.1 输入输出¶
处理流程 input/output配置
input { file{ path=>"/tmp/abc.log" } } output{ stdout{ codec=>rubydebug } }
4.2 filter¶
- Grok
1. 基于正则表达式提供了丰富可重用的模式[pattern] 2. 基于此可以将非结构化数据做结构化处理
demo
192.168.0.1 GET /index.html 12739 0.0521 %{IP:client}%{WORD:method}%{URIPATHRAM:request}%{NUMBER:bytes}%{NUMBER:duration} { "client":"192.168.0.1", "method":"GET", "request":"/index.html", "bytes":12739 "duration":0.0521 }
- Date
将字符串类型的时间字段转换为时间戳类型,方便后续数据处理
- Mutate
进行增加、修改、删除、替换等字段相关处理