可观测性是什么-全面的初学者指南_什么是可观测性分析,2024年最新Golang最新大厂面试真题总结

可观测性让我们从外部理解一个系统,让我们在不了解其内部工作原理的情况下提出有关该系统的问题。此外,它使我们能够轻松地排除和处理新问题(即“未知的未知数”),并帮助我们回答“为什么会发生这种情况”的问题。

opentelemetry.io

询问有关该系统的问题意味着收集有关系统如何执行和行为的信息和见解的能力。

让我们看一个实际的例子。

想象一下,您正在管理一个电子商务网站,其中包含许多微服务,例如前端服务,产品服务,购物车服务,订单服务,支付服务等。

网站突然开始缓慢加载。

如果没有可观测性,您可能需要挖掘代码、数据库响应时间、API 延迟、第三方服务延迟,并手动检查各种组件以找到问题。

但是,有了可观测性工具,您可以“提出问题”,例如:

  1. 网站在过去一小时内的平均响应时间是多少?
  2. 错误率是否有任何峰值?
  3. 哪个特定服务或组件的响应时间最长?
  4. 数据库查询响应时间如何?
  5. 是否有特定类型的请求或事务出现延迟?
  6. 速度变慢是在所有用户之间一致还是特定于某个区域?

这些问题可以通过应用程序日志、指标和跟踪提供的数据来回答。

  1. 日志记录库记录应用程序中发生的事件。
  2. 指标提供有关系统运行的数字数据(如响应时间、请求数等)。使用库对应用程序进行检测,以发出指标
  3. 跟踪使用 OpenTelemetry 或 APM(应用程序性能监控)代理等库跟踪请求通过分布式系统中的各种服务的旅程。

通过分析这些数据,您可以确定,例如,速度变慢是由于特定服务响应时间过长,可能是由于最近的代码更改或负载增加。这样可以更快、更有效地解决问题。

现在你可能会想,这听起来像是典型的监控。但事实并非如此。让我们了解监控和可观测性之间的区别。

可观测性与监控之间的区别

对于DevOps引擎人员或刚刚开始进入SRE的人来说,彻底了解可观测性与监控之间的区别非常重要。

以下是DORA关于可观测性和监控的研究。

监控是一种工具或技术解决方案,允许团队监视和了解其系统的状态。监控基于收集预定义的指标或日志集。

可观测性是一种工具或技术解决方案,允许团队主动调试他们的系统。可观测性基于探索未预先定义的属性和模式。

devops-research.com

监视是关于密切关注已知问题和应用程序/系统指标。

它涉及为特定指标(如 CPU 使用率、内存使用率、响应时间、数据库查询执行时间、4xx、5xx 错误率等)和其他记录在案的监控 KPI 设置警报和阈值,以便在出现问题时通知团队。

因此,监控的重点是根据预定义的指标和日志跟踪系统的状态和运行状况。

例如,当服务器的CPU使用率超过80%或API响应时间超过2秒时,监控工具会发出告警。

另一方面,可观察性更进一步。

它是关于通过查看其输出(如日志、指标和跟踪)来了解应用程序和系统的内部状态。这不仅要知道什么时候出错,还要了解为什么会出错。

可观测性的关键焦点是更具探索性和调查性,允许您就应用程序行为提出任意问题,并诊断您没有预料到的问题。

例如,当网站开始意外变慢时,您可以使用可观测性工具来分析数据模式、跟踪请求和查看日志,以确定最近的代码部署是否导致了内存泄漏,从而导致响应时间变慢。

简单地说,监控会告诉您系统出现故障,而可观测性可帮助您找出系统出现故障的原因。

现在我们已经对可观测性有了全面的了解,让我们看一下关键的可观测性概念。

可观测性概念

以下是可观测性的三大支柱。

  1. Metrics
  2. Logs
  3. Traces

可观测性的组件

Logs

日志记录了应用程序中的事件。日志条目通常包含有关所发生事件的信息,包括时间戳、事件描述、严重性级别,有时还包括用户 ID 或会话 ID 等其他上下文。

2023-11-20 10:15:32 INFO UserService: Starting getUserById for userId=12345
2023-11-20 10:15:32 DEBUG UserService: Fetching user data from database for userId=12345
2023-11-20 10:15:33 INFO UserService: User data retrieved successfully for userId=12345
2023-11-20 10:15:34 WARN UserService: User 12345 has outdated profile information
2023-11-20 10:15:35 ERROR UserService: Failed to send notification email to userId=12345, email=johndoe@example.com
2023-11-20 10:15:35 INFO UserService: getUserById completed for userId=12345

开发人员负责登录代码。由于大多数软件库和语言都具有内置功能,因此日志易于实现。以下是不同类型日志格式的几个示例。

  1. **纯文本:**以人类可读文本记录的最简单形式。
  2. 结构化:以机器可读格式(JSON、XML 等)构建的日志条目
  3. 二进制格式:以二进制格式存储的日志(Protobuf 日志、MySQL 二进制日志、Systemd 日志等)
  4. **自定义格式:**满足特定的项目要求。
Metrics

指标是以在一段时间间隔内测量的数字表示的数据。

例如,prometheus 中的**node_memory_MemAvailable_bytes指标显示可用内存量(以字节为单位)。http_request_duration_seconds**指标跟踪 HTTP 请求的持续时间。

以下是 Prometheus 导出器生成的指标示例。

http_requests_total{method=“post”,code=“200”} 1027
http_requests_total{method=“post”,code=“400”} 3
http_request_duration_seconds_bucket{le=“+Inf”} 134091
http_request_duration_seconds_sum 52123
http_request_duration_seconds_count 134091
node_memory_MemAvailable_bytes 2.147483648e+09
node_cpu_seconds_total{mode=“user”} 9123.42

指标在可观测性方面发挥着关键作用。通过指标,您可以一目了然地了解系统状态和随时间的变化,并帮助您发现不同时间系统行为的趋势和模式。

Traces & Spans

“追踪”和“跨度”是主要用于分布式跟踪的术语。

分布式追踪是一种用于跟踪和监视通过分布式系统的请求流的方法,尤其是在微服务体系结构中。

让我们看一个使用微服务构建的电子商务应用程序示例。

当用户下订单时,请求会通过多个服务传输:它首先到达订单处理服务,然后与库存、付款和用户帐户服务进行通信。

分布式跟踪将跨所有这些服务跟踪此请求。

在这里,Trace表示单个订单请求通过系统的整个旅程。每个跟踪都由多个跨度组成,其中每个 Span表示跟踪中的特定操作或进程。

跨度可以是对微服务、数据库查询或任何其他离散工作单元的调用。

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Go语言工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Go语言全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Golang知识点,真正体系化!

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
img

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

讲义、实战项目、讲解视频,并且后续会持续更新**

如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Go)
[外链图片转存中…(img-U5G2unw8-1713019976016)]

一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 16
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值