使用elasticstack实现log提取与搜索

2024-01-15 04:40

本文主要是介绍使用elasticstack实现log提取与搜索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目标

了解elastic stack中主要组件的职责,掌握如何使完成提取log和搜索log。

组件简介

  • beats

beats是轻量型数据采集器,集合了多种单一用途的采集器,向elasticSearch或logstash发送采集的数据。

beats 支持哪些采集器呢? 

采集器名称

作用

filebeat日志采集器。安装在服务器端且作为agent,监控log文件,收集log,发送给es或logstash等。
metricbeat指标采集器。
packetbeat网络数据采集器。
heartbeat心跳数据采集器。
……

采集log数据,需要使用filebeat。所以接下来主要介绍filebeat。

Filebeat Reference [7.15] | Elasticicon-default.png?t=L9C2https://www.elastic.co/guide/en/beats/filebeat/current/index.htmlfilebeat主要涉及两个组件:input与harvester。

input负责管理采集器和查找需要读取的所有资源
harvester 采集器一个采集器只负责读取一个文件的内容,一行一行的读,发送给output。只要采集器正在运行,则文件描述符一直保持打开状态。

filebeat需要记录文件状态吗?

filebeat会记录每个被采集文件的状态并且经常写入到磁盘中(位于filebeat路径/data/registry)。

用于记录最后读取行的offset和确保发送所有行。当output不可用时,filebeat跟踪已发送的最后一行offset,output可用后,继续读取文件并发送。 

由于文件可以被移动和重命名,所以文件名和路径不足以唯一标识文件。filebeat会记录一个唯一标识,以判断文件之前是否被采集过。

input 支持哪些信息来源类型呢?

log读文件。支持多行。
filestream读文件。不支持多行。
kafka
redis
……

 output 支持哪些目标类型呢?

elasticsearch
logstash
……
  • logstash

服务器端数据处理管道,从多个来源采集数据,转换数据,将数据发送到目的地,如数据库。

数据管道,指定数据从哪里来,数据如何处理,数据去哪里。支持多种类型的input、filter、output。

inputbeats接受由beats发送的数据
filtergrok对文本进行解析与结构化。
outputelasticsearch

logstash 有两类配置文件:pipeline配置和setting配置。

pipeline配置,每个conf文件对应一个管道的input-filter-output配置,例如test-pipeline.conf。

setting配置,控制启动与执行。

管道配置修改后,支持自动加载吗?

当管道配置变更后,logstash会自动重新加载配置。

logstash意识到config变更,则终止该管道的所有input,然后尝试使用新的config创建新的管道。首先验证config中的语法,然后验证所有input和output可以使用。如果验证都ok,则用新管道替换旧的。若验证不通过,则旧的管道继续使用,并且在console输出error。

配置重加载的过程,发生在同一个jvm,即同一个进程。

  • es

elasticSearch介绍与使用_陈海龙的格物之路-CSDN博客首先一起了解elasticSearch,然后结合springData,看看如何使用elasticSearch。https://blog.csdn.net/chl87783255/article/details/120830202

  • kibana

kibana对es数据进行可视化,提供了丰富的用户界面。

如何利用es stack实现log提取与搜索?

  • 目标1:log提取。

filebeat

filebeat.yml

filebeat.inputs:- type: logenabled: truepaths:- D:\logs\logstash-tutorial-dataset#- /var/log/*.log#- c:\programdata\elasticsearch\logs\*#处理多行,由于filesystem不支持多行,所以选择logmultiline.type: patternmultiline.pattern: '^[[:space:]]+(at|\.{3})[[:space:]]+\b|^Caused by:'multiline.negate: falsemultiline.match: after……output.logstash:hosts: ["localhost:5044"]……

logstash

在config/目录,新增管道配置文件。

input {beats {port => "5044"}
}
filter {grok {# 需要根据实际log,编写正则match => { "message" => "%{COMBINEDAPACHELOG}"}}geoip {source => "clientip"}
}
output {# console输出#stdout { codec => rubydebug }elasticsearch {hosts => [ "localhost:9200" ]index => "logstash-mul-log"}
}

启动指令

logstash -f ../config/test1_pipeline.yml --config.reload.automatic

elasticSearch

安装时指定的config路径/elasticsearch.yml,例如修改或确认端口。

kibana

kibana.yml,例如修改或确认es信息,elasticsearch.hosts: ["http://localhost:9200"]。

截至到此,以上4个组件都启动后,应已开始log的采集了。接下来需要在kibana界面做些配置,以达到log搜索的目标。

  • 目标2:log搜索。

前往菜单management->stack management->index management

查看indics列表,logstash发送数据后,indics列表中可以看到index名称,具体名称要看logstash管道文件的配置,如上文logstash-mul-log。

查看index template,可以在Legacy index templates中看到logstash。

前往菜单management->stack management->Index Lifecycle Policies

编辑 logstash-policy,如自动删除多久前数据。

前往菜单management->stack management->Index patterns

新建Index patterns,要求与index template可以匹配。

前往菜单discover

选择感兴趣的index pattern,通过add filter 添加筛选条件,可以添加多个filter,彼此是and关系。

至此,可以对log进行搜索了。

在上述过程中,我认为有如下几个需要注意的位置:

  • filebeat负责多行处理
    • 这里有个问题,为什么不适用logstash的多行呢?logstash的多行会引起数据的混乱。
  • logstash filter grok 适用log的正则
  • es数据保留时间

这篇关于使用elasticstack实现log提取与搜索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Go语言使用sync.Mutex实现资源加锁

《Go语言使用sync.Mutex实现资源加锁》数据共享是一把双刃剑,Go语言为我们提供了sync.Mutex,一种最基础也是最常用的加锁方式,用于保证在任意时刻只有一个goroutine能访问共享... 目录一、什么是 Mutex二、为什么需要加锁三、实战案例:并发安全的计数器1. 未加锁示例(存在竞态)

基于Redisson实现分布式系统下的接口限流

《基于Redisson实现分布式系统下的接口限流》在高并发场景下,接口限流是保障系统稳定性的重要手段,本文将介绍利用Redisson结合Redis实现分布式环境下的接口限流,具有一定的参考价值,感兴趣... 目录分布式限流的核心挑战基于 Redisson 的分布式限流设计思路实现步骤引入依赖定义限流注解实现

SpringBoot实现虚拟线程的方案

《SpringBoot实现虚拟线程的方案》Java19引入虚拟线程,本文就来介绍一下SpringBoot实现虚拟线程的方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录什么是虚拟线程虚拟线程和普通线程的区别SpringBoot使用虚拟线程配置@Async性能对比H

基于Python实现进阶版PDF合并/拆分工具

《基于Python实现进阶版PDF合并/拆分工具》在数字化时代,PDF文件已成为日常工作和学习中不可或缺的一部分,本文将详细介绍一款简单易用的PDF工具,帮助用户轻松完成PDF文件的合并与拆分操作... 目录工具概述环境准备界面说明合并PDF文件拆分PDF文件高级技巧常见问题完整源代码总结在数字化时代,PD

Python实现Word转PDF全攻略(从入门到实战)

《Python实现Word转PDF全攻略(从入门到实战)》在数字化办公场景中,Word文档的跨平台兼容性始终是个难题,而PDF格式凭借所见即所得的特性,已成为文档分发和归档的标准格式,下面小编就来和大... 目录一、为什么需要python处理Word转PDF?二、主流转换方案对比三、五套实战方案详解方案1:

SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南

《SpringBoot集成EasyExcel实现百万级别的数据导入导出实践指南》本文将基于开源项目springboot-easyexcel-batch进行解析与扩展,手把手教大家如何在SpringBo... 目录项目结构概览核心依赖百万级导出实战场景核心代码效果百万级导入实战场景监听器和Service(核心

C# async await 异步编程实现机制详解

《C#asyncawait异步编程实现机制详解》async/await是C#5.0引入的语法糖,它基于**状态机(StateMachine)**模式实现,将异步方法转换为编译器生成的状态机类,本... 目录一、async/await 异步编程实现机制1.1 核心概念1.2 编译器转换过程1.3 关键组件解析

setsid 命令工作原理和使用案例介绍

《setsid命令工作原理和使用案例介绍》setsid命令在Linux中创建独立会话,使进程脱离终端运行,适用于守护进程和后台任务,通过重定向输出和确保权限,可有效管理长时间运行的进程,本文给大家介... 目录setsid 命令介绍和使用案例基本介绍基本语法主要特点命令参数使用案例1. 在后台运行命令2.

基于Python Playwright进行前端性能测试的脚本实现

《基于PythonPlaywright进行前端性能测试的脚本实现》在当今Web应用开发中,性能优化是提升用户体验的关键因素之一,本文将介绍如何使用Playwright构建一个自动化性能测试工具,希望... 目录引言工具概述整体架构核心实现解析1. 浏览器初始化2. 性能数据收集3. 资源分析4. 关键性能指

使用Redis快速实现共享Session登录的详细步骤

《使用Redis快速实现共享Session登录的详细步骤》在Web开发中,Session通常用于存储用户的会话信息,允许用户在多个页面之间保持登录状态,Redis是一个开源的高性能键值数据库,广泛用于... 目录前言实现原理:步骤:使用Redis实现共享Session登录1. 引入Redis依赖2. 配置R