数据管道 Logstash 入门(上)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 数据管道 Logstash 入门

Logstash 入门


Logstash 是什么

Logstash 就是一个开源的数据流工具,它会做三件事:

1.从数据源拉取数据2.对数据进行过滤、转换等处理3.将处理后的数据写入目标地

例如:

监听某个目录下的日志文件,读取文件内容,处理数据,写入 influxdb 。从 kafka 中消费消息,处理数据,写入 elasticsearch 。

为什么要用 Logstash ?

方便省事。

假设你需要从 kafka 中消费数据,然后写入 elasticsearch ,如果自己编码,你得去对接 kafka 和 elasticsearch 的 API 吧,如果你用 Logstash ,这部分就不用自己去实现了,因为 Logstash 已经为你封装了对应的 plugin 插件,你只需要写一个配置文件形如:

input {
    kafka {
        # kafka consumer 配置
    }
}
filter {
    # 数据处理配置
}
output {
    elasticsearch {
        # elasticsearch 输出配置
    }
}

然后运行 logstash 就可以了。

Logstash 提供了两百多个封装好的 plugin 插件,这些插件被分为三类:

input plugin : 从哪里拉取数据filter plugin : 数据如何处理output plugin : 数据写入何处

使用 logstash 你只要编写一个配置文件,在配置文件中挑选组合这些 plugin 插件,就可以轻松实现数据从输入源到输出源的实时流动。


安装 logstash

请参数:官方文档


第一个示例

假设你已经安装好了 logstash ,并且可执行文件的路径已经加入到了 PATH 环境变量中。

下面开始我们的第一个示例,编写 pipeline.conf 文件,内容为:

input {
    stdin {
    }
}
filter {
}
output {
    stdout {
    }
}

这个配置文件的含义是:

input 输入为 stdin(标准输入)filter 为空(也就是不进行数据的处理)output 输出为 stdout(标准输出)

执行命令:

logstash -f pipeline.conf

等待 logstash 启动完毕,输入 hello world 然后回车, 你就会看到以下输出内容:

{
       "message" => "hello world",
      "@version" => "1",
    "@timestamp" => 2020-11-01T08:25:10.987Z,
          "host" => "local"
}

我们输入的内容已经存在于 message 字段中了。

当你输入其他内容后也会看到类似的输出。

至此,我们的第一个示例已经完成,正如配置文件中所定义的,Logstash 从 stdin 标准输入读取数据,不对源数据做任何处理,然后输出到 stdout 标准输出。

特定名词和字段

event : 数据在 logstash 中被包装成 event 事件的形式从 input 到 filter 再到 output 流转。@timestamp : 特殊字段,标记 event 发生的时间。@version : 特殊字段,标记 event 的版本号。message : 源数据内容。@metadata : 元数据,key/value 的形式,是否有数据得看具体插件,例如 kafka 的 input 插件会在 @metadata 里记录 topic、consumer_group、partition、offset 等一些元数据。tags : 记录 tag 的字符串数组。

字段引用

在配置文件中,可以通过 [field] 的形式引用字段内容,如果在字符串中,则可以通过 %{[field]} 的方式进行引用。

示例:

input {
    kafka {
        # kafka 配置
    }
}
filter {
    # 引用 log_level 字段的内容进行判断
    if [log_level] == "debug" {
    }
}
output {
  elasticsearch {
    # %{+yyyy.MM.dd} 来源于 @timestamp
    index => "log-%{+yyyy.MM.dd}"
    document_type => "_doc"
    document_id => "%{[@metadata][kafka][key]}"
    hosts => ["127.0.0.1:9200"]
  }
}

Plugin 插件一览

用好 Logstash 的第一步就是熟悉 plugin 插件,只有熟悉了这些插件你才能快速高效的建立数据管道。

Input plugin

Input 插件定义了数据源,即 logstash 从哪里拉取数据。

beats : 从 Elastic Beats 框架中接收数据。

示例:

input {
  beats {
    port => 5044
  }
}

dead_letter_queue : 从 Logstash 自己的 dead letter queue 中拉取数据,目前 dead letter queue 只支持记录 output 为 elasticsearch 时写入 400 或 404 的数据。

示例:

input {
  dead_letter_queue {
    path => "/var/logstash/data/dead_letter_queue"
    start_timestamp => "2017-04-04T23:40:37"
  }
}

elasticsearch : 从 elasticsearch 中读取 search query 的结果。

示例

nput {
  elasticsearch {
    hosts => "localhost"
    query => '{ "query": { "match": { "statuscode": 200 } } }'
  }
}


目录
相关文章
|
NoSQL Redis 索引
Filebeat收集日志数据传输到Redis,通过Logstash来根据日志字段创建不同的ES索引
Filebeat收集日志数据传输到Redis,通过Logstash来根据日志字段创建不同的ES索引
185 0
|
1月前
|
NoSQL 网络协议 Java
【赵渝强老师】Redis的管道Pipeline
Redis采用客户端-服务器模型和请求/响应协议,通常一个请求包括客户端发送查询请求并等待服务端响应。为了提高性能,Redis引入了管道PipeLine技术,可以一次性发送多条命令并一次性返回结果,减少客户端与服务器间的通信次数,从而降低往返延迟。示例代码展示了普通命令和管道命令在插入1万条数据时的性能差异,后者执行时间显著缩短。视频讲解提供了更详细的解释。
|
7月前
|
监控 安全
管道的三种使用方案中,唯一正确而安全的使用方法
管道的三种使用方案中,唯一正确而安全的使用方法
25 0
|
消息中间件 存储 NoSQL
数据管道 Logstash 入门(下)
数据管道 Logstash 入门
105 0
|
存储 消息中间件 编解码
Logstash收集多数据源数据神器
Logstash收集多数据源数据神器
370 0
Logstash收集多数据源数据神器
|
SQL NoSQL JavaScript
mongo 进阶之——聚合管道
上面这句话的意思是,先用pumber来进行分组,会有两个字段,一个是"_id"和"count",在后一个管道中用1表示显示,0表示不显示
mongo 进阶之——聚合管道
|
数据采集 Dubbo 应用服务中间件
使用 Logstash 导入流式数据|学习笔记
快速学习使用 Logstash 导入流式数据
141 0
使用 Logstash 导入流式数据|学习笔记
|
开发框架 JSON 监控
如何利用NLog输出结构化日志,并在Kibana优雅分析日志?
今天我们来看下如何向ES输出结构化日志、在Kibana中分析日志。
如何利用NLog输出结构化日志,并在Kibana优雅分析日志?
|
存储 安全 Apache
为什么我们需要Logstash,Fluentd等日志摄取器?
Fluent-Bit旨在成为日志收集和加工的通用瑞士军刀, 同时Fluent Bit在设计时考虑了性能和低资源消耗。
为什么我们需要Logstash,Fluentd等日志摄取器?
|
存储 数据处理 iOS开发
干货 | Logstash自定义正则表达式ETL实战
本文建立在干货 | Logstash Grok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式。 有时Logstash没有我们需要的模式。 幸运的是,我们有正则表达式库:Oniguruma。 Oniguruma是一个灵活的正则表达式库。 它包含多种语言的不同正则表达式实现的特性。 Github地址:https://github.com/kkos/oniguruma
719 0
干货 | Logstash自定义正则表达式ETL实战