使用elasticstack实现log提取与搜索

阅读: 评论:0

使用elasticstack实现log提取与搜索

使用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] | Elastic.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配置,例如f。

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

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

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

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

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

  • es

elasticSearch介绍与使用_陈海龙的格物之路-CSDN博客首先一起了解elasticSearch,然后结合springData,看看如何使用elasticSearch。

  • kibana

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

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

  • 目标1:log提取。

filebeat

filebeat.inputs:- type: logenabled: truepaths:- D:logslogstash-tutorial-dataset#- /var/log/*.log#- c:programdataelasticsearchlogs*#处理多行,由于filesystem不支持多行,所以选择pe: patternmultiline.pattern: '^[[:space:]]+(at|.{3})[[:space:]]+b|^Caused by:&#ate: 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/l --load.automatic

elasticSearch

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

kibana

截至到此,以上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数据保留时间

本文发布于:2024-01-29 03:12:55,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170646917612286.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:elasticstack   log
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23