遥测数据定义
遥测数据提供了关于系统性能的重要洞察,对主动解决问题和做出明智决策至关重要。要实现这一点,不能只依赖原始数据 —— 你需要实时的洞察,而这正是遥测数据提供的。
遥测是从远程来源(如服务器、应用程序和监控设备)收集、传输和分析数据的过程。这个过程可以分为以下几个步骤:
- 数据收集:传感器、软件和其他监控工具收集数据,例如用户行为、性能指标和环境条件。
- 数据传输:将收集到的数据发送到中央系统。
- 分析与监控:一旦接收到数据,就会对其进行处理、分析并展示,以提供对被监控系统状态、性能和行为的洞察。
为了实现这一点,必须拥有正确的遥测数据。这些原始数据包括系统、应用或设备生成的日志、指标、事件和其他追踪信息。如果没有这些原始数据,分析和监控的效果就不会那么有用或准确。
遥测数据的类型
日志( Logs )
日志是记录系统或应用中发生的离散事件的文本记录列表。每条记录都有时间戳,并提供调试和分析所需的详细信息。它们对于调试和故障排查、合规报告、了解用户行为和各种审计非常重要。
日志有多种类型,包括应用日志、系统日志、网络日志和访问日志。所有这些都是有价值的遥测数据,可以精确展示发生了什么、何时发生的,以及谁(或什么)参与了事件。
追踪( Traces )
追踪本质上是一条请求在系统中移动时留下的 “面包屑路径”。它记录了请求经过的路径,展示了跨多个服务的流程和精确时间。这包括分布式应用追踪和微服务架构中的端到端请求追踪。
作为遥测数据,这些追踪提供了有价值的信息,帮助进行性能优化、了解系统依赖、根本原因分析和识别瓶颈。
指标( Metrics )
指标是在系统、软件或应用运行时捕获的数值测量。这些指标可以用来对性能进行量化分析,包括 CPU 使用率、请求率、错误率、响应时间和内存使用等。
在遥测中,这些指标在生成关于系统健康状况、性能和行为的可见性方面发挥着重要作用。这种可见性可为多种工具提供洞察,如性能监控、异常检测、容量规划和 SLA 合规监控等。
事件( Events )
事件是系统中值得注意的发生或状态变化的记录。它们捕捉对系统或业务有影响的重要时刻或变化,与日志不同,事件通常包含额外的上下文信息。这些事件包括用户行为(如登录和购买)、系统状态变化以及特定业务事件。
由于包含额外上下文数据,事件对于商业智能、系统健康监控、合规审计和自动化触发至关重要。它也非常适合用户行为分析,因为你可以精确看到他们做了什么、什么时候做的。
如何设置和使用遥测数据
第 1 步:定义你的目标
设置遥测数据的第一步是明确你想要实现的目标。你需要确定收集遥测数据的具体目的,例如提升系统性能、改善用户体验,或识别安全威胁。一个好的方法是将遥测目标与你现有的业务目标对齐。
接着你需要确定要追踪的关键性能指标( key performance indicators - KPIs )和指标数据。例如,如果你的目标是提升系统性能,那就可以追踪响应时间、错误率和资源使用率等内容。在设定遥测目标时,另一个重要考虑是隐私和合规性。你应该审查相关法规(如 CCPA、 GDPR 等),并制定符合这些法规且尊重用户隐私的数据收集指南。
第 2 步:配置你的工具
下一步是选择并配置合适的工具来实现你的目标。你应选择既能帮助实现目标,又能轻松集成到你现有技术栈中的遥测收集工具。这可能包括应用性能监控工具(application performance monitoring tools - APM )、日志聚合器或自定义 SDK。
你需要实施收集机制,将日志框架或监控代理集成到应用中, OpenTelemetry 是一个不错的与厂商无关的选项。这通常涉及添加代码检测点,或配置现有系统来接收所需数据。
在配置收集参数时,你需要设置采样率、要捕捉的事件类型以及日志的详细程度。然后配置数据过滤以排除敏感信息,并进行匿名化处理以符合隐私法规。
第 3 步:发送你的数据
接下来你需要实际发送遥测数据。首先,你要实现用于传输数据的协议,例如用于 Web 应用的 HTTPS(或 HTTP)、用于 IoT 设备的 MQTT,或者像 OpenTelemetry( OTLP )这样的专用协议。还包括通过加密和认证机制确保传输安全。
为应对网络中断并确保可靠性,你应该设置本地数据缓冲和重试逻辑。你还需要平衡数据传输的体积和频率,以尽量减少对应用性能和网络带宽的影响。
第 4 步:存储你的数据
然后你需要选择合适的存储方案来接收遥测数据。你可以为不同的数据类型配置不同的存储,或者使用像 Elasticsearch 及其跨集群搜索和复制功能来构建一个数据网格(data mesh),更加简化。
接着需要实施保留策略,定义不同类型数据的存储时长。在决定这一点时,要同时考虑数据的分析需求和合规要求。遥测数据的存储方案通常需要在分析性能和存储成本之间做出权衡。
另一个需要考虑的是分区和索引 —— 你需要优化存储以提升查询性能,比如使用基于时间的分区和索引。还应有备份和灾难恢复机制,以防数据丢失并确保对遥测数据的持续访问。
第 5 步:分析你的遥测数据
最后,你需要能够分析和可视化遥测数据。这包括构建仪表板和可视化视图来展示关键指标和趋势。你还需要实现告警系统,在指标超出预设阈值或检测到异常时发出通知。
为了最大化利用遥测数据,可以设置高级分析,如统计分析和机器学习(machine learning),用于识别模式和预测未来趋势。这在结合不同数据类型的洞察时效果最佳,能全面了解系统活动和用户行为。
遥测数据的优势
以下是通过构建有效遥测流程所能带来的几个关键优势:
-
实时可见性:通过跟踪和分析关键指标与日志,你可以即时洞察哪些地方运行良好,哪些地方需要改进。
-
主动发现与解决问题:遥测数据可以识别异常和模式,从而在问题升级前就发现潜在问题。
-
提高运维效率:通过实施自动化监控和数据采集,你可以简化工作流程,提高生产效率。
-
更快的问题排查:详细的遥测数据能帮助你快速定位问题根源,从而减少平均修复时间( MTTR )。
-
更优的决策制定:拥有所需的数据支持,你可以做出基于数据的决策,并在资源分配、产品开发和用户体验优化方面做出明智选择。
为了充分发挥遥测数据的全部价值,关键在于使用统一的数据平台来整合你的遥测数据。这样你就能将来自各种来源的数据集中处理,减少 “来回切换工具” 的低效操作。
这种数据整合不仅带来上述好处,还能提升可扩展性和成本效率,同时确保整个数据处理过程的一致性。这也正是像 OpenTelemetry 语义约定( Otel SemConv )这样的开放标准如此重要的原因,它们确保你在不同工具和平台之间具备良好的互操作性。
遥测数据的挑战
与任何技术一样,遥测数据的使用也有其优势与挑战。应对这些挑战的关键在于理解它们并制定应对计划:
-
数据安全与隐私:用户和客户数据的安全与隐私至关重要。不只是因为这是良好实践,更因为它可能带来重大的声誉与合规风险。为应对这一点,你需要实施强有力的安全措施,比如加密、访问控制以及详尽的日志记录。同时也需要保护敏感信息,并严格控制数据访问。
-
遗留软件集成:你需要通过灵活的数据摄取方式来支持各种数据格式和来源,从而将现代与传统系统中的遥测数据统一集成到一个平台中。
-
高性价比的数据存储:使用分层存储选项和信息生命周期管理( ILM )策略,你可以在保证数据可访问性的同时优化存储成本。 热‑温‑冷 架构(Hot‑warm‑cold architecture)也有助于在性能与成本之间取得平衡。
-
支持开放标准:为了确保互操作性,应尽早使用像 OpenTelemetry 这样的开放标准。这样可以让你的遥测架构具备未来适应性,便于与其他工具和平台集成。
Elastic 中的 OpenTelemetry
前文提到 OpenTelemetry —— 这是一个开源的可观测性框架,用于统一数据采集并标准化遥测数据格式。它提供一种厂商无关的遥测方式,避免了绑定特定厂商的问题,并具备良好的可扩展性,适合处理大规模数据。
这与 Elastic 坚持开放标准的承诺高度契合,这也是我们将自家的开源规范 Elastic Common Schema( ECS )贡献给 OpenTelemetry 的原因之一。
我们还将 OTel 格式的数据无缝集成到 Elasticsearch 的遥测功能中。这意味着你可以使用 Elasticsearch 强大的分析与搜索功能处理 OTel 数据,同时为你的可观测性平台做好未来准备。
Elastic 与 OpenTelemetry 的结合帮助你应对多个关键挑战:
-
整合异构数据源
-
确保数据安全与隐私
-
管理遗留软件的集成
-
优化存储成本
-
处理多种数据类型
-
支持开放标准,实现互操作性