Logstash 简介

1. 介绍

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

Logstash

2.集中、转换和存储数据

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

   输入 采集各种样式、大小和来源的数据

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

Logstash

   过滤器 实时解析和转换数据

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

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

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

Logstash

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

尽管Elasticsearch是我们的首选输出方向,能够为我们的搜索和分析带来无限可能,但它并非唯一选择。Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。

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
进行增加、修改、删除、替换等字段相关处理