日志系统的数据过滤组件-Logstash

Posted 北漂悟道之路

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志系统的数据过滤组件-Logstash相关的知识,希望对你有一定的参考价值。



工作原理

 


    Logstash 有两个必要元素:input 和output,一个可选元素:filter 。这三个元素,分别代表logstash事件处理的三个阶段:输入>过滤器>输出。

    • 1 负责从数据源采集数据。

    • 2 filter将数据修改为你指定的格式或内容。

    • 3 output 将数据传输到目的地。

    实际应用场景中,通常输入、输出、过滤器不止一个、logstash 的这三个元素都使用插件式管理方式,可以根据应用需要,灵活的选用各阶段需要的插件,并组合使用。

 


配置文件

 

  • Logstash.yml : logstash 的默认配置文件,配置如 node.namepath.data pipeline.workersQueue.type 等,这其中的配置可以被命令行参数中的相关参数覆盖。

  • Jvm.options : logstash  jvm 配置文件。

  • Startup.options(linux) : 包含系统安装脚本在 /usr/share/logstash/bin 中使用的选项为您的系统构建适当的启动脚本。安装 logstash 软件包时,系统安装脚本将在安装过程结束时执行,并使 startup.options 中指定的设置来设置用户,组,服务名称和服务描述等选项。

  • Pipelines.yml:定义数据处理流程的文件。

 


Input常用模块

 

    Logstash 支持各种输入选择,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,可从日志、指标、web应用、数据存储以及各种AWS服务采集数据。

    • File:从文件系统上的文件读取。

    • Syslog:在众所周知的端口514上侦听系统日志消息,并根据RFC3164格式进行解析。

    • Redis:从redis 服务器读取,使用 redis 通道和 redis 列表。Redis 经常用作集中式logstash安装中的“代理”,它将接受来自远程 logstash “托运人”的 logstash 事件排队。

    • Beats:处理由filebeat发送的事件。

    




常用的filter模块

 

    过滤器是logstash管道中的中间处理设备。可以将条件过滤器组合在一起,对事件执行操作。

    • Grok:解析和结构任意文本。Grok目前是logstash中将非结构化日志数据解析为结构化和可查询的最佳方法。

    • Mutate:对事件字段执行一般转换。您可以重命名,删除,替换和修改事件中的字段。

    • Drop:完全放弃一个事件,例如调试事件。

    • Clone:制作一个事件的副本,可能会添加或删除字段。




常用output:

 

  • Elasticsearch:将时间数据发送给elasticsearch(推荐模式)

  • File:将事件数据写入文件或磁盘。

  • Graphite:将时间数据发送给graphite(一个流行的开源工具,存储和绘制指标)。

  • Statsd:将事件数据发送到statsd(这是一种侦听统计数据的服务,如计算器和定时器,通过UDP发送并将聚合发送到一个或多个可插入的后端服务)。

 


编码插件codes

 

    在此之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入 期处理不同类型的数据,这全是因为有了 codec 设置。所以,这里需要纠正之前的一个概念。

 

    Logstash 不只是一个 input | filter | output 的数据流,而是一个 input | decode |filter | encode | output 的数据流!codec 就是用来 decode、encode 事件的。codec 的引入,使得 logstash 可以更好更方便的与其他有自定义数据格式的运维产品共存,比如 graphite、fluent、netflow、collectd,以及使用 msgpack、json、edn 等通用数据格式的其他产品等。

    事实上,我们在第一个 "hello world" 用例中就已经用过 codec 了 —— rubydebug 就是一种 codec!虽然它一般只会用在stdout 插件中,作为配置测试或者调试的工具。


注:近期连载日志系统的架构,组件,原理和部分组件代码重构,感兴趣的同学可以关注我!

以上是关于日志系统的数据过滤组件-Logstash的主要内容,如果未能解决你的问题,请参考以下文章

ELK日志分析系统的搭建

日志分析系统ELK之Logstash

日志分析系统ELK之Logstash

ELKstack-企业级日志收集系统

企业级日志收集系统——ELKstack

企业级日志收集系统——ELKstack