16、架构-可观测性-事件日志详细解析
事件日志
事件日志是记录系统运行期间发生的离散事件的关键工具。它们在系统的可观测性中起着至关重要的作用,帮助开发者和运维人员追踪、分析和解决系统问题。以下是对事件日志处理各个方面的详细解析,并结合具体的数据案例和技术支撑。
输出
日志输出是记录系统行为的基础步骤。输出日志的信息应包括系统执行的操作、发生的异常或警告以及定期任务等。一个好的日志输出应做到如下几点:
-
避免打印敏感信息:日志中不应包含密码、银行账号、身份证号等敏感信息。例如,在某次系统检查中发现某系统日志中打印了用户的密码,这是极其危险的行为,容易导致信息泄露。
-
避免引用慢操作:日志记录应尽量避免引用需要大量计算或远程调用的数据。例如,一个系统在记录用户行为时,直接调用数据库查询用户详细信息,导致日志记录操作耗时过长,影响系统性能。
-
处理请求时的TraceID:每个请求应带有唯一的TraceID,以便在分布式系统中追踪整个请求链条。例如,使用Spring Cloud Sleuth可以自动生成和记录TraceID,帮助在分布式系统中快速定位问题。
-
系统启动时输出配置信息:系统启动时应记录非敏感的配置信息,如数据库连接信息、临时目录路径等。这些信息有助于在系统出问题时进行诊断。
技术支撑和数据案例
在某金融系统中,通过Spring Cloud Sleuth为每个请求生成TraceID,并在日志中记录。所有日志集中收集到Elasticsearch中,运维人员可以通过Kibana查询和分析每个请求的详细链路,快速定位和解决问题。
收集与缓冲
分布式系统中的日志记录需要集中收集和缓冲,以便统一查询和分析。以下是日志收集与缓冲的几个关键点:
-
日志收集器的部署:在每个节点部署轻量级的日志收集器,如Filebeat,以收集日志并发送到集中存储系统。Filebeat作为一个轻量级的日志收集器,使用Golang编写,性能高效,适合大规模分布式系统的日志收集需求。
-
缓冲层的使用:面对突发流量时,可以在日志收集器和存储系统之间加入缓冲层,如Kafka或Redis,以削峰填谷。例如,某大规模系统每天的日志量超过10PB,使用Kafka作为缓冲层,有效缓解了Logstash和Elasticsearch的处理压力。
技术支撑和数据案例
某电商平台每天处理数百万次用户请求,日志量巨大。通过使用Filebeat收集日志,Kafka进行缓冲,Logstash进行加工和聚合,最终存储到Elasticsearch中。使用Kibana进行可视化分析,实现了对用户行为的实时监控和分析。
加工与聚合
收集到的日志通常是非结构化的,需要经过加工和聚合处理,以便后续查询和分析。以下是日志加工与聚合的几个步骤:
-
结构化日志数据:使用Logstash等工具将非结构化的日志数据转换为结构化数据。例如,将Nginx的访问日志解析为包含IP地址、请求时间、请求类型等字段的结构化数据。
-
日志聚合:在日志数据进入存储系统之前,先进行聚合处理。例如,统计某段时间内各类请求的数量,并生成相关的可视化报表。这样可以减少存储系统的实时计算压力。
技术支撑和数据案例
在某金融系统中,通过使用Logstash将非结构化的日志数据转换为结构化数据,并进行聚合处理。例如,统计每分钟内的交易请求数量,并生成可视化报表,方便分析交易高峰期和系统性能瓶颈。
存储与查询
日志数据最终需要存储在高效的查询系统中,以便快速检索和分析。以下是存储与查询的几个关键点:
-
Elasticsearch的使用:Elasticsearch作为日志存储和查询的核心组件,具有强大的全文检索和近实时查询能力。它可以与Kibana结合,提供强大的可视化和分析功能。例如,某系统使用Elasticsearch和Kibana进行日志分析,实现了对系统运行状态的实时监控和问题排查。
-
日志数据的索引和查询:在Elasticsearch中,对日志数据进行索引,使得查询操作更加高效。例如,通过索引TraceID字段,可以快速定位和分析分布式系统中的请求链路,帮助排查系统故障。
技术支撑和数据案例
某电商平台使用Elasticsearch和Kibana进行日志存储和查询,通过索引用户ID和请求时间字段,实现了对用户行为的快速检索和分析。例如,可以快速查询某用户在某段时间内的所有请求记录,帮助分析用户行为模式和系统异常。
总结
事件日志是分布式系统可观测性的重要组成部分。通过科学合理的日志输出、收集、缓冲、加工、聚合和存储查询,可以实现对系统运行状态的实时监控和问题排查。上述方法和技术,不仅适用于大规模分布式系统,也可以为中小型系统提供有效的解决方案。通过实际案例的分析,可以看到这些技术在提升系统可观测性方面的显著效果,为系统的稳定运行保驾护航。
扩展学习
为了更深入地理解和掌握事件日志的处理,可以参考以下资源和工具:
- Spring Cloud Sleuth:了解如何在分布式系统中实现请求追踪和日志记录。
- Filebeat:学习如何部署和配置Filebeat以实现日志收集。
- Kafka:了解Kafka在日志缓冲和消息传递中的应用。
- Logstash:学习如何使用Logstash进行日志数据的加工和聚合。
- Elasticsearch:深入学习Elasticsearch的索引和查询优化技术。
- Kibana:了解如何使用Kibana进行日志数据的可视化和分析。
通过对这些工具和技术的深入学习和实践,可以进一步提升系统的可观测性和日志管理能力。
相关文章:
16、架构-可观测性-事件日志详细解析
事件日志 事件日志是记录系统运行期间发生的离散事件的关键工具。它们在系统的可观测性中起着至关重要的作用,帮助开发者和运维人员追踪、分析和解决系统问题。以下是对事件日志处理各个方面的详细解析,并结合具体的数据案例和技术支撑。 输出 日志输出…...
Java数据结构与算法(买卖股票的最佳时机二贪心算法)
前言 买卖股票最佳时机二,此时不限次数的买卖的要求获得的利益最大化。暴力算法依旧可行,可以参考之前的练习。 . - 力扣(LeetCode) 贪心算法原理参考:Java数据结构与算法(盛水的容器贪心算法)-CSDN博客 实现原理 1.定义最大…...
t265 坑
Streaming T265 video over USB 2.1 is unreliable, please use USB 3 or only stream poses 试着用windows 打开也是默认是USB2打开, 英伟达orin nx jetpack 也一样 不知道为啥。并且一旦打开飞控 microxrceagent , t265 的位置就飞。 配置ros2 的lau…...
【LLM之RAG】Adaptive-RAG论文阅读笔记
研究背景 文章介绍了大型语言模型(LLMs)在处理各种复杂查询时的挑战,特别是在不同复杂性的查询处理上可能导致不必要的计算开销或处理不足的问题。为了解决这一问题,文章提出了一种自适应的查询处理框架,动态选择最合…...
介绍react
什么是React React是一个用于构建用户界面的JavaScript库。 传统构建页面的方式 <script>document.getElementById(app).addEventListener(click, () > {console.log()});const div docuemnt.createElement(div)// ... </script> 早期,用JavaSc…...
网络爬虫概述
自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 网络爬虫(又被称为网络蜘蛛、网络机器人,在某社区中经常被称为网页追逐者),可以按照指定的规则&#…...
取证工作: SysTools SQL Log Analyzer, 完整的 SQL Server 日志取证分析
天津鸿萌科贸发展有限公司是 Systools 系列软件的授权代理商。 SysTools SQL Log Analyzer 是 Systools 取证工具系列之一,用于调查 SQL Server 事务日志,以对数据库篡改进行取证分析。 什么是 SQL Server 事务日志? 在深入研究 SQL 事务日…...
蓝牙耳机怎么连接电脑?轻松实现无线连接
蓝牙耳机已经成为许多人生活中不可或缺的一部分,不仅可以方便地连接手机,还能轻松连接电脑,让我们在工作和娱乐时享受无线的自由。然而,对于一些用户来说,将蓝牙耳机与电脑连接可能会遇到一些问题。本文将介绍蓝牙耳机…...
4.音视频 AAC SSAASS
目录 AAC 1.什么是ADIF和ADTS? 2.ADTS的数据结构是怎样的? SSA/ASS 1.SSA/ASS的基本结构 AAC AAC(Advanced Audio Coding,高级音频编码)是一种声音数据的文件压缩格式。AAC分为ADIF和ADTS两种文件格式。 1.什么是ADIF和ADTSÿ…...
每日5题Day24 - LeetCode 116 - 120
每一步向前都是向自己的梦想更近一步,坚持不懈,勇往直前! 第一题:116. 填充每个节点的下一个右侧节点指针 - 力扣(LeetCode) /* // Definition for a Node. class Node {public int val;public Node left;…...
在笔记本电脑上使用 LLMs 的 5 种方法
在网上使用 ChatGPT 很简单,只需有网络连接和好的浏览器即可。但这样做可能会泄露您的隐私和数据。OpenAI 存储了您的提示和其他元数据以重新训练模型。对于一些人来说可能不成问题,但注重隐私的人可能更愿意在本地使用这些模型,不受外部跟踪…...
Linux内存从0到1学习笔记(8.15 MMU/IOMMU/SMMU概览)
一, 什么是MMU? MMU(Memory Management Unit 内存管理单元),即内存管理单元,是计算机硬件中的一个重要组件,主要负责处理中央处理器(CPU)的内存访问请求。 其工作原理如下: 当程序发出内存访问请求,包括读取或写入操作以及逻辑地址(虚拟地址)。然后,MMU根据页表…...
Intellij IDEA中怎么配置Maven?
在IntelliJ IDEA中配置Maven非常简单,以下是详细步骤: 步骤1:安装Maven 首先确保你的计算机上已经安装了Maven。如果没有安装,你可以从Apache Maven官网下载并安装:https://maven.apache.org/download.cgi 步骤2&am…...
操作系统-内存管理
虚拟内存 操作系统会提供⼀种机制,将不同进程的虚拟地址和不同内存的物理地址映射起来。 两个概念: 程序所使⽤的内存地址叫做虚拟内存地址(Virtual Memory Address)实际存在硬件⾥⾯的空间地址叫物理内存地址(Physi…...
C++中的解释器模式
目录 解释器模式(Interpreter Pattern) 实际应用 算术表达式解释器 布尔表达式解释器 总结 解释器模式(Interpreter Pattern) 解释器模式是一种行为设计模式,它定义了一种语言的文法表示,并使用解释器…...
用 C 语言实现求补码的运算
缘起 前两天程序中需要求一堆参数的补码,一时犯懒,想从CSDN上搜一个勉强能用的代码借鉴一下,结果几乎没有搜到一个靠谱的!这种求补码的操作,用脚趾头想想也应该知道要用C或者C的位运算来实现呀。结果搜到的一些实现方…...
python下载文件
import urllib.request url "http://****/storage/x4MigEhU6BGAuTqjrRfIBky0S2aMmkyGl4UzTqUb.png"#下载地址 path "ddad.png"#保存路径,保存项目路径 urllib.request.urlretrieve(url, path)...
JMU 数科 数据库与数据仓库期末总结(1)
本章根据老师给出的知识点作进一步相对生动一点的解释。 不保证完全正确。 先给出总的知识点,再给出生动解释。 知识点 数据模型通常由三部分组成:数据结构、数据操作和完整性约束。关系模式中主码的取值必须唯一且非空,这是实体完整性的…...
前端问题整理
Vue vue mvvm(Model-View-ViewModel)架构模式原理 Model 是数据层,即 vue 实例中的数据View 是视图层, 即 domViewModel,即连接Model和Vue的中间层,Vue实例就是ViewModelViewModel 负责将 Model 的变化反映…...
【实践功能记录6】表格列悬浮展示tooltip信息
需求描述: 鼠标悬浮在表格的IP字段上时,使用tooltip展示IP信息,如图: 1.封装根据IP展示信息的组件 请求接口获取IP信息,注意请求接口时防抖 <!-- 根据IP展示资产信息 --> <template><div><el-…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
MongoDB学习和应用(高效的非关系型数据库)
一丶 MongoDB简介 对于社交类软件的功能,我们需要对它的功能特点进行分析: 数据量会随着用户数增大而增大读多写少价值较低非好友看不到其动态信息地理位置的查询… 针对以上特点进行分析各大存储工具: mysql:关系型数据库&am…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
【项目实战】通过多模态+LangGraph实现PPT生成助手
PPT自动生成系统 基于LangGraph的PPT自动生成系统,可以将Markdown文档自动转换为PPT演示文稿。 功能特点 Markdown解析:自动解析Markdown文档结构PPT模板分析:分析PPT模板的布局和风格智能布局决策:匹配内容与合适的PPT布局自动…...
令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
Go语言多线程问题
打印零与奇偶数(leetcode 1116) 方法1:使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...
