你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
此参考体系结构演示如何使用 Azure Monitor 监视在虚拟机 (VM) 中运行的操作系统 (OS) 工作负载的性能和可用性。 可以是位于 Microsoft Azure、本地环境中或非 Azure 云中的 VM。
体系结构
下载此体系结构的 Visio 文件。
Workflow
- 本地主机构 - VM 1。 此组件是具有 Internet 访问权限和面向公众的网页的 Web 应用程序,同时安装了 Log Analytics 和依赖项代理。 有关代理的信息,请参阅 Log Analytics 代理概述和 Azure Monitor 代理概述,依赖项代理。
- 本地主机构 - VM 2。 此业务逻辑环境没有 Internet 访问权限。 而它确实安装了 Log Analytics 和依赖项代理。
- 本地主机构 - VM 3。 此组件是不具备 Internet 访问权限但安装了 Log Analytics 和依赖项代理的数据存储。
- 本地主机构 - Log Analytics 网关。 Log Analytics 网关从三个本地 VM 收集日志和指标数据,并通过端口 443 上的传输控制协议 (TCP) 将其传送到 Log Analytics 工作区中。
- 本地主机构 - 防火墙。 进出本地环境的流量通过防火墙路由。
- 网关。 网关提供与分支机构的连接。
- 本地分支机构 - VM 4。 此组件是在不具备 Internet 访问权限的情况下运行但安装了 Log Analytics 和依赖项代理的商业应用程序。 VM 上安装的 Log Analytics 代理配置为将数据直接传输到 Log Analytics 工作区,而无需 Log Analytics 网关。
- 本地分支机构 - 网关。 此网关通过虚拟专用网 (VPN) 将分支机构连接到本地主机构。
- 第三方云提供商 - VM 5。 此组件是具有 Internet 访问权限和面向公众的网页的 Web 应用程序,同时安装了 Log Analytics 和依赖项代理。
- 第三方云提供商 - VM 6。 此组件是不具有 Internet 访问权限但安装了 Log Analytics 和依赖项代理的数据存储环境。 没有从第三方云提供商环境到本地环境的直接连接。
- Azure - VMSS。 这是使用 Azure 虚拟机规模集创建的规模集。 它运行已安装 Log Analytics 和诊断代理的业务应用程序。
- Azure - 应用程序服务器。 此服务器有一个运行商业应用程序的 VM,并且安装了 Log Analytics 和诊断代理。
- Azure Monitor 指标。 通过 Azure Monitor 指标收集的数据存储在为分析带有时间戳的数据而进行了优化的时序数据库中。 它还存储从本地 VM 和 Azure VM 发送的指标。
- Azure Monitor - Log Analytics 工作区。 此工作区存储从本地 VM、Azure VM 和第三方云提供商的 VM 发送的日志。 该工作区是聚合数据的 Azure 资源,充当访问此数据的管理边界。 然后,其他 Azure Monitor 服务连接到 Log Analytics 工作区,并将该数据用于各种目的。 有关详细信息,请参阅设计 Azure Monitor 日志部署。
- Azure Monitor - 见解 - Application Insights。 Application Insights 提供对应用程序的分析以及对其使用的见解。 在此示例体系结构中,可用性 ping 测试检查本地 Web 应用程序的可用性。 启用警报规则以提供测试失败的通知。 有关详细信息,请参阅什么是 Application Insights?和监视任何网站的可用性。
- Azure Monitor - 见解 - 用于 VM 的 Azure Monitor。 用于 VM 的 Azure Monitor 监视虚拟机和虚拟机规模集的性能和运行状况。 监视包括其正在运行的进程和对其他资源的依赖性。 在此方案中,用于 VM 的 Azure Monitor 将提供针对虚拟机的见解。 有关详细信息,请参阅什么是用于 VM 的 Azure Monitor?。
- Azure Monitor - 分析。 使用 Kusto 查询语言 (KQL) 在 Azure Monitor 指标和 Log Analytics 工作区中查询 VM 中的日志和指标数据。 结果提供了针对基础结构、拓扑和资源的见解。 有关详细信息,请参阅 Kusto:概述和 Azure Monitor 日志查询示例。
- Azure Monitor - 可视化效果。 Azure Monitor 使用可视化工具查看 Azure Monitor 中的应用程序和基础结构组件以及服务之间的通信。 可视化工具包括 Azure Application Insight 中的应用程序映射、用于 VM 的 Azure Monitor 的映射功能、Azure Monitor 工作簿以及 Azure Monitor 中提供的各种仪表板视图。 有关详细信息,请参阅使用用于 VM 的 Azure Monitor 的映射功能了解应用程序组件、创建和共享 Log Analytics 数据的仪表板和 Azure Monitor 工作簿。
- Azure Monitor - 集成。 Azure Monitor 与一系列合作伙伴及第三方工具和扩展集成。 这些工具和扩展基于现有 Azure Monitor 功能(如分析和可视化效果)构建并进行了增强。
- Azure Monitor - 操作 - 警报。 指标和日志数据中的变体可以指示事件的发生。 规则定义触发警报、提供通知和启动修正响应的数据变体。 在此体系结构中,当触发警报时,自动化 Runbook 会自动修正本地 VM 和 Azure VM。 还可以使用 Webhook 操作、服务管理集成和其他操作类型。 有关详细信息,请参阅使用 Azure Monitor 创建、查看和管理指标警报和使用 Azure Monitor 创建、查看和管理日志警报。
- Azure Monitor - 操作 - 自动缩放。 根据需求变化,自动缩放增加或减少 VM 实例,从而保持性能并提高成本效益。 在此体系结构中,自动缩放具有围绕平均 CPU 负载(百分比)定义的条件。 满足条件后,Azure Monitor 自动缩放将根据需求调整规模集。 有关详细信息,请参阅 Microsoft Azure 中的自动缩放概述。
组件
该体系结构包括以下组件:
Azure 事件中心 是流式处理事件的实时数据引入服务。 在此体系结构中,它通过流式处理日志和指标将 Azure Monitor 连接到外部 SIEM 工具,以便进行高级分析和长期保留。
Azure Monitor 是一个统一的平台,用于跨环境收集和分析遥测数据。 在此体系结构中,它充当针对 Azure、本地和第三方云资源的性能、可用性和诊断的中心监视解决方案。
Azure Policy 是用于强制实施规则和自动执行资源配置的治理工具。 在此体系结构中,它可确保监视代理的一致部署,并跨混合系统强制实施合规性。
Azure 存储 是一种基于云的存储解决方案,支持 Blob、文件、队列和表。 在此体系结构中,它保留监视数据和诊断日志,为长期保留和分析提供可缩放、持久和安全存储。
Azure 虚拟机 是用于在 Azure 中运行工作负荷的可缩放计算资源。 在此体系结构中,它们托管业务应用程序,并使用 Azure Monitor 和诊断代理进行监视,以确保性能和可用性。
建议
下列最佳做法是适用于大多数方案的建议。 除非有优先于这些做法的特定要求,否则请遵循这些做法。
Log Analytics 工作区
在设计 Log Analytics 工作区时,请考虑以下建议:
- 如果延迟是一种重要因素,请将工作区和资源置于同一 Azure 区域中。
- 从单个 Log Analytics 工作区开始,随着需求的变化增加工作区的数量。
- 如果你有在地理位置上较为分散的团队和资源,则可能需要在每个区域设置一个工作区。
- 工作区无需与正在运行的资源位于同一订阅中。
警报
在比较简单的情况下,可以使用指标来标记警报,而不是日志。 指标:
- 为 CPU 使用率、可用内存或逻辑磁盘空间等事件提供计数或数值。
- 延迟较低。
- 提供更细的粒度,例如每秒或每分钟间隔。
- 就问题快速通知你。
要收集自定义性能指标或特定于业务的指标以提供更深入的见解,请使用自定义指标。 有关详细信息,请参阅 Azure Monitor 中的自定义指标(预览)。
指标警报并不适用于所有情况。 在需要更多的自定义或更强大的关联时,可能仍需要使用基于日志的警报。
分析和诊断
请考虑以下分析和诊断建议:
使用日志进行更深入的分析。 日志可以:
- 提供有关事件的详细信息(与指标相比)。
- 间歇性发生。
- 推动在初始指标标记后进行更深入的诊断。
使用 HTTP 数据收集器 API 自定义日志数据收集(类似于指标),以将日志数据发送到 Log Analytics 工作区。 有关详细信息,请参阅使用 HTTP 数据收集器 API(公共预览版)将日志数据发送到 Azure Monitor。
使用 Application Insights 的智能检测功能主动分析应用程序。 智能检测应用 Azure 的机器学习功能和统计分析 来检测性能或失败异常、内存泄漏或常规的应用程序降级等问题。 有关详细信息,请参阅 Application Insights 中的智能检测。
使用用于 VM 的 Azure Monitor - 映射可以查看服务器之间的连接、进程、入站和出站连接延迟以及跨任何已连接 TCP 的体系结构的端口。 除了安装代理之外,无需任何配置。 借助用于 VM 的 Azure Monitor - 映射,可以作为互连系统与服务器交互。
Log Analytics 查询
使用 KQL 查询 Log Analytics 工作区中的数据,以搜索术语、特定事件或状态,从而确定趋势和分析模式。 使用查询资源管理器浏览和选择预编写的查询、修改这些查询或创建自己的查询。 可以在工作区中运行、保存、共享和导出查询,并将你喜欢的查询固定到仪表板以供重复使用。
代理安装
使用自动化选项(如 Azure Policy、Azure PowerShell、资源管理器模板或 Desired State Configuration (DSC)),大规模自动安装代理,而不是单独安装。 有关详细信息,请参阅使用 Azure Policy 启用用于 VM 的 Azure Monitor、使用 Azure PowerShell 启用用于 VM 的 Azure Monitor 和为混合虚拟机启用用于 VM 的 Azure Monitor - Desired State Configuration。
仪表板
对于关键应用程序,请创建 Azure 仪表板视图。 为需要关键应用程序数据的人员在共享屏幕上实时共享或提供仪表板。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改善工作负荷质量的指导原则。 有关详细信息,请参阅 Microsoft Azure 架构良好的框架。
可靠性
可靠性可确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅 可靠性的设计评审清单。
以下注意事项有助于确保环境中的可用性。
- 可用性测试。 此体系结构中使用的 URL ping 测试是最简单的外部可用性测试。 但是,还有其他选项,例如:
- 多步骤 Web 测试。 播放已排序的 Web 请求的录制以测试复杂方案。 多步骤 Web 测试在 Microsoft Visual Studio Enterprise 中创建,然后上传到门户以供执行。
- 自定义跟踪可用性测试。 使用
TrackAvailability()方法将测试结果发送到 Application Insights。
- 警报。 在 Application Insights 中创建可用性测试时,默认启用事件警报通知。 可以通过从 Azure Monitor>警报指定通知类型和详细信息来编辑警报规则。
安全性
安全性针对蓄意攻击及滥用宝贵数据和系统提供保障措施。 有关详细信息,请参阅 安全的设计评审清单。
以下项是使环境更加安全的注意事项。
- Log Analytics 工作区。 访问模式定义为以下上下文之一:
- 工作区上下文。 可以查询工作区有权访问的所有日志。 这是一种垂直访问方法。 例如,安全团队可能需要从上到下访问所有资源数据。
- 资源上下文。 只能查询特定资源的日志。 例如,可以向应用程序团队授予对他们正在处理的特定资源的日志的访问权限。
- 保护传输到 Log Analytics 的数据。 使用最低传输层安全性 (TLS) 1.2 保护传输中的数据。 无需显式启用此功能。 有关详细信息,请参阅 Log Analytics 数据安全。
- 保护 Log Analytics 中的静态数据。 默认情况下,根据 Azure 存储使用 256 位高级加密标准 (AES) 加密保护 Log Analytics 中的静态数据。
- 智能检测。 使用 Application Insights 中的智能检测分析应用程序生成的遥测数据,并检测安全问题。 有关详细信息,请参阅应用程序安全检测包(预览版)。
- 将 Azure Monitor 与安全信息和事件管理 (SIEM) 工具集成。 通过 Azure Monitor 将监视数据路由到事件中心,以集成外部 SIEM 和监视工具。 有关详细信息,请参阅将 Azure 监视数据流式传输到事件中心或外部合作伙伴。
成本优化
成本优化是研究减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅 成本优化的设计评审清单。
以下项是控制和管理环境中的成本的注意事项。
- Azure Monitor。 Azure Monitor 成本基于使用量,通常称为即用即付。
- Log Analytics。 需要为数据引入和数据保留付费。 可以估计和预测 VM 的数量,以及预期从每个 VM 收集的数据量(以 GB 为单位)。 典型的 Azure VM 每月消耗 1 GB 至 3 GB 的数据。 如果使用 Azure Monitor 日志评估数据使用情况,请使用你自己环境中的数据统计信息,并通过容量预留获取折扣。
- Application Insights。 该组件根据应用程序发送的遥测数据量以及运行的 Web 测试次数计费。
- 指标查询。 指标查询按发出的调用次数计费。
- 警报。 警报根据所监视的信号的类型和数量计费。
- 通知。 通知根据所发送的通知的类型和数量计费。
- Azure Monitor。 Azure Monitor 的使用情况和估计成本部分根据过去 31 天的使用情况估计每月成本。
- 有关详细信息,请参阅 Azure Monitor 定价和定价计算器。
卓越运营
卓越运营涵盖部署应用程序并使其在生产环境中运行的运营流程。 有关详细信息,请参阅 卓越运营的设计评审清单。
可管理性
以下是使环境更易于管理的注意事项。
- Azure 工作簿。 使用工作簿来帮助执行进一步分析,并创建丰富的报表。 工作簿可将文本、日志查询、指标和参数合并到交互式报表中。 有权访问相同 Azure 资源的团队成员可以编辑工作簿。 有关详细信息,请参阅使用工作簿创建用于 VM 的 Azure Monitor 的交互式报表。
- 合作伙伴集成。 将 Azure Monitor 与合作伙伴和第三方工具集成,以帮助实现分析、可视化、警报或服务管理和 Azure Pipelines。 有关详细信息,请参阅 Azure Monitor 合作伙伴集成。
- 将 Azure Monitor 与 Microsoft System Center 集成。 将 Azure Monitor 与 System Center 产品套件集成。 有关详细信息,请参阅 将 Operations Manager 连接到 Azure Monitor。
- 将数据发送到 Azure 事件中心。 要将 Azure Monitor 与可视化和外部监视工具集成,请参阅将 Azure 监视数据流式传输到事件中心或外部合作伙伴。
- Log Analytics 网关。 对于较小的环境(如分支机构),使用代理将数据传输到 Log Analytics 工作区,而不是传输到网关。 有关详细信息,请参阅建立与 Azure Log Analytics 的连接。
DevOps
以下是将环境与 DevOps 过程和解决方案集成时的注意事项。
- Application Insights。 将 Application Insights 集成到 Azure Pipelines 中,以帮助提高性能和可用性。 Application Insights 可以自动检测性能异常。 它连接到各种开发工具,例如 Azure DevOps Services 和 GitHub。
- 应用程序检测。 通过修改应用程序代码以使用 Application Insights 启用遥测来检测应用程序。 以下方法是检测应用程序的方法:
- 在运行时。 在运行时检测服务器上的 Web 应用程序非常适合已经部署的应用程序,因为它避免了更新代码。 合适的方案包括:
- 在 Azure Web 应用中托管的 Microsoft ASP.NET 或 ASP.NET Core 应用程序
- 在虚拟机或虚拟机规模集上的 Microsoft Internet Information Services (IIS) 中托管的 ASP.NET 应用程序
- 在本地 VM 上的 IIS 中托管的 ASP.NET 应用程序
- 基于 Java 的 Azure Functions
- 在 Linux 应用服务上 Node.js 应用
- AKS 上托管的微服务
- 在开发时。 将 Application Insights 添加到代码以自定义遥测收集并发送更多数据。 支持的语言和平台包括:
- ASP.NET 应用程序
- ASP.NET Core 应用程序
- .NET 控制台应用程序
- Java
- Node.js
- Python
- 在运行时。 在运行时检测服务器上的 Web 应用程序非常适合已经部署的应用程序,因为它避免了更新代码。 合适的方案包括:
- 使用 IT 服务管理连接器 (ITSMC) 连接到外部 IT 服务管理 (ITSM) 工具。 ITSMC 将 Azure 连接到支持的 ITSM 产品和服务,其中通常驻留了与问题相关的工作项。 有关详细信息,请参阅使用 IT 服务管理连接器将 Azure 连接到 ITSM 工具。
性能效率
性能效率是工作负荷以高效方式满足用户对它的需求的能力。 有关详细信息,请参阅 性能效率的设计评审清单。
以下是缩放环境时的注意事项。
- 自动安装和配置资源和应用程序。
- 大规模地理位置分散的应用程序。 使用 Application Insights 中的分布式跟踪跨多个应用程序组件、后端资源和微服务环境跟踪依赖项和调用。 借助分布式跟踪,可以调试在本地堆栈之外跨进程边界进行调用的应用程序。 (无需启用分布式跟踪,它作为 App Insights 的一部分自动提供。)
- 使用分布式跟踪数据的两种选项包括:
- 事务诊断体验。 此体验类似于添加了时间维度的调用堆栈。 事务诊断体验提供对单个事务/请求的可见性。 它有助于基于每个请求查找可靠性问题和性能瓶颈的根本原因。 有关详细信息,请参阅什么是分布式跟踪?
- 应用程序映射体验。 这聚合了许多事务,以演示系统如何以拓扑方式交互,并提供平均性能和错误率。 有关详细信息,请参阅应用程序映射:会审分布式应用程序。
- 使用分布式跟踪数据的两种选项包括:
后续步骤
了解有关组件技术的详细信息: