可观察性是根据系统生成的数据测量和推断系统当前状态的能力。 这些数据通常以日志、指标和跟踪的形式存在。 举一个简单的例子,您可以通过检查微服务应用的指标来观察其运行状况。
可观察性为开发人员提供了复杂系统如何运行的整体视图。 通过数据收集、存储和分析,开发人员能够识别和解决系统中的问题。
可观察性始于实时收集数据。 然后将收集到的数据存储在集中位置以供分析。 该分析可以通过机器学习算法、可视化或统计技术的组合来完成。
该分析的结果会提醒开发人员应用或系统内的任何异常。 警报可以根据业务或应用需求,通过既定的阈值、严重程度或其他标准自动触发。 一旦识别并定位异常,开发人员就可以使用数据来调试和解决问题。
如上所述,可观测性数据的主要类型是日志、指标和跟踪。
监控是观察和检查系统或应用内发生的进程的能力。 监控很大程度上依赖于指标。 简而言之,它提供了环境的可视化并使您能够针对已知问题进行测试。 另一方面,可观察性提供了新的、更深入的数据,让您可以推断可能存在问题。 然后,您可以深入研究问题的原因,以洞察未来。
监控和可观察性并不是截然分开的。 相反,它们是数据分析选项和可视化技术,使开发人员能够更快地获得洞察力。
在建立这些定义的基础上,下表将仔细研究软件applications中的监控和可观察性之间的四个细微的差别。 这四个差异分为范围、粒度、灵活性和分析。
监控 | 可观察性 | |
---|---|---|
范围 | 测量指标(例如系统正常运行时间、CPU 使用率、错误率) | 根据系统的输出了解其工作机制 |
粒度 |
定期汇总或抽样收集的数据(基于预定义的指标) |
收集并分析精细数据,以更深入地了解和理解系统行为 |
灵活性 |
实施预定义的仪表板或警报阈值,一旦部署就很难修改 |
采用灵活且适应性强的方法,使用易于更改的工具来适应不断变化的情况和要求 |
分析 |
识别特定事件或异常并做出反应 |
通过为开发人员提供所需的工具来识别问题原因并逐步实施解决方案,强调主动分析和故障排除 |
软件可观测性中的遥测是指实时收集和传输有关软件系统性能和行为的数据的实践。 这些数据(响应时间、错误率、资源消耗等)用于监控和了解系统的当前状态,并帮助开发人员发现提高性能的机会。
在有关遥测的对话中, OpenTelemetry (OTel) 经常成为谈论的焦点,因为它提供了一种简化的方法,使开发人员更容易进行可观察性。 OTel 是一组开源工具和库,用于标准化从软件系统收集遥测数据(日志、指标和跟踪)。
您可以在《OpenTelemetry 如何改变我们追踪和设计应用程序的方式》中了解有关 OTel 的更多信息以及它如何影响云原生格局。
可观察性使开发人员能够更好地了解他们的applications,从而实现:
可观察性确实存在一些缺点,最常见的包括: