ELK日志分析平台之Logstash

2024-06-23 12:38

本文主要是介绍ELK日志分析平台之Logstash,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.1.1          基本概念

Logstash是一个开源的数据收集引擎,它具备实时数据传输能力,可以统一过滤来自不同源的数据,并按照开发者的制定的规范输出到目的地。

1.1.2          组成结构

Logstash 通过管道进行运作,管道有两个必需的元素,输入和输出,还有一个可选的元素,过滤器。

输入插件从数据源获取数据,过滤器插件根据用户指定的数据格式修改数据,输出插件则将数据写入到目的地。如下图:


实际上, logstash从1.3.0 版开始引入新的概念:codec(来自Coder/decoder 两个单词的首字母缩写)后,我们就需要纠正之前的一个概念。Logstash 不再只是一个input | filter | output 的数据流,而是一个input | decode | filter |encode | output 的数据流!codec 就是用来 decode、encode事件的。

这里解释一下,在1.3.0 版之前,logstash 只支持纯文本形式输入,然后以过滤器处理它。但现在,我们可以在输入期处理不同类型的数据,这全是因为有了 codec 设置。

根据自己的需求在对应的位置配置input插件、filter插件、output插件和codec插件即可。(input插件、output插件是必选项)


1.1.3          插件用法示例

1.1.3.1      input插件

input 数据输入端,可以接收来自任何地方的源数据。比如:

a.       file:从文件中读取

b.      syslog:监听在514端口的系统日志信息,并解析成RFC3164格式。

c.       redis:从redis-server list 中获取

d.      beat:接收来自Filebeat的事件

e.       jdbc:从数据库中读取

下面以从file和jdbc为例,简要介绍了一下相关配置语法。


1.1.3.2      filter插件

Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下。

a.       grok: 通过正则解析和结构化任何文本。Grok 目前是logstash最好的方式对非结构化日志数据解析成结构化和可查询化。logstash内置了120个匹配模式,满足大部分需求。

b.      mutate: 在事件字段执行一般的转换。可以重命名、删除、替换和修改事件字段。

c.       drop: 完全丢弃事件,如debug事件。

d.      clone: 复制事件,可能添加或者删除字段。

e.       geoip: 添加有关IP地址地理位置信息。

下面以一个例子做了大概的说明。

 


1.1.3.3      Codec插件

codec 的引入,使得 logstash 可以更好更方便的与其他有自定义数据格式的运维产品共存,比如:

a.       rubydebug:一般只会用在stdout 插件中,作为配置测试或者调试的工具

b.       plain:主要用于事件之间没有分隔的纯文本,可自定义格式;

c.       json:如果数据为json格式,可直接使用该插件,从而省掉filter/grok的配置,降低过滤器的cpu消耗

d.       multiline:有些日志事件在打印的时候,可能会有多行,比如java 错误日志。而logstash默认是一行一行读取的,这个时候就要用到multiline格式了。Multiline通过正则来匹配多行日志,常见是只匹配开头的符号。

下面以multiline做了一个大概的说明:

1.1.3.4      output插件

output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用,常用的有:

a.       elasticsearch: 发送事件数据到 Elasticsearch,便于查询,分析,绘图。

b.      file: 将事件数据写入到磁盘文件上。

c.       mongodb:将事件数据发送至高性能NoSQL mongodb,便于永久存储,查询,分析,大数据分片。

d.      redis:将数据发送至redis-server,常用于中间层暂时缓存。


这篇关于ELK日志分析平台之Logstash的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1087185

相关文章

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

SpringBoot中六种批量更新Mysql的方式效率对比分析

《SpringBoot中六种批量更新Mysql的方式效率对比分析》文章比较了MySQL大数据量批量更新的多种方法,指出REPLACEINTO和ONDUPLICATEKEY效率最高但存在数据风险,MyB... 目录效率比较测试结构数据库初始化测试数据批量修改方案第一种 for第二种 case when第三种

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

MySQL中的LENGTH()函数用法详解与实例分析

《MySQL中的LENGTH()函数用法详解与实例分析》MySQLLENGTH()函数用于计算字符串的字节长度,区别于CHAR_LENGTH()的字符长度,适用于多字节字符集(如UTF-8)的数据验证... 目录1. LENGTH()函数的基本语法2. LENGTH()函数的返回值2.1 示例1:计算字符串

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

解读GC日志中的各项指标用法

《解读GC日志中的各项指标用法》:本文主要介绍GC日志中的各项指标用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、基础 GC 日志格式(以 G1 为例)1. Minor GC 日志2. Full GC 日志二、关键指标解析1. GC 类型与触发原因2. 堆

MySQL中的表连接原理分析

《MySQL中的表连接原理分析》:本文主要介绍MySQL中的表连接原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、环境3、表连接原理【1】驱动表和被驱动表【2】内连接【3】外连接【4编程】嵌套循环连接【5】join buffer4、总结1、背景

python中Hash使用场景分析

《python中Hash使用场景分析》Python的hash()函数用于获取对象哈希值,常用于字典和集合,不可变类型可哈希,可变类型不可,常见算法包括除法、乘法、平方取中和随机数哈希,各有优缺点,需根... 目录python中的 Hash除法哈希算法乘法哈希算法平方取中法随机数哈希算法小结在Python中,