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

1 输入

您可以使用输入将数据获取到Logstash。一些更常用的输入是:

  • file:从文件系统上的文件读取,非常类似于UNIX命令 tail -0F
  • syslog:在知名端口514上侦听syslog消息并根据RFC3164格式进行解析
  • redis:使用redis通道和redis列表从redis服务器读取。Redis经常在集中式Logstash安装中用作“代理”,该安装会将来自远程Logstash“托运人”的Logstash事件排队。
  • beats:进程的事件发送的beats。

输入插件

输入插件使Logstash可以读取特定的事件源。

上面只是插件一部分,详细请看:https://www.elastic.co/guide/en/logstash/current/input-plugins.html

2 过滤器

筛选器是Logstash管道中的中间处理设备。如果事件符合特定条件,则可以将过滤器与条件语句结合使用以对事件执行操作。一些有用的过滤器包括:

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

过滤器插件

过滤器插件对事件执行中介处理。通常根据事件的特征有条件地应用过滤器。

上面只是插件一部分,详细请看:https://www.elastic.co/guide/en/logstash/current/filter-plugins.html

3 输出

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

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

输出插件

输出插件将事件数据发送到特定的目的地。输出是事件管道中的最后阶段。

上面只是插件一部分,详细请看https://www.elastic.co/guide/en/logstash/current/output-plugins.html

4 编码

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

  • json:以JSON格式编码或解码数据。
  • multiline:将多行文本事件(例如java异常和stacktrace消息)合并为一个事件。

编码器插件

编解码器插件可更改事件的数据表示形式。编解码器本质上是流过滤器,可以作为输入或输出的一部分进行操作。

上面只是插件一部分,详细请看https://www.elastic.co/guide/en/logstash/current/codec-plugins.html

5 执行模型

Logstash事件处理管道协调输入、过滤器和输出的执行。

Logstash管道中的每个输入阶段都在自己的线程中运行,输入将事件写入位于内存(默认)或磁盘上的中央队列,每个管道工作线程从这个队列中取出一批事件,通过配置的过滤器运行事件批处理,然后通过任何输出运行过滤的事件,可以配置批处理的大小和管道工作线程的数量(参见调优和分析Logstash性能)。

默认情况下,Logstash使用内存有限队列在管道阶段之间(输入→过滤器和过滤器→输出)来缓冲事件,如果Logstash不安全的终止,则存储在内存中的任何事件都将丢失。为了防止数据丢失,你可以启用Logstash将运行中的事件持久化到磁盘上,有关更多信息,请参见持久队列:https://www.elastic.co/guide/en/logstash/current/persistent-queues.html

参考文献:https://www.elastic.co/guide/en/logstash/current/pipeline.html#_filters

最新文章

  1. Swift_UI_UIButton
  2. 学习WPF——了解WPF中的XAML
  3. Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.解决办法
  4. Javascript手记-垃圾收集
  5. leetcode problem 41 -- First Missing Positive
  6. check whether the crystal report runtime is exists 检查crystalreport运行时是否存在
  7. 注解方式实现Spring声明式事务管理
  8. 孙陪你,了解它的权力--Kinect结合的发展Unity3D游戏应用开发
  9. 仿qq的侧拉菜单效果
  10. Codeforces Round #443 (Div. 2) C. Short Program
  11. spring加载xml的六种方式
  12. Linux 驱动——Button驱动2
  13. 第二篇 - python爬取免费代理
  14. ARC062 - F. Painting Graphs with AtCoDeer (Polya+点双联通分量)
  15. Android.mk 用法介绍
  16. kettle步骤概览--清洗校验
  17. UVa 10559 Blocks (DP)
  18. [原创]Laravel 的缓存源码解析
  19. CH5101 LCIS
  20. AppScan工作原理&操作教程

热门文章

  1. 用div漂浮快实现与表单无关的多文件上传功能。
  2. Spring集成Hessian1
  3. Java练习 SDUT-1119_输入数字星期,输出英文(switch语句)
  4. 自定义View系列教程02--onMeasure源码详尽分析
  5. 2019徐州网络赛 I.query
  6. hdu 1156 && poj 2464 Brownie Points II (BIT)
  7. 5分钟了解为什么学习Go
  8. 洛谷P3366 【模板】最小生成树 题解
  9. linux scull 的内存使用
  10. 【u212】&&【t036】最大和