学习
实践
活动
工具
TVP
写文章
专栏首页CNCF可观测性是什么?

可观测性是什么?

客座文章最初由Elastisys高级云架构师Cristian Klein在Elastisys博客[1]上发表

想象一下,在没有财务预测的情况下经营一家企业,甚至不知道银行里还剩下多少钱。你如何知道你是在一个巨大的现金缓冲中游泳,或者如果你需要跳过客户的午餐由于资金不足?不注意财务状况,就不可能经营健康的企业。类似地,如果不观察计算基础设施,就不可能保持应用程序健康运行。

事实上,可观察性非常重要,到2021年2月,CNCF列出了102个可观察性项目[2]。可观察性不仅重要,而且昂贵。Netflix被戏称为“一个产生大量日志的平台,同时也是一个流视频平台”。可观察性之所以昂贵,有两个原因:

  1. 可观测性需要比被观测的系统至少可靠一个数量级。否则,你将继续调试你的可观察性堆栈,而不是使用它来保持你的应用程序运行。
  2. 因为你永远不知道要观察什么,直到事件发生后,观察多于需要的东西是很常见的。一个好的汽车司机不仅要向前看,而且还要不断扫视周围以避免事故。

在这篇文章中,让我们深入探讨一下可观察性:它是什么,不同类型的可观察性,以及实现可观察性在技术上意味着什么。在这篇文章的最后,你会明白为什么你应该抵制住在可观察性上节省一些钱的诱惑。

可观测性是什么?

可观测性有许多名称,如监测、审计、遥测、测仪。忽略这些细微差别,所有这些词本质上的意思都是一样的:度量你的基础设施、平台和应用程序,以了解它是如何运行的。正如Peter Drucker曾经说过的:“如果你不能测量它,你就无法管理它。”

如果你熟悉精益思维——即构建-度量-学习——那么可观察性是十分自然。可观测性通过“测量”阶段闭合反馈回路。它允许你的团队对应用程序进行快速更改,快速适应其用户基础和环境,而不会产生不必要的意外。良好的可观察性可以将“凌晨2点被唤醒”转换为日常检查。

但是可观测性究竟是什么呢?

当谈到可观察性时,我们通常尝试回答三个问题:

  1. 我的用户满意吗?
  2. 我的应用令人满意?
  3. 我的服务器良好吗?

我们通过三种方式做到这一点:追踪、日志和指标。前者产生更多的数据,但不一定更多的洞察力。如今,这些技术都有望接近实时。(你愿意要一个告诉你昨天的心率的心率监测器吗?)

让我们来看看日志记录和指标,这两个你绝对应该拥有的。

日志记录

Kibana的截图,它和Elasticsearch一起,是领先的日志解决方案。

在编写应用程序时,你的团队通常会添加“日志”代码。当代码执行经过一个主要事件时,这些显式的指令将产生一个日志行,即一堆有意义的文本。例如,“用户X已登录”或“用户Y身份验证失败”等等。这几行是问你的客户“他们是否尝试清理浏览器缓存并重新加载”或实际调查他们的投诉之间的区别。

日志记录是非常显式的:你的团队需要添加日志记录代码,并且需要预见要记录什么。经验法则是,所有主要的边界事件都需要被记录。有些应用程序错误只在生产环境中出现,所以你应该选择“日志过多”而不是“日志不足”。否则,大量时间就会浪费在寻找所谓的Heisenbug上:这种bug很难复制,但却会引起用户的不满。

日志记录会产生大量的数据。为了节省成本,最好考虑短期和长期日志。短期日志-例如,最近7天-应该是“可谷歌的”,也就是说,你应该能够在几秒钟内执行全文搜索。像Elasticsearch/Kibana[3]Loki[4]这样的项目最适合这个目的。

长期日志可以以最便宜的形式存储,通常是对象存储。它们不能立即“谷歌化”,因此,需要通过它们进行搜索的可能性也很小。

有时,你并不关心确切的日志行,而是关心特定事件发生的次数。这些信息可以从日志中提取,但是有一种更有效的方法:指标。

指标

Grafana的截图,一个用于可视化指标的领先项目。

指标——也称为服务水平指标(SLI)或关键性能指标(KPI)——是数字值的时间序列。可以把它想象成每小时记录所有大城市的室外温度。指标使用最少的空间,提供最多的洞察力。它们可以记录每小时活动用户的数量、应用程序收到的请求的数量、可用磁盘空间的数量等。关注指标可以确保你的用户在使用应用程序时获得良好的体验,同时还可以降低基础设施的成本。

指标是相当显式的。你的团队需要添加用于收集和暴露给定指标的代码。然而,市面上最常用的工具,如Nginx、Kubernetes或MySQL,已经输出了大量的指标,这些指标应该可以为你提供良好的态势感知。

Prometheus[5]这样的项目可以帮助你从应用程序中收集所需的指标,而Grafana可以帮助你可视化它们。事实上,我认为满是Grafana仪表板的屏幕是办公室墙壁的一个很好的装饰。你知道,当我们能去办公室工作的时候。

到目前为止,我们讨论了可视化,也就是一种更有意为之的可观察性。但是,如果这个系统现在需要关注呢?

警报

警报就像系统“呼救”,请求人类的注意。通常,如果给定的指标超过了阈值,随叫随到的人员就会收到Slack或微软团队中的电子邮件、短信或消息。可以实现自动升级,例如,如果第一个随叫人在30分钟内没有响应警报,第二个随叫人就会得到警报。

警报是棘手的。警报太多,系统就会“呼狼来了”。你的团队将以“警惕疲劳”结束,并开始忽视甚至是重要的问题。提醒太少,你的客户就会为你“做提醒”……

因此,“何时发出警报”的门槛应该很高。这是“凌晨2点”或“求救”事件吗?也就是说,如果发生这种情况,应该叫醒某人吗?或者这是一个“泛泛”的事件,可以在白天处理?

幸运的是,像Prometheus这样的项目不仅能发出警报,还能进行预测。知道磁盘将在72小时内被填满,可以防止客户因停机而失望,也可以防止破坏团队成员的良好睡眠。

总结

缺乏可观察性就像闭着眼睛开车:你不知道离灾难有多近。你开得越快,路越忙,你就越要小心。

可观察性也是一样:你越想让你的团队越快地添加特性,你就越应该在可观察性上投资。而且,虽然在可观察性上节省一些钱可能很诱人,但这些节省将在下一次缓慢修复事件中迅速消失。

要寻找通过CNCF认证的开源Kubernetes发行版,该发行版带有用于日志、指标和警报的预先配置工具吗?查看Compliant Kubernetes文档[6],请考虑使用它!我们欢迎贡献。

参考资料

[1]

Elastisys博客: https://elastisys.com/what-was-observability-again/

[2]

102个可观察性项目: https://landscape.cncf.io/card-mode?category=observability-and-analysis&grouping=category

[3]

Elasticsearch/Kibana: https://opendistro.github.io/for-elasticsearch/

[4]

Loki: https://grafana.com/oss/loki/

[5]

Prometheus: https://prometheus.io/

[6]

Compliant Kubernetes文档: https://compliantkubernetes.io/

文章分享自微信公众号:
CNCF

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:CNCF
原始发表时间:2021-03-03
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • BCC(可观测性)

    BCC是一个用于跟踪内核和操作程序的工具集,其软件包中包含了一些有用的工具和例子,它扩展了BPF(Berkeley Packet Filters),通常被称为e...

    charlieroro
  • Istio可观测性

    Istio的可观测性包括metrics,日志,分布式链路跟踪以及可视化展示。下面主要介绍如何在istio中部署基于Prometheus的metrics监控,基于...

    charlieroro
  • 聊聊可观测性Observability

    自打去年以来,可观测性Observability这个概念又非常的火,按照我的感受,在运维领域,这个概念是近两年即AIOps之后,热度最高的一个了。 无论是国内还...

    赵成
  • Serverless可观测性的价值

    作者简介 杨琪 9 年专注于操作系统、网络、云原生、Serverless 相关技术研发工作。从传统网络到容器网络技术都有所了解,具有丰富的后端研发实践经验。 ...

    腾讯云中间件团队
  • 跨越可观测性鸿沟|高手们都在用的“火焰图”是什么

    火焰图(Flame Graph)由性能优化大师 Brendan Gregg 发明,和所有其他的 profiling 方法不同的是,火焰图以一个全局的视野来看待时...

    开源小E
  • 可观测性神器之 Micrometer

    对于大部分开发人员来说可能用过普罗米修斯Grafana这样的监控系统,从未听说过Micrometer工具,这里就详细的来介绍下可观测性神器Micrometer,...

    宋小生
  • 基于 eBPF 的 Linux 可观测性

    最近发布的 Linux 内核带了一个针对内核的能力强大的 Linux 监控框架。它起源于历史上人们所说的的 BPF。

    黑光技术
  • Serverless 可观测性升级,云函数支持应用性能观测 APM

    01. 云函数 + APM,进一步提升 Serverless 可观测性 Serverless 产品免运维、弹性扩缩容的产品特性,意味着由平台来进行请求的调度、...

    腾讯云serverless团队
  • 十二、可观测性——监控与日志

    在 Kubernetes 中,监控和日志属于生态的一部分,它并不是核心组件,因此大部分的能力依赖上层的云厂商的适配。Kubernetes 定义了介入的接口标准和...

    Yuyy
  • IT系统为什么需要可观测性?

    IT领域中,可观测性(observability)的争论源于2017年Peter Bourgon(Go Kit 作者)的一篇文章《Metrics, tracin...

    清华土著
  • IT系统为什么需要可观测性?

    IT领域中,可观测性(observability)的争论源于2017年Peter Bourgon(Go Kit 作者)的一篇文章《Metrics, tracin...

    Zabbix
  • 可串行化 数据库恢复 观测可序列化

    把检查点后,崩溃前的没提交的事务的更新和CLR再过一遍,目的是使数据库恢复到崩溃时的状态。

    平凡的学生族
  • Dapr 可观测性之指标与日志

    前面我们了解了 Dapr 可观测性中的分布式追踪部分的支持,本文我们将来介绍下指标和日志这方面的支持。

    我是阳明
  • Kubectl Plugin 推荐(一)| 可观测性篇

    kubectl 作为最重要的 Kubernetes 客户端工具一直以来都被广泛的应用与各种场景,其对于 YAML 工程师的作用就像战士手中的枪,用的好不好完全可...

    郭旭东
  • 可观测性就是对“监控”的包装?

    作者:软件质量保障 知乎:https://www.zhihu.com/people/iloverain1024

    互联网金融打杂
  • 可观测性之 基于云原生体系构建的可观测系统:Observability-stack

    Observability Stack 是基于云原生组件构建的OpsCenter系统。 包括

    KubeService@dongjiang
  • Kubernetes 可观测性:利用 4 个开源工具

    你可能已经知道Kubernetes是领先的容器编排系统。根据最新的CNCF 研究,可能已经将它用于生产工作负载或在未来一年考虑使用它。2021 年的研究发现,惊...

    没有故事的陈师傅
  • IT系统为什么需要可观测性(解读版)

    对工程师而言,可观测性能够让大家抓住技术趋势,深入理解云原生技术和分布式系统。让开发工程师理解基础设施,让系统和网络工程师理解应用。云原生时代,全栈能力是一个工...

    清华土著

扫码关注腾讯云开发者

领取腾讯云代金券