本文来自微信公众号“开源云中文社区”。
容错、无单点故障和冗余是现代软件系统中突出的设计原则。但这并不意味着错误、降级、错误甚至偶尔的灾难都不会发生。分布式系统架构的复杂性使事件的浮出水面更像是一个谜,而不仅仅是在屏幕上寻找一个红点。
监控软件系统的概念并不新颖。可观察性的概念最早出现在1960年,但随着软件系统需要超越传统监控提供更深的洞察,它在最近才站稳脚跟。传统的监控侧重于软件系统的各个领域。这种类型的监控可以识别系统的一个部分(如网络、数据库或服务器)中的问题,但不能跟踪请求生命周期或在系统的另一个部分发现问题。相反,可观察性的概念围绕着从系统的所有部分收集数据,以提供整个软件的统一视图。
可观察性的三大支柱
度量
度量描绘了软件系统的全貌。它们监测基线性能,在异常发生时精确定位,并确定趋势。度量并非一刀切。谁在收集度量,谁就决定要收集哪些度量。许多企业或开发人员收集的流行度量是CPU利用率、网络流量、延迟或用户注册。
度量集中在系统的一个领域,这使得很难在分布式系统中跟踪问题。最佳实践建议定期收集数据,并使用数值存储度量。
日志
日志就是记录。它们与度量的区别在于,它们记录事件,但与度量类似,这些事件是业务或软件认为重要的任何事情。这包括从一般信息到超过特定阈值的任何事件,再到警告和错误的任何内容。由日志创建的历史记录可以深入了解软件环境中的问题。当错误发生时,日志会显示错误发生的时间以及与之相关的事件。
日志在有益与有害之间有着微妙的平衡。日志数据是一个微妙的主题。提供数据是日志存在的原因,但它不能只是任何数据。过多的数据可能会使系统不堪重负,并导致更高的延迟。日志无权泄露敏感或私人数据。然后是存储。日志的使用寿命很短。它们的效用随着年龄的增长而减弱。将日志存储足够长的时间以满足其使用寿命,并相应地收回或归档以减少存储开销,这样它们就不会淹没数据库。
跟踪
跟踪跟踪请求在分布式或微服务系统中移动时的端到端行为。分布式跟踪中收集的数据为使用多个内部微服务的请求带来了更高的可见性。跟踪可以深入了解请求在应用程序中的特定点(如代理、中间件和缓存)的行为,以识别执行流中的任何分支或跨系统边界的网络跳跃。
OpenTelemetry
OpenTelemetry(OTEL)是一个标准化的开源框架,由简化遥测数据收集的工具、API和SDK组成。度量、日志和跟踪属于遥测数据的类别。通过消除供应商锁定并为所有人创建可用的工具,OTEL旨在推动可观察性领域的创新。其结果是,开发人员在分析日志、度量和跟踪时可以使用更广泛的选项集。这使得在实现可观察性最佳实践时更易于使用。这是一个与云原生计算基金会(CNCF)一起孵化的项目,由OpenCensus和OpenTracing项目合并而成。开发者社区支持OTEL,一个丰富的社区围绕着它而兴起。
打破供应商锁定的限制,为软件系统提供了大量用于存储遥测数据的数据库选项。在这些选项中,存储遥测数据的一个好地方是专门构建的时间序列数据库。首先,可观察性测量软件系统随时间的变化,时间序列数据库存储了跨时间范围写入和查询的大量数据。与度量一样,分析时间序列数据需要跨时间范围查询数据。这些查询对于时间序列数据库来说很容易执行,而对于其他数据库类型来说很难有效执行。
InfluxDB 3.0与可观察性
InfluxDB 3.0于4月推出,使与OTEL的合作比以往任何时候都更容易访问。新的数据库引擎是在ApacheArrow之上构建的,与以前版本的InfluxDB相比,它带来了许多性能改进。该数据库现在支持不受限制的基数数据而不影响性能,这意味着对高基数数据的查询速度提高了100倍。InfluxDB3.0实时获取和查询数据,非常适合需要实时分析(如可观测性)的应用程序。实时分析还可以更快地识别异常。
InfluxDB3.0将度量、日志和跟踪存储在一个数据库中。每一类数据都有独特的工作负载,这留下了一些未回答的问题,例如:遵循什么模式?如何将跟踪转换为线路协议?InfluxDB如何与更大的可观测性生态系统连接?
InfluxDB团队有一个新的教程(OpenTelemetry Tutorial:Collect Traces,Logs&Metrics with InfluxDB 3.0,Jaeger&Grafana),其中包括一个完整的存储库和代码演练,重点是如何收集跟踪、日志和度量。技术堆栈是InfluxDB3.0、Jaeger和Grafana。
结论
软件系统变得越来越复杂,但识别和解决瓶颈、漏洞和错误并不一定非得如此。传统监控中使用的度量是系统不同部分的数字记录。日志记录历史事件。跟踪提供了请求在整个系统中移动时的行为可见性。就像其他一切一样,遥测数据只是数据。它的真正价值在于你用它做什么。
InfluxDB是专门为处理时间序列数据而构建的,遥测数据是时间序列数据。OpenTelemetry的创建为开发人员如何处理可观测性实践打开了大门。使用OTEL和InfluxDB可以为遥测数据带来实时分析、无限基数和快速查询的功能。