52、深入探索 Azure 资源监控:从平台到应用的全面洞察

深入探索 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}'
  1. 点击导航菜单中“Insights”标题下的“Virtual Machines”链接,依次点击“Monitored ➢ Not Monitored ➢ Workspace Configuration”,然后返回“Not Monitored”,会看到类似的界面。
  2. 要为列表中的某个 Azure VM 启用 Azure 监视器,点击该 VM 旁边的“Enable”按钮,在弹出面板上再次点击“Enable”,选择订阅,选择 Log Analytics 工作区或创建新的工作区,最后再次点击“Enable”,并导航到“Monitored”选项卡。
  3. 点击“Monitor | Virtual Machines”面板顶部的“Performance”链接,查看 CPU 利用率、内存、发送/接收字节数和磁盘空间等详细信息;点击“Map”,查看 Azure VM 的图形表示,包括进程列表、端口、IP 地址、操作系统版本、事件等。
  4. 在导航菜单中选择“Diagnostics Settings”,选择要启用诊断的资源,点击“+ Add Diagnostic setting”,输入诊断设置名称,选择要记录的日志详细信息,勾选“Send To Log Analytics”,选择订阅和要存储日志的 Log Analytics 工作区。
  5. 点击“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"
        }
    }
}
  1. 安装并配置 Microsoft.ApplicationInsights.AspNetCore NuGet 包,以按需要在 AI 服务中创建日志。
  2. 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>
  1. 为 Log Analytics 工作区端点选择数据库,并输入查询,输出将与图 9.15 类似。
  2. 这种配置的强大之处在于可以连接多个集群中的日志,以下是一个 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 平台高效管理的关键,希望本文的介绍和建议能够帮助读者更好地利用这些工具,提升资源监控和管理的能力。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值