什么是 O11y?现代可观测性指南
为什么你需要O11y
从传统监控向 o11y 的转变由以下几个关键因素推动:
O11y 是什么?
O11y(可观察性)充当系统的自我诊断机制。通过在整个代码中嵌入遥测收集点,o11y 可以揭示应用程序在生产中的行为方式。这种方法写作“o11y”(“o”和“y”之间有 11 个字母),通过自动化检测将原始系统数据转化为可操作的见解,即使在分布式环境中也能实现复杂的故障排除。
与传统监测的主要区别
O11y 的三大支柱:指标、日志和跟踪
现代可观测性依赖于三种基本数据类型,它们共同提供全面的系统洞察。让我们详细探讨每个支柱。
1. 指标:系统性能量化
指标表示随时间收集的数值测量值。它们提供有关系统行为和性能的统计数据。
关键指标类型
指标收集模式
# Example of metric instrumentation using OpenTelemetry from opentelemetry import metrics # Create a meter meter = metrics.get_meter("payment_service") # Create counters and gauges request_counter = meter.create_counter( name="payment_requests", description="Number of payment requests", unit="1" ) latency_histogram = meter.create_histogram( name="payment_duration", description="Payment processing duration", unit="ms" )
2. 日志:上下文事件记录
日志提供系统内离散事件的详细记录。它们记录系统行为的内容、时间和原因。
日志级别和使用
结构化日志示例
{ "timestamp": "2024-12-09T10:15:30.452Z", "level": "ERROR", "service": "payment-processor", "trace_id": "abc123def456", "span_id": "789ghi", "message": "Payment transaction failed", "context": { "user_id": "user123", "amount": 99.99, "currency": "USD", "payment_method": "credit_card", "error_code": "INSUFFICIENT_FUNDS" }, "stack_trace": "...", "host": "payment-pod-abc-123", "environment": "production" }
3. 追踪:请求旅程映射
Traces 跟踪请求在分布式系统中的流动情况,提供时间和依赖关系信息。如需全面了解,请参阅我们的 OpenTelemetry 分布式跟踪完整指南。
微量成分结构
详细跟踪示例
trace: id: abc123def456 name: 'process_payment' start_time: '2024-12-09T10:15:30.000Z' duration: 250ms spans: - name: 'http.request' service: 'api-gateway' duration: 250ms attributes: http.method: 'POST' http.url: '/api/v1/payments' events: - name: 'auth_start' timestamp: '2024-12-09T10:15:30.050Z' child_spans: - name: 'user.validate' service: 'auth-service' duration: 50ms attributes: user.id: 'user123' - name: 'database.query' service: 'payment-service' duration: 100ms attributes: db.system: 'postgresql' db.statement: 'SELECT * FROM payments' - name: 'payment.process' service: 'payment-processor' duration: 75ms attributes: payment.type: 'credit_card' payment.amount: 99.99
集成模式
o11y 的真正力量来自于三大支柱间数据的关联:
你实际会用到的工具
o11y 生态系统包括用于收集、处理和可视化遥测数据的各种工具。让我们探索主要的开源和商业选项,从提供强大可观察性功能的社区驱动解决方案开始。
开源解决方案
1. Uptrace
Uptrace 是一个完整的可观察性平台,专为 OpenTelemetry 构建。将指标、跟踪和日志与基于 SQL 的查询功能相结合。为不断发展的系统提供自动化检测、高效的资源使用和经济高效的扩展。

2. OpenTelemetry
OpenTelemetry 是一个核心检测框架,可为所有服务提供标准化数据收集。什么是 OpenTelemetry?- 了解核心概念、组件和实现方法。具有与供应商无关的 API、自动检测功能,并支持多种语言。对于实现跨分布式系统的一致可观察性至关重要。
3. Jaeger
Jaeger 是专为微服务环境构建的分布式跟踪系统。了解有关 Jaeger 的更多信息 - 从核心概念到高级实现模式。擅长端到端事务监控、依赖性分析和性能优化。为大规模部署提供强大的查询功能和采样策略。

4.普罗米修斯
Prometheus 专注于指标收集和警报。使用基于拉取的架构和强大的 PromQL 查询语言。非常适合系统指标、自定义指标收集和设置全面的警报规则。了解如何将 Prometheus 指标导入 Uptrace 以实现统一的可观察性。

5. Grafana
Grafana 是连接多个数据源的行业标准可视化平台。创建复杂的仪表板,支持警报集成,并通过自定义面板和模板实现深度数据探索。

商业平台
1.Datadog
Datadog 提供具有全面监控功能的企业级平台。提供广泛的集成选项、机器学习驱动的分析和强大的基础设施监控。最适合具有复杂要求和多样化技术堆栈的大型组织。正在寻找替代方案?查看我们的 9 大开源 Datadog 替代方案指南。

2. New Relic
New Relic 提供具有强大 APM 功能的全栈可观察性平台。具有详细的事务跟踪、自定义仪表板和集成错误跟踪功能。在需要详细性能洞察的中型到大型组织中很受欢迎。探索 5 大 New Relic 替代方案,包括开源选项。

3. 蜂窝
Honeycomb 专注于高基数可观察性和调试工作流。提供强大的事件驱动分析功能和快速查询响应时间。对于专注于快速调试和事件响应的团队特别有效。

功能比较表
成本效益分析
实施指南
O11y 实施需要战略规划和系统执行。每个阶段都建立在前一个阶段的基础上,建立一个强大的可观察性框架,该框架可随系统的复杂性而扩展。
第一阶段:基础
第 2 阶段:高级功能
O11y 实施的最佳实践
有效的 o11y 需要在整个组织内周到的实施和一致的做法。这些指南有助于建立可靠的数据收集和分析工作流程,同时避免常见的陷阱。
数据收集
工具选择标准
性能影响考虑因素
系统可观测性必须在全面数据收集和最低性能开销之间取得平衡。了解这些影响有助于制定最佳检测策略。
安全性与合规性
在受监管的环境中实施 o11y 需要仔细考虑安全措施和合规性要求。安全控制必须保护敏感数据,同时保持可观察性的有效性。
資料保護
现代 o11y 实现处理大量遥测数据,需要强大的安全措施。数据保护从安全收集点开始,并延伸到整个可观察性管道。PII 处理需要特别注意,在存储之前对敏感字段实施屏蔽和加密。访问控制应遵循最小特权原则,基于角色的访问控制数据收集和可视化功能。
组织必须实施全面的审计日志来跟踪数据访问和系统更改。这为安全调查和合规性报告创建了审计线索。端到端加密使用行业标准协议和密钥管理实践来保护传输中和静止的数据。
合规要求
GDPR 兼容性要求在可观察性系统内谨慎处理个人数据。这包括实施数据最小化原则、确保数据主体权利以及维护详细的处理记录。组织必须能够根据要求识别和提取个人数据。
SOC 2 考虑重点是可观察性数据的安全性、可用性和机密性。这需要对数据收集、存储和访问实施控制。定期审计可验证这些控制的有效性。
行业特定标准可能会施加额外要求。医疗保健组织必须确保遵守 HIPAA,而金融机构则需要满足 PCI DSS 标准。每个行业框架都需要特定的安全控制和文档。
成本分析
了解直接实施的财务影响有助于组织规划有效的投资并衡量回报。适当的成本分析既考虑直接费用,也考虑长期收益。
实施成本
初步实施需要在几个关键领域进行战略投资:
投资回报率计算
组织通常会在三个主要领域看到回报:
**减少事故**
**性能改进**
**资源优化**
成本优化策略
常问问题
结论
O11y 已成为现代软件系统不可或缺的一部分。从小处着手,关注价值,逐步扩大规模。考虑使用 Uptrace 等工具,它们提供全面的功能,同时保持简单性和成本效益。
**您可能还对此感兴趣:**