深入探索 Azure 资源监控:从平台到应用的全面洞察
在使用 Azure 平台时,确保为资源分配足够的可用资源至关重要,特别是对于能产生收益的资源。可以为资源和订阅设置节流规则,当达到限制时,可指示 Azure 停止分配额外资源,但对于热门产品,通常不希望这样做。使用情况报告有助于识别这些资源,进而确定对每个资源应施加的限制。应管理支出、消耗和收益之间的关系,而不是限制热门的创收应用,以实现增长。
1. Azure 服务运行状况监控
迁移或在 Azure 平台上创建 IT 解决方案始于信任。将大量责任交给微软,这对解决方案和公司的成功有重大影响。许多情况下,迁移到 Azure 后,整个业务的成功掌握在微软手中,公司的所有收入可能都通过运行在 Azure 上的应用程序产生。因此,了解并跟踪 Azure 平台的总体状态是很好的做法。
Azure 服务运行状况是用于监控平台状况的工具,它会输出服务事件、计划维护、运行状况建议和安全建议的报告。还具备按订阅、区域和服务(如 Azure 虚拟机、Azure SQL 或事件中心)过滤平台运行状况相关事件的功能,可用于对在 Azure 平台上运行的工作负载记录的中断进行根本原因分析。此外,还有“运行状况警报”功能,可通过导航菜单或在主概述面板上点击“+ 添加服务运行状况警报”访问,该功能会主动发送可能影响 Azure 工作负载的事件信息。
2. Azure 监视器
设计 Azure 监控策略时,Azure 监视器是起始服务。它更侧重于平台而非应用程序。一般认为应用程序是 IT 解决方案的一个组件,是平台和代码之间的共享空间。Log Analytics 中存储的信息主要是平台诊断信息,如连接数、CPU、Azure 资源的 CRUD 操作、自动缩放事件等,这些指标由操作系统或平台生成,而非嵌入自定义代码中。
要配置 Azure 监视器并启用诊断监控,可按以下步骤操作:
1. 登录 Azure 门户(portal.azure.com)。
2. 在门户顶部中心的搜索框中输入“Monitor”,选择“Monitor”服务,然后点击导航菜单中的“Activity Log”链接,查看所选订阅和时间范围内 Azure 工作负载的活动列表。
3. 通过 PowerShell 控制台执行以下 Azure CLI 命令,检查给定资源组在过去一天的活动日志:
az monitor activity-log list --resource-group "CSHARPGUITAR-SN1-RG" `
--offset 1d --query `
'[].{Operation: operationName.value, Status: status.value}'
- 点击导航菜单中“Insights”标题下的“Virtual Machines”链接,依次点击“Monitored ➢ Not Monitored ➢ Workspace Configuration”,然后返回“Not Monitored”,会看到类似的界面。
- 要为列表中的某个 Azure VM 启用 Azure 监视器,点击该 VM 旁边的“Enable”按钮,在弹出面板上再次点击“Enable”,选择订阅,选择 Log Analytics 工作区或创建新的工作区,最后再次点击“Enable”,并导航到“Monitored”选项卡。
- 点击“Monitor | Virtual Machines”面板顶部的“Performance”链接,查看 CPU 利用率、内存、发送/接收字节数和磁盘空间等详细信息;点击“Map”,查看 Azure VM 的图形表示,包括进程列表、端口、IP 地址、操作系统版本、事件等。
- 在导航菜单中选择“Diagnostics Settings”,选择要启用诊断的资源,点击“+ Add Diagnostic setting”,输入诊断设置名称,选择要记录的日志详细信息,勾选“Send To Log Analytics”,选择订阅和要存储日志的 Log Analytics 工作区。
- 点击“Save”按钮,然后返回“Diagnostics”面板。
Azure 监视器有一些默认限制,如下表所示:
| 资源 | 默认限制 |
| — | — |
| 警报 | 每个订阅 2000 个 |
| 电子邮件警报通知 | 每小时 100 个 |
| SMS | 每 5 分钟 1 条 |
| KUSTO 查询 | 每 30 秒 200 个 |
| 存储限制 | 500MB - 无限制 |
| 数据保留 | 7 - 730 天 |
在配置诊断设置时,有三种日志存储选项:
- 发送到 Log Analytics
- 存档到存储帐户
- 流式传输到事件中心
3. Log Analytics
在之前的练习中创建了 Log Analytics 工作区,它是存储日志和指标以实现报告和警报功能的地方。创建工作区只需指定位置、名称和定价层。
启用一个或多个 Azure 产品的诊断设置后,数据开始流入工作区需要几分钟时间,之后可使用以下查询来查询信息:
AzureDiagnostics
| project Category
| summarize Count = count() by Category
| order by Count desc nulls last
Log Analytics 工作区也有一些限制,如下表所示:
| 资源 | 默认限制 |
| — | — |
| 工作区限制 | 10 - 无限制 |
| 门户中返回的行数 | 10000 |
| 表中的最大列数 | 500 |
| 列名的最大长度 | 500 |
| 数据导出 | 不支持 |
| 数据摄入 | 每分钟 6GB |
有一个 Log Analytics 工作区的免费层,该层对每个订阅的工作区数量有限制,且目前无法导出存储在工作区中的数据。配置的诊断日志越多,生成的数据就越多,同时工作区每分钟可接收的数据量也有限制。
4. Application Insights
Application Insights 具有强大的功能。它与 Log Analytics 有所不同,Log Analytics 存储更多平台特定信息,而 Application Insights 存储应用程序和代码数据。例如,Log Analytics 的 Event 表更与平台相关,而通过 Application Insights 访问的 Exceptions 或 request 表更与代码和应用程序相关。
添加新的 Application Insights 服务的步骤如下:
1. 导航回 Azure 监视器面板,点击“Applications”链接,可添加新的 Application Insights 服务,只需提供订阅、资源组和名称。
2. 创建后,导航到该服务并点击“View Application Insights data”链接,在概述面板上会看到一个类似 GUID 的“Instrumentation Key”,这是配置应用程序代码中 AI 日志记录所需的必要信息。在 ASP.NET Core 应用程序中,可在配置文件中进行如下配置:
{
"ApplicationInsights": {
"InstrumentationKey": "appInsightsInstrumentationKey"
},
"Logging": {
"LogLevel": {
"Default": "Warning"
}
}
}
- 安装并配置 Microsoft.ApplicationInsights.AspNetCore NuGet 包,以按需要在 AI 服务中创建日志。
- AI 的导航菜单中有“Logs”项,点击后可看到与图 9.10 类似的查询界面,但显示的是特定于 AI 的表。在 AI 的概述面板上,点击“Application Dashboard”链接,可看到一些令人印象深刻的默认信息。
目前,只有 Azure 应用服务和 Azure 函数具有内置的默认支持 Application Insights 的功能,创建这些服务时可启用该功能,也可通过创建 AI 服务并在代码中使用 Instrumentation Key 为任何应用程序启用。
5. Azure 数据资源管理器
如果想构建自己的自定义监控和报告系统,Azure 数据资源管理器是一个不错的起点。Log Analytics 和 Application Insights 都将数据存储在 KUSTO 集群或 ADX 集群中。Azure 监视器使用的是共享集群,所有配置为使用 Azure 监视器的 Azure 产品都会将日志存储到该集群。Application Insights 创建时也会在后台绑定一个 ADX 集群,该集群仅对具有 Instrumentation Key 的客户端可用,因此被视为私有集群。
Azure 数据资源管理器 SDK 的 NuGet 包名为 Microsoft.Azure.Kusto.Ingest.NETStandard,可用于从任何客户端向集群发送日志。Kusto 查询语言(KQL)功能强大,类似于 SQL。
要将 Log Analytics 工作区和 Application Insights 添加到 ADX 集群,可按以下步骤操作:
1. 在浏览器中打开 URL:dataexplorer.azure.com。
2. 点击“Add Cluster”按钮,输入 Log Analytics 和 Application Insights 端点,格式如下(需替换
、
和 <* - name> 为自己的值):
ade.loganalytics.io/subscriptions/<sub-id>/resourcegroups/
<resource-group>/providers/microsoft.operationalinsights/
workspaces/<workspace-name>
ade.applicationinsights.io/subscriptions/<sub-id>/
resourcegroups/<resource-group>/providers/microsoft.insights/
components/<ai-app-name>
- 为 Log Analytics 工作区端点选择数据库,并输入查询,输出将与图 9.15 类似。
- 这种配置的强大之处在于可以连接多个集群中的日志,以下是一个 KQL 查询示例:
let LA1 = 'https://ade.loganalytics.io/subscriptions/...';
union <AI1-ADX table>, cluster(LA1).database(<workspace-name>).<table name>
通过以上工具和方法,可以全面监控 Azure 平台上的资源,从平台运行状况到应用程序代码,实现对整个 IT 解决方案的有效管理和优化。
深入探索 Azure 资源监控:从平台到应用的全面洞察
6. 监控工具的综合运用与注意事项
在实际使用 Azure 资源监控工具时,需要综合运用各个工具的功能,以实现对资源的全面监控和有效管理。
首先,Azure 服务运行状况让我们能够及时了解平台的整体状况,提前应对可能出现的问题。当收到运行状况警报时,我们可以根据警报类型(如服务问题、计划维护、运行状况建议和安全建议),结合过滤功能,按订阅、区域和服务进行筛选,快速定位受影响的资源,进行根本原因分析。
Azure 监视器则侧重于平台和应用程序之间的共享空间监控。在使用过程中,我们要注意其默认限制,根据实际需求优化查询。例如,如果只关注特定类型的信息,如错误或 Key Vault 私钥的更新,可以在查询时进行针对性筛选。同时,对于无法被监控的虚拟机,要检查其操作系统是否为支持的镜像,确保安装了必要的监控服务,如 Windows Azure Guest Agent。
Log Analytics 是存储日志和指标的重要工作区,我们可以通过它进行数据查询和分析。在配置诊断设置时,要根据实际情况选择合适的日志存储选项。如果需要进行实时分析和警报,可以选择将日志流式传输到事件中心;如果希望长期存储并进行后续查询,可以选择发送到 Log Analytics 或存档到存储帐户。同时,要注意工作区的限制,如免费层对工作区数量的限制以及数据导出的不支持等。
Application Insights 则为我们提供了更接近应用程序代码的监控功能。通过 Instrumentation Key,我们可以将其集成到应用程序代码中,实现对应用程序的详细监控。在使用时,要确保在应用程序代码中正确配置 Instrumentation Key,并安装和配置相应的 NuGet 包。
Azure 数据资源管理器为我们提供了构建自定义监控和报告系统的基础。通过将 Log Analytics 工作区和 Application Insights 添加到 ADX 集群,我们可以进行跨集群查询,实现对多个数据源的统一管理和分析。在使用 Kusto 查询语言(KQL)时,可以参考官方文档进行深入学习,以充分发挥其功能。
7. 监控流程总结与优化建议
为了更好地利用 Azure 资源监控工具,我们可以总结出以下监控流程:
1.
日常监控
- 定期查看 Azure 服务运行状况,了解平台的整体状态,关注是否有影响自身资源的事件。
- 查看 Azure 监视器的活动日志,了解资源的操作情况,可使用 Azure CLI 进行特定资源组的查询。
- 检查 Log Analytics 工作区中的数据,通过查询分析资源的使用情况和性能指标。
2.
问题排查
- 当收到运行状况警报或发现应用程序出现问题时,首先使用 Azure 服务运行状况的过滤功能,按订阅、区域和服务进行筛选,查找可能的原因。
- 结合 Azure 监视器的性能和地图功能,查看服务器的基本指标和虚拟机的详细信息,定位问题所在。
- 在 Log Analytics 工作区中进行更深入的查询,分析日志数据,找出问题的根源。
3.
优化配置
- 根据监控结果,调整资源的配置和限制,如调整 Azure 监视器的查询条件,优化 Log Analytics 工作区的定价层和存储策略。
- 对于无法被监控的资源,检查并更新其操作系统或安装必要的监控服务。
- 不断优化 Application Insights 的配置,确保其能够准确反映应用程序的运行状况。
以下是一个简单的 mermaid 流程图,展示了上述监控流程:
graph LR
classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
classDef decision fill:#FFF6CC,stroke:#FFBC52,stroke-width:2px;
A([开始]):::startend --> B(日常监控):::process
B --> C{是否有问题?}:::decision
C -- 是 --> D(问题排查):::process
C -- 否 --> B
D --> E(优化配置):::process
E --> B
8. 总结
通过对 Azure 资源监控工具(Azure 服务运行状况、Azure 监视器、Log Analytics、Application Insights 和 Azure 数据资源管理器)的深入了解和综合运用,我们可以实现对 Azure 平台上资源的全面监控和有效管理。从平台的整体运行状况到应用程序代码的详细监控,每个工具都有其独特的功能和作用。
在实际使用过程中,我们要根据不同的需求和场景,合理选择和配置这些工具,注意它们的限制和特点,不断优化监控流程和查询策略。通过有效的监控,我们可以及时发现问题、进行根本原因分析,并采取相应的措施进行优化和改进,从而确保 Azure 平台上的 IT 解决方案稳定、高效地运行,为业务的成功提供有力支持。
总之,掌握 Azure 资源监控工具是实现 Azure 平台高效管理的关键,希望本文的介绍和建议能够帮助读者更好地利用这些工具,提升资源监控和管理的能力。
超级会员免费看
31

被折叠的 条评论
为什么被折叠?



