监视 Azure 资源管理器

本文介绍:

  • 可以为此服务收集的监视数据的类型。
  • 分析这些数据的方法。

备注

如果已熟悉此服务和/或 Azure Monitor,并且只想了解如何分析监视数据,请参阅本文末尾附近的“分析”部分。

如果具有依赖于 Azure 资源的关键应用程序和业务流程,则需要监视并获取系统的警报。 Azure Monitor 服务会从系统的每个组件收集并聚合指标和日志。 Azure Monitor 提供可用性、性能和复原能力视图,并在出现问题时向你发送通知。 可以使用 Azure 门户、PowerShell、Azure CLI、REST API 或客户端库来设置和查看监视数据。

洞察力

Azure 中的某些服务在 Azure 门户中具有内置的监视仪表板,可以从此入手来监视服务。 这些仪表板称为“见解”,可以在 Azure 门户的 Azure Monitor 的“见解中心”找到它们。

有关详细信息,请参阅“监视 Azure Monitor 资源组见解”。

资源类型

Azure 使用资源类型和 ID 的概念来标识订阅中的所有内容。 同样的,Azure Monitor 根据资源类型(也称为“命名空间”)将核心监视数据组织为指标和日志。 不同的指标和日志可用于不同的资源类型。 服务可能与多种资源类型关联。

资源类型也是 Azure 中运行的每个资源的资源 ID 的一部分。 例如,虚拟机的一种资源类型是 Microsoft.Compute/virtualMachines。 有关服务及其关联资源类型的列表,请参阅资源提供程序

有关资源管理器的资源类型的详细信息,请参阅“Azure 资源管理器监视数据参考”。

数据存储

对于 Azure Monitor:

  • 指标数据存储在 Azure Monitor 指标数据库中。
  • 日志数据存储在 Azure Monitor 日志存储中。 Log Analytics 是 Azure 门户中可以查询此存储的工具。
  • Azure 活动日志是一个单独的存储区,在 Azure 门户中有自己的接口。

可以选择将指标和活动日志数据路由到 Azure Monitor 日志存储。 然后,可以使用 Log Analytics 查询数据并将其与其他日志数据关联。

许多服务可以使用诊断设置将指标和日志数据发送到 Azure Monitor 外部的其他存储位置。 示例包括 Azure 存储,以及使用事件中心的非 Azure 合作伙伴系统

有关 Azure Monitor 如何存储数据的详细信息,请参阅 Azure Monitor 数据平台

Azure Monitor 平台指标

Azure Monitor 为大多数服务提供平台指标。 这些指标是:

  • 针对每个命名空间单独定义。
  • 存储在 Azure Monitor 时序指标数据库中。
  • 是轻型数据,并且能够支持准实时警报。
  • 用于跟踪资源随时间推移的性能变化。

集合:Azure Monitor 会自动收集平台指标。 不需要任何配置。

路由:通常还可将平台指标路由到 Azure Monitor 日志/Log Analytics,从而可以使用其他日志数据对其进行查询。 有关详细信息,请参阅指标诊断设置。 有关如何为服务配置诊断设置,请参阅在 Azure Monitor 中创建诊断设置

有关可以为 Azure Monitor 中的所有资源收集的所有指标的列表,请参阅 Azure Monitor 中支持的指标

有关资源管理器的可用指标列表,请参阅“Azure 资源管理器监视数据参考”。

在 Azure 中创建和管理资源时,将通过 Azure 的控制平面(即 Azure 资源管理器)编排你的请求。 本文介绍如何监视向 Azure 发出的控制平面请求的数量和延迟。

使用这些指标,可以在整个订阅中观察控制平面请求的流量和延迟。 例如,现在可以通过检查受限制的请求来确定请求何时受到限制。 通过筛选特定状态代码并检查服务器错误来确定它们是否失败。

这些指标最长可在三个月(93 天)内查看,并且仅跟踪同步请求。 对于像创建虚拟机这样的方案,指标并不能代表长时间运行的异步操作的性能或可靠性。

访问 Azure 资源管理器指标

你可以通过使用 Azure Monitor REST API、SDK 和 Azure 门户访问控制平面指标(通过选择“Azure 资源管理器”指标)。 有关 Azure Monitor 的概述,请参阅 Azure Monitor 指标

没有选择加入或注册过程来访问控制平面指标。

有关如何检索持有者令牌并向 Azure 发出请求的指南,请参阅 Azure REST API 参考

指标定义

Azure Monitor 中 Azure 资源管理器指标的定义只能通过 2017-12-01-preview API 版本来访问。 若要检索定义,可以运行以下代码段。 将 00000000-0000-0000-0000-000000000000 替换为订阅 ID。

curl --location --request GET 'https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metricDefinitions?api-version=2017-12-01-preview&metricnamespace=microsoft.resources/subscriptions' \
--header 'Authorization: bearer {{bearerToken}}'

此代码段将返回指标架构的定义。 值得注意的是,此架构包括可以使用 Monitor API 来进行筛选的维度

指标示例

下面是一些可帮助你探索 Azure 资源管理器指标的场景。

使用 Azure 门户查询流量和延迟控制平面指标

首先,导航到门户中的 Azure Monitor 页:

导航到 Azure 门户的“监视”页面的屏幕截图,其中突出显示了 Explore 指标。

选择“浏览指标”后,选择单个订阅,然后选择“Azure 资源管理器”指标:

Azure 门户中,选择单个订阅和 Azure 资源管理器指标的屏幕截图。

然后,在选择“应用”后,你可以使用自定义筛选和拆分来可视化你的“流量”或“延迟”控制平面指标:

Azure 门户中指标可视化效果的屏幕截图,其中显示了根据维度筛选和拆分的选项。

使用 REST API 查询流量和延迟控制平面指标

在通过 Azure 进行身份验证后,便可以请求检索订阅的控制平面指标。 在脚本中,将“00000000-0000-0000-0000-000000000000”替换为订阅 ID。 脚本会检索 2 天时间跨度内的平均请求延迟(以秒为单位)以及请求总数(按 1 天间隔细分):

curl --location --request GET "https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=average,count&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z" \
--header "Authorization: bearer {{bearerToken}}"

对于 Azure 资源管理器指标,你可以使用“延迟”指标并包括“计数”聚合,以此来检索流量计数。 你会看到请求的 JSON 响应:

{
    "cost": 5758,
    "timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
    "interval": "P1D",
    "value": [
        {
            "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Latency",
            "type": "Microsoft.Insights/metrics",
            "name": {
                "value": "Latency",
                "localizedValue": "Latency"
            },
            "displayDescription": "Latency data for all requests to Azure Resource Manager",
            "unit": "Seconds",
            "timeseries": [
                {
                    "metadatavalues": [],
                    "data": [
                        {
                            "timeStamp": "2021-11-01T00:00:00Z",
                            "count": 1406.0,
                            "average": 0.19345163584637273
                        },
                        {
                            "timeStamp": "2021-11-02T00:00:00Z",
                            "count": 1517.0,
                            "average": 0.28294792353328935
                        }
                    ]
                }
            ],
            "errorCode": "Success"
        }
    ],
    "namespace": "microsoft.resources/subscriptions",
    "resourceregion": "global"
}

如果只想检索流量计数,则可以将“流量”指标与“count”聚合一起使用:

curl --location --request GET 'https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Traffic&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z' \
--header 'Authorization: bearer {{bearerToken}}'

请求的响应为:

{
    "cost": 2879,
    "timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
    "interval": "P1D",
    "value": [
        {
            "id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Traffic",
            "type": "Microsoft.Insights/metrics",
            "name": {
                "value": "Traffic",
                "localizedValue": "Traffic"
            },
            "displayDescription": "Traffic data for all requests to Azure Resource Manager",
            "unit": "Count",
            "timeseries": [
                {
                    "metadatavalues": [],
                    "data": [
                        {
                            "timeStamp": "2021-11-01T00:00:00Z",
                            "count": 1406.0
                        },
                        {
                            "timeStamp": "2021-11-02T00:00:00Z",
                            "count": 1517.0
                        }
                    ]
                }
            ],
            "errorCode": "Success"
        }
    ],
    "namespace": "microsoft.resources/subscriptions",
    "resourceregion": "global"
}

对于支持维度的指标,需要指定维度值才能查看相应的指标值。 例如,如果要关注成功请求对资源管理器 的“延迟”,则需要使用“2XX”来筛选 StatusCodeClass 维度。

如果要查看在订阅中对网络资源(如虚拟网络和负载均衡器)发出的请求数,需要筛选 MICROSOFT.NETWORK 的命名空间维度。

检查受限制的请求

若要仅查看受限制的请求,需要进行筛选以仅显示 429 状态代码响应。 对于 REST API 调用,可通过使用 $filter 属性和 StatusCode 维度来完成筛选,方法是附加 $filter=StatusCode eq '429',如以下代码段结尾所示:

curl --location --request GET 'https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCode%20eq%20%27429%27' \
--header 'Authorization: bearer {{bearerToken}}'

你也可以直接在门户中进行筛选:筛选 HTTP 状态代码以在 Azure 门户中仅显示 429 个响应。

检查服务器错误

与查看受限制的请求类似,你可以通过筛选出 5xx 响应来查看返回服务器错误响应代码的所有请求。 对于 REST API 调用,可通过使用 $filter 属性和 StatusCodeClass 维度来完成筛选,方法是附加 $filter=StatusCodeClass eq '5xx',如以下代码段结尾所示:

curl --location --request GET 'https://management.chinacloudapi.cn/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCodeClass%20eq%20%275xx%27' \
--header 'Authorization: bearer {{bearerToken}}'

资源管理器警报规则

可以为 Azure 资源管理器监视数据参考中列出的任何指标、日志条目或活动日志条目设置警报。

顾问建议

对于某些服务,如果在资源操作期间出现严重情况或即将发生变化,则门户中的服务“概述”页面上会显示一个警报。 可以在左侧菜单“监视”下的“顾问建议”中找到警报的详细信息和建议补丁。 在正常操作期间,不会显示任何顾问建议。

有关 Azure 顾问的详细信息,请参阅 Azure 顾问概述