Logstash 是如何工作的

本贴最后更新于 750 天前,其中的信息可能已经东海扬尘

此篇文章翻译于官方文档:https://www.elastic.co/guide/en/logstash/7.10/pipeline.html

Logstash 事件处理管道分为三个阶段:inputs -> filters -> outputs。inputs 生成事件,事件其实是数据的输入,filters 处理输入的数据,outputs 将处理完毕的数据搬运到其他位置。inputs 和 outputs 支持编解码,它可以让你在进入或退出管道时对数据进行编解码,而无需使用单独的 filter。

Inputs

使用 inputs 将数据输送给 Logstash,下面是一些常见的 inputs:

  • file:从文件系统读取的文件;
  • syslog:从 514 端口获取系统日志,并根据 RFC3164 规范进行解析到 Logstash;
  • redis:从 redis 服务器读取,可以通过 redis channel 和 redis list 两个渠道。Redis 通常作为 Logstash 整体流程中的”中间商“,负责将远程的 Logstash ”采集者“的数据进行存储排队;
  • beats:通过 beats 将数据发给 Logstash。

更多可用的 inputs 种类查看 Input Plugins

Filters

Filters 是 Logstash 管道中的中间处理设备。如果数据符合特定条件,可以将 filter 与条件结合起来对数据执行操作。以下是一些常见的 filters:

  • grok:可以解析和构造任意文本。Grok 目前是 Logstash 中将非结构化日志数据转换为结构化可查询数据的最佳方式。它将 12 种模式内置于 Logstash,你很可能会找到满足你需求的模式;
  • mutate:对数据的字段进行常规转换。可以重命名、删除、替换和修改数据中的字段;
  • drop:完全删除一条数据,比如:用作调试的数据;
  • clone:制作数据的副本,可能会添加或删除数据;
  • geoip:可以添加 IP 地址对应的地理位置数据(同时在 Kibana 也会有很惊艳的图标展示!)。

更多可用的 filters 种类查看 Filter Plugins

Outputs

outputs 是 Logstash 管道处理的最后阶段。一个数据可以经过多个 output,但是一旦所有的 output 都处理完成,这条数据就算是完成了它的执行。一些常用的 outputs:

  • elasticsearch:将数据发送到 Elasticsearch。如果打算以高效、方便且易于查询的格式保存数据,Elasticsearch 是不二之选;
  • file:将数据写入到磁盘上的文件中;
  • graphite:将数据发送到 Graphite,Graphite 是一种用于存储和绘制指标的流行开源工具。http://graphite.readthedocs.io/en/latest/
  • statsd:将数据发送到 statsd,这是一项”监听统计信息,如计数器和计时器,通过 UDP 发送并将数据聚合发送到一个或多个后端服务“的服务。

更多可用的 outputs 种类查看 Output Plugins

Codecs

Codecs 可以视为在 Inputs 和 Outputs 端运行的流过滤器。编解码器能够轻松的将消息的传输与序列化过程分开。流行的 codecs 包括 json、msgpack 和 plain(文本)。

  • json:使用 JSON 的形式进行编解码;
  • multiline:将多行文本数据(例如 Java 异常和堆栈信息)合并为一条消息。

更多可用的 codecs 种类查看 Codec Plugins

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...