zoukankan      html  css  js  c++  java
  • ELK学习实验011:Logstash工作原理

    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

  • 相关阅读:
    20165336 2017-2018-2《Java程序设计》课程总结
    2017-2018-2 20165336 实验五《网络编程与安全》实验报告
    2017-2018-2 20165336 实验四《Android开发基础》实验报告
    2018-2019-1 20165314 《信息安全系统设计基础》第四周学习总结
    2018-2019-1 20165314 《信息安全系统设计基础》第三周学习总结
    2018-2019-1 20165314《信息安全系统设计基础》实验一 缓冲区溢出漏洞实验
    20165314 [第二届构建之法论坛] 预培训心得(Java版)
    20165314 2017-2018-2《Java程序设计》课程总结
    20165314实验五《网络编程与安全》实验报告
    20165314实验四
  • 原文地址:https://www.cnblogs.com/zyxnhr/p/11962284.html
Copyright © 2011-2022 走看看