监视 Azure Functions

警报

在监视数据中发现特定情况时,Azure Monitor 警报会主动向你发出通知。 有了警报,你就可以在客户注意到你的系统中的问题之前找出和解决问题。 有关详细信息,请参阅 Azure Monitor 警报

Azure 资源的常见警报具有许多来源。 有关 Azure 资源常见警报的示例,请参阅示例日志警报查询Azure Monitor 基线警报 (AMBA) 站点提供了 Azure 登陆区域 (ALZ) 方案的关键警报指标、仪表板和指南。

通用警报模式对 Azure Monitor 警报通知的使用体验进行了标准化。 有关详细信息,请参阅常见警报架构

警报类型

可以针对 Azure Monitor 数据平台中的任何指标或日志数据源发出警报。 警报具有许多不同类型,具体取决于要监视的服务以及要收集的监视数据。 不同类型的警报各有优缺点。 有关详细信息,请参阅选择正确的监视警报类型

以下列表介绍了可以创建的 Azure Monitor 警报类型:

  • 指标警报会定期评估资源指标。 指标可以是平台指标、自定义指标、Azure Monitor 中的日志转换为的指标或 Application Insights 指标。 指标警报还可以应用多个条件和动态阈值。
  • 日志警报支持用户使用 Log Analytics 查询按照预定义的频率评估资源日志。
  • 当发生匹配所定义条件的新活动日志事件时,会触发活动日志警报。 资源运行状况警报和服务运行状况警报是报告服务和资源运行状况的活动日志警报。

某些 Azure 服务还支持智能检测警报Prometheus 警报建议的警报规则

对于某些服务,你可以通过将相同的指标警报规则应用于同一 Azure 区域中的多个相同类型资源,进行大规模的监视。 将为每个受监视的资源发送单独通知。 有关受支持的 Azure 服务和云,请参阅使用一项警报规则监视多个资源

洞察力

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

Application Insights

Azure Functions 提供与 Application Insights 的内置集成来监视函数执行。 有关如何集成、配置和使用 Application Insights 监视 Azure Functions 的详细信息,请参阅以下文章:

资源类型

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

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

有关 Azure Functions 的资源类型的详细信息,请参阅 Azure Functions 监视数据参考

数据存储

对于 Azure Monitor:

  • 指标数据存储在 Azure Monitor 指标数据库中。
  • 日志数据存储在 Azure Monitor 日志存储中。 Log Analytics 是 Azure 门户中可以查询此存储的工具。
  • Azure 活动日志是一个单独的存储区,在 Azure 门户中有自己的接口。
  • 可选择将指标和活动日志数据路由到 Azure Monitor 日志数据库存储,以便可使用 Log Analytics 查询数据并将其与其他日志数据关联。

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

Azure Monitor 平台指标

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

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

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

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

有关可以为 Azure Monitor 中的所有资源收集的所有指标的列表,请参阅 Azure Monitor 中支持的指标。 如需 Azure Functions 的可用指标的列表,请参阅 Azure Functions 监视数据参考

在创建诊断设置并将其路由到一个或多个位置之前,不会收集和存储资源日志。

Azure Functions 与 Azure Monitor 日志集成,用于监视函数。 有关如何设置诊断设置以配置和路由资源日志的详细说明,请参阅在 Azure Monitor 中创建诊断设置

显示为 Azure Functions 添加诊断设置的屏幕截图。

有关可用的资源日志类别、其关联的 Log Analytics 表以及 Azure Functions 的日志架构,请参阅 Azure Functions 监视数据参考

Azure Monitor 资源日志

借助资源日志,可以深入了解 Azure 资源已执行的操作。 日志是自动生成的,但必须将日志路由到 Azure Monitor 日志以保存或查询它们。 日志按类别组织。 给定的命名空间可能具有多个资源日志类别。

收集:在创建诊断设置并将日志路由到一个或多个位置之前,不会收集和存储资源日志。 创建诊断设置时,请指定要收集的日志类别。 可以通过多种方式创建和维护诊断设置,包括 Azure 门户、编程方式以及通过 Azure Policy。

路由:建议的默认设置是将资源日志路由到 Azure Monitor 日志,以便可以使用其他日志数据查询它们。 也可使用其他位置(例如 Azure 存储、Azure 事件中心和某些 Microsoft 监视合作伙伴)。 有关详细信息,请参阅 Azure 资源日志资源日志目标

有关收集、存储和路由资源日志的详细信息,请参阅 Azure Monitor 中的诊断设置

有关 Azure Monitor 中所有可用资源日志类别的列表,请参阅 Azure Monitor 中支持的资源日志

Azure Monitor 中的所有资源日志都具有相同的标头字段,后跟特定于服务的字段。 Azure Monitor 资源日志架构概述了常见架构。

其他日志

Azure Functions 还提供收集 Azure Monitor 资源日志以外的信息的功能。 若要查看 Azure 中运行的函数生成的应用程序日志文件的近实时流,可以连接到 Application Insights 并使用实时指标流。 或者,可以使用应用服务平台内置的日志流式处理来查看应用程序日志文件流。 有关详细信息,请参阅在 Azure Functions 中启用流式处理执行日志

分析监视数据

有许多工具可用于分析监视数据。

Azure Monitor 工具

Azure Monitor 支持以下基本工具:

支持更复杂可视化效果的工具包括:

  • 仪表板,它支持将不同类型的数据合并到 Azure 门户的单个窗格中。
  • 工作簿,它们是可在 Azure 门户中创建的可自定义报表。 工作簿可以包括文本、指标和日志查询。
  • Grafana,它是一个适用于操作仪表板的开放平台工具。 可以使用 Grafana 创建包含来自除 Azure Monitor 以外多个源的数据的仪表板。
  • Power BI,它是一项业务分析服务,可提供跨各种数据源的交互式可视化效果。 可将 Power BI 配置为自动从 Azure Monitor 导入日志数据,以利用这些可视化效果。

Azure Monitor 导出工具

可以使用以下方法将数据从 Azure Monitor 中提取到其他工具中:

要开始使用适用于 Azure Monitor 的 REST API,请参阅 Azure 监视 REST API 演练

分析 Azure Functions 的指标

以下示例使用 Azure Monitor 指标来帮助估算在消耗计划中运行函数应用所产生的成本。 若要详细了解如何估算消耗计划成本,请参阅估算消耗计划成本

使用 Azure Monitor 指标资源管理器可以图形格式查看消耗计划函数应用的成本相关数据。

  1. Azure 门户中,导航到你的函数应用。

  2. 在左侧面板中,向下滚动至“监视”,然后选择“指标” 。

  3. 在“指标”中,为“聚合”选择“函数执行计数”和“求和”。 这会在图表中将所选时间段内的执行计数之和相加。

    定义要添加到图表中的函数应用指标

  4. 选择“添加指标”并重复步骤 2-4,将“函数执行单位”添加到图表中。

生成的图表包含所选时间范围内(在本例中为 2 小时)两个执行指标的总和。

函数执行计数和执行单位图表

由于执行单位数远远大于执行计数,因此图表只显示执行单位。

此图显示两小时时间段内总共消耗了 11.1 亿个 Function Execution Units(以“MB 毫秒”度量)。 若要转换为 GB 秒,请除以 1024000。 在此示例中,函数应用消耗了 1110000000 / 1024000 = 1083.98 GB 秒。 可以将此值乘以 Functions 定价页上执行时间的当前价格,从而得出这两个小时的成本(假设已用完了所有免费授予的执行时间)。

分析 Azure Functions 的日志

Azure Functions 将所有日志写入你发送数据的 Log Analytics 工作区的 LogManagement 下的 FunctionAppLogs 表中。 可以使用 Kusto 查询来查询数据。

Log Analytics 工作区中 Azure Functions 的“查询”窗口的屏幕截图。

如需查看 Azure Monitor 日志使用并可通过 Log Analytics 查询的表列表,请参阅监视 Azure Functions 数据参考

以下示例查询可帮助你监视所有函数应用日志:


FunctionAppLogs
| order by TimeGenerated desc

FunctionAppLogs
| project TimeGenerated, HostInstanceId, Message, _ResourceId
| order by TimeGenerated desc

以下示例查询可帮助你监视指定函数应用的日志:

FunctionAppLogs
| where FunctionName == "<Function name>" 
| order by TimeGenerated desc

以下示例查询可帮助你监视所有函数应用日志上的执行:


FunctionAppLogs
| where ExceptionDetails != ""  
| order by TimeGenerated asc

以下示例查询可帮助你监视有关指定函数应用日志的异常:

FunctionAppLogs
| where ExceptionDetails != ""  
| where FunctionName == "<Function name>" 
| order by TimeGenerated desc

警报

在监视数据中发现重要情况时,Azure Monitor 警报会主动通知你。 有了警报,你就可以在客户注意到你的系统中的问题之前确定和解决它们。 可以在指标日志活动日志上设置警报。 不同类型的警报各有优缺点。

Azure Functions 警报规则

下表列出了 Azure Functions 的常见和建议的警报规则。 这些只是建议的警报。 可以为 Azure Functions 监视数据参考中列出的任何指标、日志条目或活动日志条目设置警报。

警报类型 条件 说明
指标 平均连接数 当连接数超过设置的值时
指标 HTTP 404 当 HTTP 404 响应数超过设置的值时
指标 HTTP 服务器错误数 当 HTTP 5xx 错误数超过设置的值时
活动日志 创建或更新函数应用 创建或更新应用时
活动日志 删除函数应用 删除应用时
活动日志 重启函数应用 重启应用时
活动日志 停止函数应用 停止应用时

有关监视 Azure Functions 的详细信息,请参阅以下文章: