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:完全丢弃事件,例如,*调试*事件。
  • clone:创建事件的副本,可能会添加或删除字段。
  • geoip:添加有关 IP 地址地理位置的信息(还会在 Kibana 中显示惊人的图表!)

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

输出编辑

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

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

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

编解码器编辑

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

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

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