Logstash 的工作原理

编辑

Logstash 的工作原理

编辑

Logstash 事件处理管道分为三个阶段:输入 → 过滤器 → 输出。输入生成事件,过滤器修改事件,输出将事件发送到其他地方。输入和输出支持编解码器,使您可以在数据进入或退出管道时对其进行编码或解码,而无需使用单独的过滤器。

输入

编辑

您可以使用输入将数据导入 Logstash。一些常用的输入包括:

  • file:从文件系统中读取文件,类似于 UNIX 命令 tail -0F
  • syslog:监听众所周知的端口 514 以接收 syslog 消息,并按照 RFC3164 格式进行解析
  • redis:从 redis 服务器读取数据,使用 redis 通道和 redis 列表。Redis 通常在集中式 Logstash 安装中用作“代理”,它会对来自远程 Logstash “发送器”的 Logstash 事件进行排队。
  • beats:处理由 Beats 发送的事件。

有关可用输入的更多信息,请参阅 输入插件

过滤器

编辑

过滤器是 Logstash 管道中的中间处理设备。您可以将过滤器与条件语句结合使用,以便在事件满足特定条件时对其执行操作。一些有用的过滤器包括:

  • grok:解析和结构化任意文本。Grok 是目前 Logstash 中将非结构化日志数据解析为结构化和可查询数据的最佳方式。Logstash 内置了 120 种模式,您很可能会找到满足您需求的模式!
  • mutate:对事件字段执行常规转换。您可以重命名、删除、替换和修改事件中的字段。
  • drop:完全删除事件,例如,debug 事件。
  • clone:复制事件,可以添加或删除字段。
  • geoip:添加有关 IP 地址地理位置的信息(还在 Kibana 中显示精美的图表!)

有关可用过滤器的更多信息,请参阅 过滤器插件

输出

编辑

输出是 Logstash 管道的最后阶段。一个事件可以经过多个输出,但是一旦所有输出处理完成,事件的执行就完成了。一些常用的输出包括:

  • elasticsearch:将事件数据发送到 Elasticsearch。如果您计划以高效、方便和易于查询的格式保存数据…​Elasticsearch 是您的不二之选。就是这样。是的,我们有点偏心 :)
  • file:将事件数据写入磁盘上的文件。
  • graphite:将事件数据发送到 graphite,这是一个用于存储和绘制指标的流行的开源工具。 http://graphite.readthedocs.io/en/latest/
  • statsd:将事件数据发送到 statsd,这是一种“监听统计信息(如计数器和计时器)的服务,这些统计信息通过 UDP 发送,并将聚合发送到一个或多个可插拔的后端服务”。如果您已经在使用 statsd,这可能对您很有用!

有关可用输出的更多信息,请参阅 输出插件

编解码器

编辑

编解码器基本上是流过滤器,可以在输入或输出中作为一部分运行。编解码器使您可以轻松地将消息的传输与序列化过程分开。常用的编解码器包括 jsonmsgpackplain (text)。

  • json:以 JSON 格式编码或解码数据。
  • multiline:将多行文本事件(例如 java 异常和堆栈跟踪消息)合并到单个事件中。

有关可用编解码器的更多信息,请参阅 编解码器插件