日志系统的数据过滤组件-Logstash
Posted 北漂悟道之路
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了日志系统的数据过滤组件-Logstash相关的知识,希望对你有一定的参考价值。
工作原理
Logstash 有两个必要元素:input 和output,一个可选元素:filter 。这三个元素,分别代表logstash事件处理的三个阶段:输入>过滤器>输出。
1 负责从数据源采集数据。
2 filter将数据修改为你指定的格式或内容。
3 output 将数据传输到目的地。
实际应用场景中,通常输入、输出、过滤器不止一个、logstash 的这三个元素都使用插件式管理方式,可以根据应用需要,灵活的选用各阶段需要的插件,并组合使用。
配置文件
Logstash.yml : logstash 的默认配置文件,配置如 node.name 、path.data 、pipeline.workers 、Queue.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的主要内容,如果未能解决你的问题,请参考以下文章