(十二):Logstash简介
1、Logstash的概念
Logstash是一个开源数据收集引擎,具有实时管道功能。Logstash可以动态地将来自不同数据源的数据统一起来,并将数据标准化到选择的目的地。
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240125142805071-2120489834.png)
2、Logstash的特点
2.1、日志与指标
Logstash可以处理所有类型的日志数据,轻松地摄取大量的web日志(如Apache)和应用程序日志(如Java的log4j),可以捕获许多其他日志格式,如syslog、网络和防火墙日志等;
支持Filebeat的安全日志转发功能;
支持通过TCP和UDP从Ganglia、colltd、NetFlow、JMX和许多其他基础设施和应用程序平台收集指标。
2.2、采集网络数据
2.2.1、将HTTP请求转换为事件
Logstash支持使用网络服务进行数据分析,同时支持许多监视器警报用例。
2.2.2、根据需要轮询HTTP端点来创建事件
从web应用程序接口捕获健康、性能、指标和其他类型的数据。
2.3、数据存储和数据流
从已经拥有的数据中发现更多价值,进行数据挖掘和分析。
数据来源可以是来自任何关系型数据库或NoSQL数据库,也可以是来自消息队列(如Apache Kafka、RabbitMQ和Amazon SQS)的不同数据流。
3、Logstash的工作组件
Logstash事件处理管道有三个阶段:inputs → filters → outputs。inputs:生成事件;filters:修改事件;outputs:将处理后的事件输出到目的地。
inputs 和 outputs 支持编解码器,可以再数据进入或退出管道时对其进行编码或解码,从而不需要使用单独的过滤器。即,Logstash有两个必需的元素(输入和输出)和一个可选元素(过滤器)。
![0](https://img2024.cnblogs.com/blog/1680081/202401/1680081-20240125143036985-2114196673.png)
inputs 输入插件读取源数据,filters 过滤插件可修改数据,outputs 输出插件将数据写入目的地。
3.1、inputs
inputs 是数据的输入,对接的是数据源,常用 inputs如下:
file
|
读取文件系统上的一个文件
|
syslog
|
在端口514上监听syslog消息,按照RFC3164格式进行解析
|
Redis
|
从Redis服务器读取数据,使用Redis通道和Redis列表
|
beats
|
处理Beats发送的事件
|
3.2、Filters
过滤器是Logstash管道中的中间处理设备,可以设置条件,以便处理满足特定条件的事件。
gork
|
解析和构建任意文本,Grok目前是Logstash中将非结构化日志数据解析为结构化和可查询的内容的最佳方式
|
mutate
|
对事件字段执行转换。可以重命名、删除、替换和修改事件中的字段。
|
drop
|
删除事件
|
clone
|
创建事件的副本,可能会添加或删除字段
|
geoip
|
添加IP地址的地理位置信息
|
3.3、Outputs
Outputs 是Logstash管道的最后阶段。事件可以通过多个 Outputs 传递,但是一旦完成所有 Outputs 处理,就完成了事件的执行。
常用的Outputs如下:
elasticsearch
|
发送事件数据到Elasticsearch,可以高效、方便、易于查询的格式保存事件数据
|
file
|
将事件数据写入磁盘上的文件
|
graphite
|
将事件数据发送到graphite,这是一种流行的用于存储和绘制指标的开源工具
|
statsd
|
发送事件数据到statsd,statsd通过侦听UDP发送的统计信息,如计数器和计时器,并将聚合信息发送到一个或多个可插入的后端服务
|
3.4、Codecs
编解码器基本上是流过滤器,可以作为输入或输出的一部分进行操作。编解码器可以轻松地将消息的传输与序列化过程分离开来。当前流行的编解码器包括json、msgpack和plain (text)。
json
|
对数据进行json格式的编码或解码
|
multiline
|
将多行文本事件(如Java exception和stacktrace消息)合并为单个事件
|