在云端,我们承认故障总会发生。 我们的目标不是试图防止各种故障,而是最大程度地减轻单个组件故障造成的影响。 使用以下信息监视虚拟机及其客户端工作负载以发现故障。
本文介绍作为 Azure Well-Architected 框架的一部分的 Azure Monitor 的可靠性。 Azure 架构良好的框架是一组指导原则,可用于提高工作负荷的质量。 该框架包含卓越体系结构的五大要素:
- 可靠性
- 安全
- 成本优化
- 卓越运营
- 性能效率
Azure Monitor 日志
Log Analytics 工作区提供高度可靠性。 将数据发送到 Log Analytics 工作区的引入管道将会在从管道中移除记录之前验证 Log Analytics 工作区是否已成功处理每个日志记录。 如果引入管道不可用,则发送数据的代理会将数据缓存,并在许多小时内反复尝试发送日志。
可增强复原能力的 Azure Monitor 日志功能
Azure Monitor Logs 提供多种功能,可增强工作区对各类型问题的复原能力。 你可以根据需求单独或组合使用这些功能。
使用可用区实现区域内保护
每个支持可用区的 Azure 区域都有一组配备了独立电源、冷却和网络基础结构的数据中心。
Azure Monitor 日志可用性区域是冗余的,这意味着 Azure 在受支持区域中的不同区域之间传播服务请求并复制数据。 如果事件影响到一个区域,Azure 会自动使用该区域中的另一个可用性区域。 你无需执行任何操作,因为区域之间可无缝切换。
在大多数区域中,Azure Monitor Logs 可用区都支持数据复原,这意味着存储的数据可以防范与可用区故障相关的数据丢失,但服务操作仍可能受到区域性事件的影响。 如果服务无法运行查询,则在解决问题之前无法查看日志。
支持数据复原的可用区子集还支持服务复原,这意味着 Azure Monitor Logs 服务操作(例如日志引入、查询和警报)可以在发生可用区故障时继续进行。
可用区可防范与基础结构相关的事件,例如存储故障。 它们无法防范应用程序级问题,例如故障代码部署或证书故障,因为这类故障这会影响整个区域。
使用连续导出功能备份特定表中的数据
你可以将发送到 Log Analytics 工作区的特定表中的数据连续导出到 Azure 存储帐户。
接收导出数据的存储帐户必须与 Log Analytics 工作区位于同一区域。 为了确保即使在工作区区域出现故障时也能保护并有权访问引入的日志,请使用异地冗余存储帐户,如配置建议中所述。
导出机制无法防御影响引入管道或导出过程本身的事件。
注释
你可以使用 externaldata 运算符从 Azure Monitor Logs 访问存储帐户中的数据。 但是,导出的数据将存储在持续期为 5 分钟的 blob 中,分析跨越多个 blob 的数据可能会比较繁琐。 因此,将数据导出到存储帐户是一个很好的数据备份机制,但如果需要在 Azure Monitor Logs 中对其进行分析,则将备份的数据存储在存储帐户中并不是一种理想的处理方式。 你可以使用 Azure 数据资源管理器、Azure 数据工厂或任何其他存储访问工具来查询大量 blob 数据。
使用工作区复制(预览版)的跨区域数据保护和服务复原能力
工作区复制(预览版)是涉及范围最广泛的复原解决方案,因为它会将 Log Analytics 工作区和传入的日志复制到另一个区域。
工作区复制可同时保护日志和服务操作,并允许在发生基础结构或应用程序相关的区域级事件时继续监视系统。
与 Azure 端到端管理的可用性区域相比,需要监控主工作区的运行状况,并决定何时切换到次要区域的工作区,然后再切换回来。
设计清单
- 若要确保对区域级事件的服务和数据复原能力,请启用工作区复制。
- 若要确保可防范数据中心故障的区域内保护,请在支持可用区的区域内创建工作区。
- 对于针对特定表中数据的跨区域备份,请使用连续导出功能将数据发送到异地复制的存储帐户。
- 监视 Log Analytics 工作区的运行状况。
配置建议
建议 | 益处 |
---|---|
如果可能,请在支持 Azure Monitor 服务复原的区域中创建工作区。 | 发生数据中心问题时,工作区数据和服务操作的区域内复原能力。 支持服务复原的可用区也支持数据复原。 这意味着,即使整个数据中心不可用,可用区之间的冗余也允许 Azure Monitor 服务操作(如引入和查询)继续进行,且引入的日志保持可用。 可用区提供区域内保护,但无法防范影响整个区域的问题。 有关哪些区域支持数据复原的信息,请参阅使用可用区增强 Azure Monitor Logs 中的数据和服务复原能力。 |
在支持数据复原的区域中创建工作区。 | 在数据中心发生问题时,提供区域内保护,防止工作区日志丢失。 在支持数据复原的区域中创建工作区意味着,即使整个数据中心不可用,引入的日志也是安全的。 如果服务无法运行查询,则在解决问题之前无法查看日志。 有关哪些区域支持数据复原的信息,请参阅使用可用区增强 Azure Monitor Logs 中的数据和服务复原能力。 |
配置数据导出功能,将特定表的数据导出到在多个区域进行复制的存储帐户中。 | 在其他区域中维护日志数据的备份副本。 使用 Azure Monitor 的数据导出功能,可将发送到特定表的数据持续导出到 Azure 存储,以便长时间保留数据。 请使用异地冗余存储 (GRS) 或异地可用区冗余存储 (GZRS) 帐户来确保数据即使在整个区域都不可用时也是安全的。 若要使数据可从其他区域读取,请为存储帐户配置对次要区域的读取访问权限。 有关详细信息,请参阅次要区域中的 Azure 存储冗余和 Azure 存储对次要区域中数据的读取访问权限。 对于不支持连续数据导出的表,可以使用其他导出数据的方法(包括逻辑应用)来保护数据。 这主要是满足数据保留合规性的解决方案,因为数据可能难以分析和还原到工作区。 数据导出容易受到区域事件的影响,因为它依赖于区域中 Azure Monitor 引入管道的稳定性。 它不会针对影响区域引入管道的事件提供复原能力。 |
比较 Azure Monitor 日志的复原功能
功能 / 特点 | 服务复原能力 | 数据备份 | 高可用性 | 保护范围 | 设置 | 成本 |
---|---|---|---|---|---|---|
工作区复制 | ✅ | ✅ | ✅ | 针对区域级事件的跨区域保护 | 启用工作区及相关数据收集规则的复制功能。 根据需要在区域之间切换。 | 基于已复制的 GB 数和区域。 |
可用性区域 | ✅ 在支持的区域中 |
✅ | ✅ | 针对数据中心问题的区域内保护 | 在受支持的区域中自动启用。 | 无成本 |
连续数据导出 | ✅ | 防范因区域性故障导致的数据丢失1 | 逐个表启用。 | 数据导出 + 存储 blob 或事件中心的成本 |
1 如果将日志导出到异地复制的存储帐户,数据导出可提供跨区域保护。 发生事件时,会备份之前导出的数据,且数据随时可;但是,根据事件的性质,后续导出可能会失败。
警报
Azure Monitor 警报无需任何设计决策即可提供高度可靠性。 其他 Azure Monitor 组件的功能通常会缓解暂时丢失警报数据的情况。
设计清单
- 配置服务运行状况警报规则。
- 配置资源运行状况警报规则。
- 避免对生成大规模通知的警报规则的服务限制。
配置建议
建议 | 益处 |
---|---|
配置服务运行状况警报规则。 | 服务运行状况警报会向你发送有关中断、服务中断、计划内维护和安全公告的通知。 有关详细信息,请参阅使用 Azure 门户创建服务运行状况警报。 |
配置资源运行状况警报规则。 | 资源运行状况警报会在这些资源的运行状况发生变化时几乎实时地发出通知。 有关详细信息,请参阅 Azure 门户中的“创建资源运行状况警报”。 |
避免对生成大规模通知的警报规则的服务限制。 | 如果警报规则会发送大量通知,则可能会达到用于发送电子邮件或短信通知的服务的服务限制。 配置编程操作或选择备用通知方法或提供程序来处理大规模通知。 有关详细信息,请参阅 通知的服务限制。 |
虚拟机
设计清单
- 创建适用于 Azure VM 的可用性警报规则。
- 创建代理心跳警报规则以验证代理健康状况。
- 配置数据收集和警报以监视客户端工作流的可靠性。
配置建议
建议 | DESCRIPTION |
---|---|
创建适用于 Azure VM 的可用性警报规则。 | 使用可用性指标(预览版)跟踪 Azure VM 何时运行。 虽然可以使用建议警报为单个计算器快速启用可用性警报规则,但面向资源组或订阅的单个警报规则可为特定区域该范围内所有 VM 启用可用性警报。 与为每台 VM 创建警报规则相比,这一操作更容易管理,并可确保自动监视在范围内创建的任何新 VM。 此警报规则不需要在 VM 上安装 Azure Monitor 代理,但它不适用于 Azure 外部的 VM。 |
创建代理心跳警报规则以验证代理的健康状态。 | Azure Monitor 代理每分钟向 Log Analytics 工作区发送一次检测信号。 使用日志搜索警报规则使用代理检测信号,当代理停止发送检测信号时会收到警报,这表明 VM 已关闭或代理运行状况不佳且客户端工作负载未受到监视。 此警报规则要求在 VM 上安装 Azure Monitor 代理,并同时适用于 Azure 和非 Azure VM。 |
配置数据收集和警报以监视客户端工作流的可靠性。 | 使用使用 Azure Monitor 监视虚拟机:收集数据中的信息来配置客户端事件收集,以指示客户端工作负载的潜在问题。 通过使用 Azure Monitor 监视虚拟机:警报使用监视虚拟机上的信息来创建警报规则,以便主动接收有关客户端工作负载的任何潜在操作问题的通知。 |
容器
设计清单
- 为群集启用 Prometheus 指标抓取。
- 启用容器信息,以便从群集中收集日志和性能数据。
- 创建诊断设置以收集 AKS 群集的控制平面日志。
- 确保支持容器见解的 Log Analytics 工作区可用。
配置建议
建议 | 益处 |
---|---|
为群集启用 Prometheus 指标抓取。 | 如果还没有 Prometheus 环境,请使用适用于 Prometheus 的 Azure Monitor 托管服务在群集上启用Prometheus。 使用 Azure 管理的 Grafana 分析收集到的 Prometheus 数据。 请参阅在适用于 Prometheus 的 Azure Monitor 托管服务中自定义 Prometheus 指标的抓取,了解如何收集默认配置以外的其他指标。 |
启用容器洞察,用于从集群收集日志和性能数据。 | 容器见解从群集中的每个节点收集 stdout/stderr 日志、性能指标和 Kubernetes 事件。 它提供用于分析此数据的仪表板和报表,包括节点和其他组件的可用性。 使用 Log Analytics 识别收集的日志中的任何可用性错误。 |
创建诊断设置以收集 AKS 群集的控制平面日志。 | AKS 将控制平面日志作为 Azure Monitor 中的资源日志实现。 创建诊断设置以将这些日志发送到 Log Analytics 工作区,以便使用日志查询来识别影响可用性的错误和问题。 |
确保支持容器见解的 Log Analytics 工作区可用。 | 容器洞察依赖于 Log Analytics 工作区。 有关确保工作区可靠性的建议,请参阅 Azure Monitor 日志的最佳做法。 |
后续步骤
- 详细了解如何开始使用 Azure Monitor。