ELK 日志系统部署实践(下)

本文涉及的产品
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
日志服务 SLS,月写入数据量 50GB 1个月
简介: ELK 日志系统部署实践

4、使用FileBeat采集MQ日志到Elasticsearch


4.1、需求分析


在资料中有一个mq_server.log.tar.gz压缩包,里面包含了很多的MQ服务器日志,现在我们为了通过在Elasticsearch中快速查询这些日志,定位问题。我们需要用FileBeats将日志数据上传到Elasticsearch中。


问题:


首先,我们要指定FileBeat采集哪些MQ日志,因为FileBeats中必须知道采集存放

在哪儿的日志,才能进行采集。


其次,采集到这些数据后,还需要指定FileBeats将采集到的日志输出到Elasticsearch,那么Elasticsearch的地址也必须指定。


4.2、配置FileBeats


FileBeats配置文件主要分为两个部分。


1. inputs

2. output


从名字就能看出来,一个是用来输入数据的,一个是用来输出数据的。


4.2.1、input配置


filebeat.inputs: 
 ‐ type: log 
 enabled: true 
 paths: 
 ‐ /var/log/*.log 
 #‐ c:\programdata\elasticsearch\logs\* 


在FileBeats中,可以读取一个或多个数据源。


FileBeats配置文件 - input4.2.2、output配置


FileBeat配置文件 - output


默认FileBeat会将日志数据放入到名称为:filebeat-%filebeat版本号%- yyyy.MM.dd 的索引中。


PS:

FileBeats中的filebeat.reference.yml包含了FileBeats所有支持的配置选项。


4.3、配置文件


  1. 创建配置文件


cd /usr/local/es/filebeat‐7.6.1‐linux‐x86_64
 touch filebeat_mq_log.yml
 vim filebeat_mq_log.yml 


  1. 复制以下到配置文件中


filebeat.inputs: 
 ‐ type: log 
 enabled: true4 paths: 
 ‐ /var/mq/log/server.log.* 
 output.elasticsearch: 
 hosts: ["192.168.21.130:9200", "192.168.21.131:9200", "192.168.21.132: 
9200"] 


4.4、运行FileBeat


  1. 启动Elasticsearch


在每个节点上执行以下命令,启动Elasticsearch集群:


nohup /usr/local/es/elasticsearch‐7.6.1/bin/elasticsearch 2>&1 &


  1. 运行FileBeat


./filebeat ‐c filebeat_mq_log.yml ‐e


  1. 将日志数据上传到/var/mq/log,并解压


mkdir ‐p /var/mq/log 
 cd /var/mq/log 
 tar ‐zxvf mq_server.log.tar.gz 


4.5、查询数据


通过head插件,我们可以看到filebeat采集了日志消息,并写入到Elasticsearch 集群中。


五、FileBeat是如何工作的


FileBeat主要由input和harvesters(收割机)组成。这两个组件协同工作,并将

数据发送到指定的输出。


1、input和harvester1.1、inputs(输入)


input是负责管理Harvesters和查找所有要读取的文件的组件,如果输入类型是 log,input组件会查找磁盘上与路径描述的所有文件,并为每个文件启动一个Harvester,每个输入都独立地运行1.2、Harvesters(收割机)。


Harvesters负责读取单个文件的内容,它负责打开/关闭文件,并逐行读取每个

文件的内容,将读取到的内容发送给输出


每个文件都会启动一个Harvester ,Harvester运行时,文件将处于打开状态。如果文件在读取时,被移除或者重命名,FileBeat将继续读取该文件


2、FileBeats如何保持文件状态


FileBeat保存每个文件的状态,并定时将状态信息保存在磁盘的「注册表」文件


该状态记录Harvester读取的最后一次偏移量,并确保发送所有的日志数据,如果输出(Elasticsearch或者Logstash)无法访问,FileBeat会记录成功发送的最后一行,并在输出(Elasticsearch或者Logstash)可用时,继续读取文件发送数据。在运行FileBeat时,每个input的状态信息也会保存在内存中,重新启动FileBeat时,会从「注册表」文件中读取数据来重新构建状态。


在/usr/local/es/filebeat-7.6.1-linux-x86_64/data目录中有一个Registry文件夹,里面有一个data.json,该文件中记录了Harvester读取日志的offset。


六. Logstash


1、简介


Logstash是一个开源的数据采集引擎。它可以动态地将不同来源的数据统一采集,并按照指定的数据格式进行处理后,将数据加载到其他的目的地。最开始,Logstash主要是针对日志采集,但后来Logstash开发了大量丰富的插件,所以,它可以做更多的海量数据的采集。


它可以处理各种类型的日志数据,例如:Apache的web log、Java的log4j日志数据,或者是系统、网络、防火墙的日志等等。它也可以很容易的和Elastic Stack的Beats组件整合,也可以很方便的和关系型数据库、NoSQL数据库、MQ等整合。


1.1 经典架构1.2 对比FileBeat


logstash是jvm跑的,资源消耗比较大,而FileBeat是基于golang编写的,功能较少但资源消耗也比较小,更轻量级。


logstash 和filebeat都具有日志收集功能,Filebeat更轻量,占用资源更少,logstash 具有filter功能,能过滤分析日志。


一般结构都是filebeat采集日志,然后发送到消息队列,redis,MQ中然后logstash去获取,利用filter功能过滤分析,然后存储到elasticsearch中,FileBeat和Logstash配合,实现背压机制2 安装Logstash和Kibana


2.1 安装Logstash


  1. 下载Logstash


www.elastic.co/cn/download…


此处:我们可以选择资料中的logstash-7.6.1.zip安装包。


2. 解压Logstash到指定目录


unzip logstash‐7.6.1 ‐d /usr/local/es/


  1. 运行测试


cd /usr/local/es/logstash‐7.6.1/ 
bin/logstash ‐e 'input { stdin { } } output { stdout {} }'


等待一会,让Logstash启动完毕。


Sending Logstash logs to /usr/local/es/logstash‐7.6.1/logs which is now co 
nfigured via log4j2.properties 
[2021‐02‐28T16:31:44,159][WARN ][logstash.config.source.multilocal] Ignori 
ng the 'pipelines.yml' file because modules or command line options are speci 
fied 
[2021‐02‐28T16:31:44,264][INFO ][logstash.runner ] Starting Logst 
ash {"logstash.version"=>"7.6.1"} 
[2021‐02‐28T16:31:45,631][INFO ][org.reflections.Reflections] Reflections 
took 37 ms to scan 1 urls, producing 20 keys and 40 values 
[2021‐02‐28T16:31:46,532][WARN ][org.logstash.instrument.metrics.gauge.Laz 
yDelegatingGauge][main] A gauge metric of an unknown type (org.jruby.RubyArra 
y) has been create for key: cluster_uuids. This may result in invalid seriali 
zation. It is recommended to log an issue to the responsible developer/devel 
opment team. 
[2021‐02‐28T16:31:46,560][INFO ][logstash.javapipeline ][main] Starting 
pipeline {:pipeline_id=>"main", "pipeline.workers"=>2, "pipeline.batch.size"= 
>125, "pipeline.batch.delay"=>50, "pipeline.max_inflight"=>250, "pipeline.sou 
rces"=>["config string"], :thread=>"#<Thread:0x3ccbc15b run>"} 
[2021‐02‐28T16:31:47,268][INFO ][logstash.javapipeline ][main] Pipeline 
started {"pipeline.id"=>"main"} 
The stdin plugin is now waiting for input: 
[2021‐02‐28T16:31:47,348][INFO ][logstash.agent ] Pipelines runn 
ing {:count=>1, :running_pipelines=>[:main], :non_running_pipelines=>[]} 
[2021‐02‐28T16:31:47,550][INFO ][logstash.agent ] Successfully s 
tarted Logstash API endpoint {:port=>9600} 


然后,随便在控制台中输入内容,等待Logstash的输出。


{
 "host" => "127.0.0.1",
 "message" => "hello logstash",
 "@version" => "1",
 "@timestamp" => 2021‐02‐28:01:01.007Z
 }


ps:-e选项表示,直接把配置放在命令中,这样可以有效快速进行测试文档


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
Rust 前端开发 JavaScript
Tauri 开发实践 — Tauri 日志记录功能开发
本文介绍了如何为 Tauri 应用配置日志记录。Tauri 是一个利用 Web 技术构建桌面应用的框架。文章详细说明了如何在 Rust 和 JavaScript 代码中设置和集成日志记录,并控制日志输出。通过添加 `log` crate 和 Tauri 日志插件,可以轻松实现多平台日志记录,包括控制台输出、Webview 控制台和日志文件。文章还展示了如何调整日志级别以优化输出内容。配置完成后,日志记录功能将显著提升开发体验和程序稳定性。
150 1
Tauri 开发实践 — Tauri 日志记录功能开发
|
23天前
|
存储 数据采集 监控
云上数据安全保护:敏感日志扫描与脱敏实践详解
随着企业对云服务的广泛应用,数据安全成为重要课题。通过对云上数据进行敏感数据扫描和保护,可以有效提升企业或组织的数据安全。本文主要基于阿里云的数据安全中心数据识别功能进行深入实践探索。通过对商品购买日志的模拟,分析了如何使用阿里云的工具对日志数据进行识别、脱敏(3 种模式)处理和基于 StoreView 的查询脱敏方式,从而在保障数据安全的同时满足业务需求。通过这些实践,企业可以有效降低数据泄漏风险,提升数据治理能力和系统安全性。
云上数据安全保护:敏感日志扫描与脱敏实践详解
|
2天前
|
存储 安全 Java
Spring Boot 3 集成Spring AOP实现系统日志记录
本文介绍了如何在Spring Boot 3中集成Spring AOP实现系统日志记录功能。通过定义`SysLog`注解和配置相应的AOP切面,可以在方法执行前后自动记录日志信息,包括操作的开始时间、结束时间、请求参数、返回结果、异常信息等,并将这些信息保存到数据库中。此外,还使用了`ThreadLocal`变量来存储每个线程独立的日志数据,确保线程安全。文中还展示了项目实战中的部分代码片段,以及基于Spring Boot 3 + Vue 3构建的快速开发框架的简介与内置功能列表。此框架结合了当前主流技术栈,提供了用户管理、权限控制、接口文档自动生成等多项实用特性。
27 8
|
14天前
|
存储 监控 安全
网络安全视角:从地域到账号的阿里云日志审计实践
日志审计的必要性在于其能够帮助企业和组织落实法律要求,打破信息孤岛和应对安全威胁。选择 SLS 下日志审计应用,一方面是选择国家网络安全专用认证的日志分析产品,另一方面可以快速帮助大型公司统一管理多组地域、多个账号的日志数据。除了在日志服务中存储、查看和分析日志外,还可通过报表分析和告警配置,主动发现潜在的安全威胁,增强云上资产安全。
|
1月前
|
存储 监控 安全
什么是事件日志管理系统?事件日志管理系统有哪些用处?
事件日志管理系统是IT安全的重要工具,用于集中收集、分析和解释来自组织IT基础设施各组件的事件日志,如防火墙、路由器、交换机等,帮助提升网络安全、实现主动威胁检测和促进合规性。系统支持多种日志类型,包括Windows事件日志、Syslog日志和应用程序日志,通过实时监测、告警及可视化分析,为企业提供强大的安全保障。然而,实施过程中也面临数据量大、日志管理和分析复杂等挑战。EventLog Analyzer作为一款高效工具,不仅提供实时监测与告警、可视化分析和报告功能,还支持多种合规性报告,帮助企业克服挑战,提升网络安全水平。
|
2月前
|
存储 数据采集 监控
云上数据安全保护:敏感日志扫描与脱敏实践详解
随着企业对云服务的广泛应用,数据安全成为重要课题。通过对云上数据进行敏感数据扫描和保护,可以有效提升企业或组织的数据安全。本文主要基于阿里云的数据安全中心数据识别功能进行深入实践探索。通过对商品购买日志的模拟,分析了如何使用阿里云的工具对日志数据进行识别、脱敏(3 种模式)处理和基于 StoreView 的查询脱敏方式,从而在保障数据安全的同时满足业务需求。通过这些实践,企业可以有效降低数据泄漏风险,提升数据治理能力和系统安全性。
|
3月前
|
Web App开发 存储 监控
iLogtail 开源两周年:UC 工程师分享日志查询服务建设实践案例
本文为 iLogtail 开源两周年的实践案例分享,讨论了 iLogtail 作为日志采集工具的优势,包括它在性能上超越 Filebeat 的能力,并通过一系列优化解决了在生产环境中替换 Filebeat 和 Logstash 时遇到的挑战。
149 13
|
2月前
|
存储 Linux Docker
centos系统清理docker日志文件
通过以上方法,可以有效清理和管理CentOS系统中的Docker日志文件,防止日志文件占用过多磁盘空间。选择合适的方法取决于具体的应用场景和需求,可以结合手动清理、logrotate和调整日志驱动等多种方式,确保系统的高效运行。
210 2
|
3月前
|
XML JSON 监控
告别简陋:Java日志系统的最佳实践
【10月更文挑战第19天】 在Java开发中,`System.out.println()` 是最基本的输出方法,但它在实际项目中往往被认为是不专业和不足够的。本文将探讨为什么在现代Java应用中应该避免使用 `System.out.println()`,并介绍几种更先进的日志解决方案。
84 1
|
3月前
|
监控 网络协议 安全
Linux系统日志管理
Linux系统日志管理
72 3