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

相关文章

kotlin中const 和val的区别及使用场景分析

《kotlin中const和val的区别及使用场景分析》在Kotlin中,const和val都是用来声明常量的,但它们的使用场景和功能有所不同,下面给大家介绍kotlin中const和val的区别,... 目录kotlin中const 和val的区别1. val:2. const:二 代码示例1 Java

Go标准库常见错误分析和解决办法

《Go标准库常见错误分析和解决办法》Go语言的标准库为开发者提供了丰富且高效的工具,涵盖了从网络编程到文件操作等各个方面,然而,标准库虽好,使用不当却可能适得其反,正所谓工欲善其事,必先利其器,本文将... 目录1. 使用了错误的time.Duration2. time.After导致的内存泄漏3. jsO

SpringBoot日志配置SLF4J和Logback的方法实现

《SpringBoot日志配置SLF4J和Logback的方法实现》日志记录是不可或缺的一部分,本文主要介绍了SpringBoot日志配置SLF4J和Logback的方法实现,文中通过示例代码介绍的非... 目录一、前言二、案例一:初识日志三、案例二:使用Lombok输出日志四、案例三:配置Logback一

Spring事务中@Transactional注解不生效的原因分析与解决

《Spring事务中@Transactional注解不生效的原因分析与解决》在Spring框架中,@Transactional注解是管理数据库事务的核心方式,本文将深入分析事务自调用的底层原理,解释为... 目录1. 引言2. 事务自调用问题重现2.1 示例代码2.2 问题现象3. 为什么事务自调用会失效3

golang 日志log与logrus示例详解

《golang日志log与logrus示例详解》log是Go语言标准库中一个简单的日志库,本文给大家介绍golang日志log与logrus示例详解,感兴趣的朋友一起看看吧... 目录一、Go 标准库 log 详解1. 功能特点2. 常用函数3. 示例代码4. 优势和局限二、第三方库 logrus 详解1.

找不到Anaconda prompt终端的原因分析及解决方案

《找不到Anacondaprompt终端的原因分析及解决方案》因为anaconda还没有初始化,在安装anaconda的过程中,有一行是否要添加anaconda到菜单目录中,由于没有勾选,导致没有菜... 目录问题原因问http://www.chinasem.cn题解决安装了 Anaconda 却找不到 An

Spring定时任务只执行一次的原因分析与解决方案

《Spring定时任务只执行一次的原因分析与解决方案》在使用Spring的@Scheduled定时任务时,你是否遇到过任务只执行一次,后续不再触发的情况?这种情况可能由多种原因导致,如未启用调度、线程... 目录1. 问题背景2. Spring定时任务的基本用法3. 为什么定时任务只执行一次?3.1 未启用

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

SpringBoot项目使用MDC给日志增加唯一标识的实现步骤

《SpringBoot项目使用MDC给日志增加唯一标识的实现步骤》本文介绍了如何在SpringBoot项目中使用MDC(MappedDiagnosticContext)为日志增加唯一标识,以便于日... 目录【Java】SpringBoot项目使用MDC给日志增加唯一标识,方便日志追踪1.日志效果2.实现步

SQL Server清除日志文件ERRORLOG和删除tempdb.mdf

《SQLServer清除日志文件ERRORLOG和删除tempdb.mdf》数据库再使用一段时间后,日志文件会增大,特别是在磁盘容量不足的情况下,更是需要缩减,以下为缩减方法:如果可以停止SQLSe... 目录缩减 ERRORLOG 文件(停止服务后)停止 SQL Server 服务:找到错误日志文件:删除