监视 Azure 应用服务中的应用

Azure 应用服务针对 Azure 门户中的 Web 应用、移动和 API 应用提供内置监视功能。

在 Azure 门户中,可以查看应用和应用服务计划的配额和指标,并设置警报和基于规则的自动缩放指标。

了解配额

对于托管在应用服务中的应用,其可用资源受到某些限制。 限制由与应用关联的应用服务计划定义。

注意

应用服务免费和共享(预览版)服务计划是基本层,与其他应用服务应用在相同的 Azure 虚拟机上运行。 某些应用可能属于其他客户。 这些层仅旨在用于开发和测试目的。

如果应用托管在“免费”或“共享”计划中,则该应用可用资源的限制由配额定义。

如果应用托管在“基本”、“标准”或“高级”计划中,则该应用可用资源的限制由应用服务计划的大小(小、中、大)和实例计数(1、2、3 等等)设置。

“免费”或“共享”应用的配额如下:

Quota 说明
CPU(短期) 5 分钟间隔内允许此应用使用的 CPU 量。 此配额每五分钟重置。
CPU(天) 一天内允许此应用使用的 CPU 总量。 此配额每隔 24 小时在 UTC 午夜时间重置。
内存 允许此应用具有的内存总量。
带宽 一天内允许此应用使用的传出带宽总量。 此配额每隔 24 小时在 UTC 午夜时间重置。
Filesystem 允许的存储空间总量。

适用于托管在“基本”、“标准”和“高级”层级中的应用的唯一配额是“文件系统”。

有关各种应用服务 SKU 的特定配额、限制和可用功能的详细信息,请参阅 Azure 订阅服务限制

配额强制执行

如果应用超过“CPU(短期)”、“CPU(天)”或“带宽”配额,则将终止该应用,直到配额重置。 在此期间,所有传入请求都将导致 HTTP 403 错误。

403 error message

如果超过应用内存配额,则应用会暂时停止。

如果超过文件系统配额,则任何写入操作都会失败。 写入操作失败包括对日志的任何写入。

可通过升级应用服务计划在应用中提高或删除配额。

了解指标

重要

“平均响应时间”将弃用,以避免与指标聚合混淆。 使用“响应时间”作为替代。

注意

应用的指标包括对应用的 SCM 站点的请求 (Kudu)。 这包括使用 Kudu 查看站点的 logstream 的请求。 Logstream 请求可能需要几分钟的时间,这会影响请求时间指标。 在将这些指标与自动缩放逻辑结合使用时,用户应注意这一关系。

“Http 服务器错误”仅记录访问后端服务(托管应用的辅助角色)的请求。 如果请求在 FrontEnd 失败,则不会将其记录为 Http 服务器错误。 运行状况检查功能/Application Insights 可用性测试可用于自外而内的监视。

指标提供有关应用或应用服务计划行为的信息。

应用的可用指标包括:

指标 说明
响应时间 应用处理请求所用时间(以秒为单位)。
平均响应时间(已弃用) 应用处理请求的平均时间(以秒为单位)。
平均内存工作集 应用使用的平均内存量,以 MiB 为单位。
连接 沙盒中存在的绑定套接字的数目(w3wp.exe 及其子进程)。 绑定套接字是通过调用 bind()/connect() API 创建的,并一直保留到通过 CloseHandle()/closesocket() 关闭所述的套接字。
CPU 时间 应用消耗的 CPU 量,以秒为单位。 有关此指标的详细信息,请参阅 CPU 时间与 CPU 百分比
当前程序集 此应用程序中的所有 AppDomain 中加载的程序集的当前数量。
数据输入 应用消耗的传入带宽量,以 MiB 为单位。
数据输出 应用消耗的传出带宽量,以 MiB 为单位。
文件系统使用情况 按存储共享统计的使用量(以字节为单位)。
第 0 代垃圾回收 自应用进程启动以来对第 0 代对象进行垃圾回收的次数。 较高代系的垃圾回收包括所有较低代系的垃圾回收。
第 1 代垃圾回收 自应用进程启动以来对第 1 代对象进行垃圾回收的次数。 较高代系的垃圾回收包括所有较低代系的垃圾回收。
第 2 代垃圾回收 自应用进程启动以来对第 2 代对象进行垃圾回收的次数。
句柄计数 应用进程当前打开的句柄总数。
运行状况检查状态 应用服务计划中应用程序的实例间的平均运行状况。
Http 2xx 导致 HTTP 状态代码的请求计数大于等于 200,但小于 300。
Http 3xx 导致 HTTP 状态代码的请求计数大于等于 300,但小于 400。
Http 401 导致 HTTP 401 状态代码的请求计数。
Http 403 导致 HTTP 403 状态代码的请求计数。
Http 404 导致 HTTP 404 状态代码的请求计数。
Http 406 导致 HTTP 406 状态代码的请求计数。
Http 4xx 导致 HTTP 状态代码的请求计数大于等于 400,但小于 500。
Http 服务器错误 导致 HTTP 状态代码的请求计数大于等于 500,但小于 600。
IO 每秒其他字节数 应用进程向不涉及数据的 I/O 操作(例如控制操作)发出字节的速率。
IO 每秒其他操作数 应用进程发出非读或非写 I/O 操作的速率。
IO 每秒读取字节数 应用进程通过 I/O 操作读取字节的速率。
IO 每秒读取操作数 应用进程发出读取 I/O 操作的速率。
IO 每秒写入字节数 应用进程向 I/O 操作写入字节的速率。
IO 每秒写入操作数 应用进程发出写入 I/O 操作的速率。
内存工作集 应用当前使用的内存量,以 MiB 为单位。
专用字节数 专用字节数是应用进程已分配的无法与其他进程共享的内存的当前大小(字节)。
请求 请求总数,不考虑是否导致 HTTP 状态代码。
应用程序队列中的请求数 应用程序请求队列中的请求数。
线程计数 应用进程中当前处于活动状态的线程数。
应用程序域总数 此应用程序中加载的 AppDomain 的当前数目。
卸载的应用程序域总数 自应用程序启动以来卸载的 AppDomain 的总数。

应用服务计划的可用指标包括:

注意

应用服务计划指标仅适用于“基本”、“标准”和“高级”层中的计划。

指标 说明
CPU 百分比 计划的所有实例使用的平均 CPU 量。
内存百分比 计划的所有实例使用的平均内存量。
数据输入 计划的所有实例使用的平均输入带宽量。
数据输出 计划的所有实例使用的平均输出带宽量。
磁盘队列长度 在存储上排队的读取和写入请求的平均数量。 过高的磁盘队列长度表示应用可能由于磁盘 I/O 过多而速度变慢。
Http 队列长度 必须在队列排满之前排入队列中的 HTTP 请求的平均数量。 较高或不断增长的 HTTP 队列长度表示计划处于高负载状态。

CPU 时间和 CPU 百分比

有两个反映 CPU 使用率的指标:

CPU 时间:适用于托管在“免费”或“共享”计划中的应用,因为这些应用的其中一个配额由应用所用的 CPU 时间定义。

CPU 百分比:适用于托管在“基本”、“标准”和“高级”计划中的应用,因为它们可横向扩展。CPU 百分比是所有实例中总用量的良好指标。

指标粒度和保留策略

应用和应用服务计划的指标由服务记录并聚合,并根据这些规则保留

在 Azure 门户中监视配额和指标

若要查看影响应用的各种配额和指标的状态,请转到 Azure 门户

Quotas chart in the Azure portal

若要查找配额,请选择“设置”>“配额”。 在图表中,可以查看:

  1. 配额名称。
  2. 配额的重置时间间隔。
  3. 配额的当前限制。
  4. 配额的当前值。

Metric chart in the Azure portal可以直接从资源“概览”页访问指标。 在这里,会看到表示某些应用指标的图表。

单击其中任何图表会转到指标视图,可以在该视图中创建自定义图表、查询不同的指标,等等。

若要详细了解指标,请参阅监视服务指标

警报和自动缩放

可将应用或应用服务计划的指标挂接到警报。 有关详细信息,请参阅接收警报通知

托管在“基本”或更高级别应用服务计划中的应用服务应用支持自动缩放。 使用自动缩放可以配置用于监视应用服务计划指标的规则。 规则可以增加或减少实例计数,并根据需要提供更多的资源。 规则还有助于避免过度预配应用,从而节省资金。

有关自动缩放的详细信息,请参阅如何缩放以及有关 Azure Monitor 自动缩放的最佳做法