遥测数据的定义

遥测数据能够为我们深入了解系统性能提供至关重要的见解,而且对于主动解决问题和做出明智决策而言,遥测数据不可或缺。然而,要实现这一目标,仅仅依赖原始数据是远远不够的,我们还需要实时见解。这正是遥测数据所赋予我们的能力。

遥测是指从服务器、应用程序和监测设备等远程来源收集、传输和分析数据的过程。这一过程可以细分为以下几个步骤:

  1. 数据收集:传感器、软件和其他监测工具收集用户行为、性能指标和环境条件等数据。
  2. 数据传输:将收集到的数据发送到中央系统。
  3. 分析和监测:接收数据后,对数据进行处理、分析和展示,以便深入了解受监测系统的状态、性能和行为。

要实现这一目标,必须获取正确的遥测数据。这些原始数据包括日志、指标、事件以及系统、应用程序或设备创建的任何其他痕迹。若缺乏这些原始数据,那么分析和监测的效果及准确性都将大打折扣。

遥测数据类型

日志

日志是一种文本记录列表,记录系统或应用程序中发生的离散事件。每条记录都带有时间戳,为故障排查和分析提供详细信息。日志对于调试和故障排查、合规性报告、了解用户行为以及各种类型的审计中起着至关重要的作用。

日志包括多种类型,例如应用程序日志、系统日志、网络日志和访问日志等。所有这些都是宝贵的遥测数据,可用来精确描绘出事件的全貌,包括发生了什么、何时发生以及涉及到谁(或涉及到什么)。

痕迹

痕迹本质上是请求在系统中移动时留下的路径记录,如同“面包屑”般指引我们追踪其行踪。它会详细记录请求的路径,包括在多个服务之间的流动和精确的时间点。这些痕迹中可能包含分布式应用程序的痕迹,以及在微服务架构中端到端的请求痕迹。

作为遥测数据,这些痕迹提供了宝贵的数据,有助于优化性能、了解系统依赖关系、进行根本原因分析,以及识别瓶颈所在。

指标

指标是指在系统、软件或应用程序运行时捕获的数字测量值。这些指标使我们能够对性能进行跨时间的定量分析,涵盖了 CPU 使用率、请求率、错误率、响应时间和内存利用率等关键性能指标。

在遥测技术中,这些指标在实现系统健康、性能和行为等的可见性方面起着至关重要的作用。这种可见性能够为多种工具提供宝贵的见解,涵盖从性能监测和异常检测到容量规划、SLA合规性监测等多个方面。

事件

事件是系统中发生的显著事件或状态变化的记录。它们会捕捉影响系统或业务的重要时刻或变化,与日志相比,事件往往包含更多的上下文信息。这些事件将包括用户的登录和购买等操作、系统状态变化,以及特定业务的各种事件。

因为事件包含额外的上下文数据,所以它们在商业智能、系统健康监测、合规性审计以及触发自动化等方面都起着至关重要的作用。此外,事件还非常适合用于用户行为分析,因为您可以清楚地看到他们在何时进行了哪些操作。

如何设置和使用遥测数据

第 1 步:明确目标

设置遥测数据的第一步是明确您想要达成的目标。您需要确定收集遥测数据的具体目标,例如提高系统性能、增强用户体验,或是识别安全威胁等。为了实现这一点,一个有效的方法就是将您的遥测目标与您现有的业务目标相结合。

接下来,您需要确定必须跟踪哪些关键性能指标 (KPI) 和其他指标。例如,如果您的目标是提高系统性能,则可能需要跟踪响应时间、错误率和资源利用率等指标。此外,在设定遥测目标时,隐私性与合规性也是重要的考虑因素。您应查看相关法规(CCPA、GDPR 等),并制定符合这些法规且尊重用户隐私的数据收集准则。

第 2 步:配置工具

下一步是选择和配置适当的工具,以实现您设定的目标。您应选择那些既能助您达成目标,又能与现有技术堆栈轻松集成的遥测收集工具。例如,应用性能监测工具 (APM)、日志聚合器或定制 SDK 等。

您需要实施收集机制,将日志框架或监测代理集成到您的应用程序中,而 OpenTelemetry 则是一个很好的供应商中立选项。这通常涉及添加代码插桩,或配置现有系统以接收所需数据。

要配置收集参数,您需要设置数据收集的具体细节,如采样率、要捕获的事件类型以及日志的详细级别。接着,配置数据过滤功能,以过滤掉敏感信息,并进行匿名化处理,以确保符合隐私法规的要求。

第 3 步:发送数据

接下来,需要实际发送遥测数据。首先,您需要实施用于发送数据的传输协议。这些协议可以是针对网络应用的 HTTPS(或 HTTP)、针对物联网设备的 MQTT,或是如 OpenTelemetry (OTLP) 这样的专用协议。同时,要确保数据传输的安全性,还包括使用加密和身份验证机制。

为了处理网络中断并确保系统的可靠性,您应建立本地数据缓冲并设置重试逻辑。同时,您还需要合理调整数据传输的量和频率,以最大程度地减少对应用程序性能和网络带宽的潜在影响。

第 4 步:存储数据

接下来,您需要选择最合适的存储解决方案来接收遥测数据。您可以为不同类型的数据配置不同的存储,或者更简单的方法是,利用 Elasticsearch 及其跨集群搜索和复制功能来构建数据网格,从而实现分布式存储方法。

然后,需要实施保留策略,明确不同类型数据的存储时间。在制定这些策略时,请综合考虑数据的分析需求和监管要求。对于遥测数据的存储决策,通常需要在分析性能需求与存储成本之间找到平衡点。

另一个重要方面是分区和索引:您需要通过基于时间的分区、索引等方法来组织存储,以优化查询性能。同时,还应实施备份和灾难恢复策略,以防止数据丢失,并确保对遥测数据的持续访问。

第 5 步:分析遥测数据

最后,您需要能够对遥测数据进行分析和可视化。这涉及开发仪表板和可视化工具,用于展示关键指标和趋势。同时,还需设置告警系统,以便在指标超出预设阈值或检测到异常时及时通知您。

为了最大限度地利用遥测数据,您可以设置诸如统计分析和机器学习等高级分析功能,以便更好地识别模式和预测未来趋势。当您整合来自不同类型数据的见解时,便可全面了解系统活动和用户行为,这种方法尤为有效。

遥测数据的优势

以下是利用数据建立有效遥测流程所能获得的一些主要优势:

  • 提供实时可见性:通过跟踪和分析关键指标和日志,您可以即时了解哪些方面进展顺利,以及哪些方面有待改进。
  • 主动检测和解决问题:遥测数据可让您在潜在问题升级之前,识别出可能预示问题的异常和模式。
  • 提升运营效率:通过实施自动监测和数据收集,您能够优化工作流程并提高生产率。
  • 更快地进行故障排查:详细的遥测数据意味着您可以快速找出问题的根本原因,从而缩短解决问题的平均时间 (MTTR)。
  • 增强决策能力:拥有所需的所有数据后,您便可基于数据进行决策,并在资源分配、产品开发和用户体验改进方面做出明智的战略选择。

为了从遥测数据中获得所有优势,使用一体化的数据平台来整合这些遥测数据至关重要。这样,您就能将来自各种来源的数据集中起来,减少信息查找的繁琐。

这种整合不仅能带来上述优势,还能提高可扩展性和成本效益,同时确保所有数据处理的一致性。这也是 OpenTelementry Semantic Conventions (Otel SemConv) 等开放标准如此重要的原因。这些标准确保了不同工具和平台之间的互操作性。

遥测数据面临的挑战

与任何技术一样,使用遥测数据既能带来优势,也伴随着一系列挑战。要克服这些挑战,关键在于深入理解它们,并制定相应的应对策略。

  • 数据安全和隐私:用户及客户数据的安全性和隐私保护至关重要。保护数据安全和隐私不仅仅是因为它是良好的实践,更是因为数据泄露可能带来巨大的声誉风险和监管后果。为了应对这一挑战,您需要实施强有力的安全措施,如数据加密、访问控制以及全面的日志记录。同时,保护敏感信息并严格控制数据访问也是必不可少的。
  • 传统软件集成:您需要通过实施灵活的数据采集功能,为各种数据格式和数据源提供支持。这样,您就可以将来自现代和传统系统的遥测数据整合到一个一体化平台上。
  • 经济高效的存储:分层存储选项和信息生命周期管理 (ILM) 策略让您在保障数据可访问性的同时,还能优化存储成本。此外,热-暖-冷架构也能帮助您在性能和成本效益之间找到平衡点。
  • 支持开放标准:为确保互操作性,应尽早采用 OpenTelemetry 等开放标准。这样一来,您的遥测基础架构就能更好地适应未来需求,并轻松与其他工具和平台集成。

搭配 Elastic 使用 OpenTelemetry

在本指南的前半部分,我们提到了 OpenTelemetry,这是一个开源的可观测性框架,可用于统一数据收集并标准化遥测数据格式。同时,它还提供了一种供应商中立的遥测方法,避免了技术锁定,并具备强大的可扩展性,非常适合处理大量数据。

这与我们对 Elastic 开放标准的承诺高度一致,因此我们向 OpenTelemetry 贡献了开源规范 Elastic Common Schema (ECS)

作为我们更广泛的可观测性功能的一部分,我们还支持将 OTelformatted 数据无缝导入 Elasticsearch。这意味着,您可以利用 Elasticsearch 的高级分析和搜索功能来处理 OTel 数据,并确保您的可观测性平台能够适应未来的需求。

结合使用 Elastic 和 OpenTelemetry 可解决您可能面临的许多主要挑战,包括:

  • 整合异构数据源
  • 确保数据安全和隐私
  • 管理传统软件集成
  • 优化存储成本
  • 处理各种数据类型
  • 支持互操作性的开放标准