在本系列的上一篇文章中,我介绍了使用 Prometheus 进行监控,Prometheus 是领先的开源指标检测、收集和存储工具包。虽然 Prometheus 已成为许多用户监控 Kubernetes 的事实标准,但您可能出于某些原因选择另一种指标遥测方法。
一个原因是使用 Prometheus 会在您的集群中引入另一个需要维护和更新的组件,并且需要额外的管理来确保数据的长期持久性。另一个原因是 Prometheus 开箱即用地收集了数量非常庞大的指标集,在指标量是您整体可观测性成本的输入的情况下,这可能会导致成本过高。
本文将向您介绍 OpenCensus,这是一组用于可观测性检测的开源库。OpenCensus 是目前推荐用于检测服务以收集跟踪和指标的库。OpenTracing 和 OpenCensus 项目已合并到 OpenTelemetry 中,后者将成为推荐的库。
虽然 OpenCensus 同时支持指标和分布式跟踪,但本文重点介绍指标,具体包括:
- 描述 OpenCensus 的检测方法及其数据模型
- 通过一个教程来解释如何检测应用程序、部署示例应用程序,并查看您可以使用 OpenCensus 创建的指标
我将在以后的文章中重新讨论跟踪。
OpenCensus 基础知识
OpenCensus 的实现依赖于三个核心组件:
要在您的应用程序中使用 OpenCensus 记录自定义指标,您需要了解特定编程语言和基础设施的这些元素。
检测
要了解如何检测您的应用程序,您首先需要了解 OpenCensus 的原语,即测量值、度量、视图和聚合。
- 测量值: 测量值是最基本的实体;它是收集的单个数据点,表示某个时间点的值。例如,对于以毫秒 (ms) 为单位测量的延迟指标,100 的测量值可以表示延迟为 100 毫秒的事件。
- 度量: 度量表示要记录的指标。例如,您可以使用“延迟”度量来记录来自您服务的 HTTP 响应延迟。度量由名称、描述和指标使用的单位组成。例如,要测量延迟,您可以指定:
- 名称:response_latency
- 描述:服务器响应延迟,单位为毫秒
- 单位:毫秒
- 视图: 视图是度量、聚合和可选标签的组合。视图是您将用来连接到导出器以将捕获的值发送到存储后端的机制。视图包括:
- 名称
- 描述
- 将为此集合生成测量值的度量
- TagKeys,如果您使用标签
- 聚合: 每个视图还需要指定一个聚合;也就是说,视图将如何处理多个度量。聚合可以是以下之一:
- 计数:视图中测量点数量的计数
- 分布:视图中点的直方图分布
- 总和:测量点值的总和
- LastValue:仅测量值中最后记录的值
您还可以参考 OpenCensus 的 来源 以获取有关原语的更多信息。
导出器
一旦您编写了检测来创建度量、捕获测量值并将它们聚合到视图中,您就需要一个导出器将您记录的指标数据发送到您选择的存储后端。与 Prometheus 不同,Prometheus 公开一个专用的指标端点以进行抓取,OpenCensus 采用推送模型——导出器将您收集的数据推送到指定的后端。您需要根据以下内容选择导出器:
- 您的应用程序和检测编写所用的语言
- 对统计信息(指标)的可用支持
- 可用的后端选项
使用导出器需要在您的代码中实例化它、注册它,然后注册您的视图以使导出器将收集的数据发送到后端。
在 OpenCensus 中利用指标
现在您已经了解了 OpenCensus 如何工作以收集和导出指标的术语,接下来要学习的是 OpenCensus 中指标如何工作。与 Prometheus 不同,在 Prometheus 中,您必须预先定义指标类型,而 OpenCensus 仅要求您收集测量值,然后在视图中聚合它们,然后再将它们发送到导出器。测量值支持整数和浮点值。从那里,您可以使用分布聚合创建直方图,使用计数聚合添加样本数,或使用总和聚合添加收集的值。
现在您已经基本了解了 OpenCensus 是什么、它的工作原理以及它可以收集和存储的数据类型。下载您最喜欢的工具(或使用 我的教程 和 快速入门实验室)并试用 OpenCensus。
评论已关闭。