本文介绍了 DevOps 环境中可观测性与监控的核心概念,包括这些实践之间的关系、监控数据类型以及用于实现可观测性的工具。它探讨了监控工具如何集成到更广泛的 DevOps 生态系统中,特别是在容器化和 Kubernetes 环境中。
来源: topics/observability/README.md10-13
可观测性是指收集、分析和利用有关程序执行、模块内部状态以及分布式系统中组件之间通信的数据的能力。可观测性源于控制理论,在软件工程中是指从外部输出来理解系统内部状态的程度。
与关注预定义指标和警报的传统监控不同,可观测性提供了一种更全面的方法,使运维人员能够在不添加新仪器的情况下询问系统行为的新问题。
可观测性是站点可靠性工程 (SRE) 的基础,因为它是诊断和分类服务中断或性能下降的关键第一步。
来源: topics/observability/README.md10-13
虽然监控和可观测性相关,但它们在维护可靠系统方面服务于不同的目的。
谷歌将监控定义为“服务所有者跟踪系统运行状况和可用性的主要手段之一”。它通常涉及收集预定义的指标并根据阈值设置警报。
可观测性通过以下方式在监控的基础上进行扩展
来源: topics/observability/README.md19-23
在现代 DevOps 环境中,堆栈的不同层都需要进行监控
| 层 | 监控示例 |
|---|---|
| 硬件 | CPU 使用率、内存利用率、磁盘 I/O |
| 基础设施 | 磁盘容量、网络吞吐量、延迟 |
| 应用程序 | HTTP 状态码、错误率、业务指标 |
| 用户体验 | 页面加载时间、事务完成率 |
来源: topics/observability/README.md36-41
时间序列数据是按连续时间间隔测量的、一系列数据点。这种数据格式对于监控至关重要,因为它允许跟踪指标如何随时间变化。
CPU 利用率作为时间序列数据的示例
08:00 17%
09:00 22%
10:00 91%
时间序列数据库经过专门优化,可以处理此类数据,其功能支持
来源: topics/observability/README.md44-54 topics/databases/README.md183-185
在监控场景下,数据聚合是指将多个数据点组合起来以得出有意义的见解。常见的聚合方法包括
数据聚合可以实现更有效率的存储和分析,特别是对于生成大量遥测数据的系统。
来源: topics/observability/README.md58-61
应用性能管理 (APM) 将 IT 指标转化为业务洞察。它包含用于监控应用程序以提高性能、减少问题和改善用户体验的实践。
APM 系统通常会收集和监控
来源: topics/observability/README.md68-93
DevOps 生态系统中通常会使用多种工具和平台来实现可观测性与监控
Grafana 是一个开源的可视化和分析平台,允许您查询、可视化和警报指标,无论它们存储在哪里。它通常与 Prometheus 等时间序列数据库配合使用。
Datadog 是一个用于云应用程序的监控和安全平台,通过基于 SaaS 的数据分析平台提供服务器、数据库、工具和服务的监控。
Datadog 的主要功能包括
来源: topics/datadog/README.md15-29 topics/datadog/README.md45-48
Kubernetes 增加了可观测性的复杂性,但也提供了内置机制来支持监控。
在实施蓝绿部署或灰度部署等高级部署策略时,可观测性至关重要。这些策略可以使用 Argo Rollouts 等工具实现,需要仔细监控以确保成功部署。
在使用 Argo Rollouts 进行灰度部署时,您可以监控
对于蓝绿部署,监控侧重于
来源: topics/argo/exercises/canary_rollout/solution.md27-66 topics/argo/exercises/blue_green_rollout/solution.md27-54
Kustomize 可用于在 Kubernetes 中的应用程序之间管理一致的监控配置。例如,您可以为所有资源添加通用的监控标签
这使得监控工具可以根据标签自动发现并抓取应用程序的指标。
来源: topics/kubernetes/exercises/kustomize_common_labels/solution.md17-29
用于资源监控
用于服务监控
来源: topics/observability/README.md86-92
可观测性和监控是现代 DevOps 环境中的基本实践。通过实施包含指标、日志和跟踪的全面可观测性策略,组织可以更深入地了解其系统,更有效地解决问题,并提高整体可靠性。
本文介绍的工具和技术为构建可观测系统提供了基础,但请记住,可观测性是一个持续的旅程,会随着您的系统和组织需求而发展。