你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 容器应用中的日志存储和监视选项

Azure 容器应用提供用于存储和查看应用程序日志的选项。 可以在容器应用环境级别配置日志记录选项。 如果选择 Azure Monitor 作为日志目标,则可以在环境级别和容器应用级别配置诊断设置。

容器应用应用程序日志由两个不同的类别组成:

  • 容器控制台输出 (stdout/stderr) 消息。
  • Azure 容器应用生成的系统日志。
  • Spring App 控制台日志。

可以在以下日志目标之间进行选择:

  • Log Analytics:Azure Monitor Log Analytics 是默认存储和查看选项。 日志存储在 Log Analytics 工作区中,可以使用 Log Analytics 查询查看和分析日志。 若要了解有关 Log Analytics 的详细信息,请参阅 Azure Monitor Log Analytics
  • Azure Monitor:Azure Monitor 将日志路由到一个或多个目标:
    • 用于查看和分析的 Log Analytics 工作区。
    • 用于存档的 Azure 存储帐户。
    • 用于数据引入和分析服务的 Azure 事件中心。 有关详细信息,请参阅 Azure 事件中心
    • Azure 合作伙伴监视解决方案,例如 Datadog、Elastic、Logz.io 等。 有关详细信息,请参阅合作伙伴解决方案
  • 不保存日志:可以禁用日志数据的存储。 禁用后,仍能通过容器应用中的“日志流”功能查看实时容器日志。 有关详细信息,请参阅日志流式处理

如果选择“不保存日志”或“Azure Monitor”目标,则会禁用在 Azure 门户中提供 Log Analytics 查询编辑器的“日志”菜单项

配置日志记录选项

使用以下步骤在 Azure 门户中为环境配置日志记录选项:

  1. 在门户中浏览到你的容器应用环境。

  2. 选择“ 监视>日志记录”选项

  3. 可以从以下 日志目标 选项中进行选择:

    • Azure Log Analytics:使用此选项,可以选择一个 Log Analytics 工作区来存储日志数据。 可以通过 Log Analytics 查询查看日志。 若要了解有关 Log Analytics 的详细信息,请参阅 Azure Monitor Log Analytics
    • Azure Monitor:Azure Monitor 将日志路由到目标。 选择此选项后,必须在选择该页面上的“保存”后选择“诊断设置”以完成配置
    • 不保存日志:此选项禁用对日志数据的存储。
  4. 选择“保存”。

诊断设置

如果选择 Azure Monitor 作为日志存储位置,则必须配置诊断设置。 可以在环境级别和容器应用级别配置诊断设置。

在环境级别配置诊断设置

使用以下步骤为环境配置诊断设置:

  1. 在门户中浏览到你的环境。

  2. 选择“监视”“诊断设置”>。 如果刚刚将环境的日志目标设置为 Azure Monitor,则可能需要刷新此配置项目显示的页面。

目标详细信息保存为“诊断设置”。 最多可以为环境创建五个诊断设置。 可以为每个诊断设置配置不同的日志类别。 例如,创建一个诊断设置,将系统日志类别发送到一个目标;创建另一个诊断设置,用于将容器控制台日志类别发送到另一个目标。

创建新的诊断设置

  1. 选择“添加诊断设置”。

  2. 诊断设置名称中,输入诊断设置的名称。

  3. 选择要发送到此目标的日志类别组或类别。 可以选择一个或多个类别。

  4. 如果要发送应用级 指标,请选择 “指标>AllMetrics”。

  5. 选择一个或多个“目标详细信息”

    • 发送到 Log Analytics 工作区:从现有 Log Analytics 工作区中进行选择。
    • 存档到存储帐户:此选项已停用。
    • 流式传输到事件中心:从 Azure 事件中心中进行选择。
    • 发送到合作伙伴解决方案:从 Azure 合作伙伴解决方案中进行选择。
  6. 选择“保存”。

有关诊断设置的详细信息,请参阅 Azure Monitor 中的诊断设置

在容器应用级别配置诊断设置

使用以下步骤为容器应用配置诊断设置:

  1. 请进入门户并找到您的容器应用。

  2. 选择“监视”“诊断设置”>。 如果刚刚将容器应用环境的日志目标设置为 Azure Monitor,则可能需要刷新此配置项目显示的页面。

  3. 选择“添加诊断设置”。

  4. 诊断设置名称中,输入诊断设置的名称。

  5. 在“指标”下,选择“AllMetrics”。

  6. 选择一个或多个“目标详细信息”

    • 发送到 Log Analytics 工作区:从现有 Log Analytics 工作区中进行选择。
    • 存档到存储帐户:此选项已停用。
    • 流式传输到事件中心:从 Azure 事件中心中进行选择。
    • 发送到合作伙伴解决方案:从 Azure 合作伙伴解决方案中进行选择。
  7. 选择“保存”。

配置日志记录选项

使用 az containerapp create 参数通过 Azure CLI az containerapp update--logs-destination 为容器应用环境配置日志目标。

首先,注册 Microsoft.Insights 命名空间。

az provider register --namespace Microsoft.Insights

发送到 Log Analytics 工作区

若要使用现有的 Log Analytics 工作区作为日志目标创建容器应用环境,请运行以下命令。 将 <PLACEHOLDERS> 替换为你的值。 可以从 Azure 门户中的 Log Analytics 工作区页或 az monitor log-analytics workspace show 命令获取 Log Analytics 工作区资源 ID。

az containerapp env create \
  --name <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP_NAME> \
  --logs-destination log-analytics \
  --logs-workspace-id <LOG_ANALYTICS_WORKSPACE_ID>

--logs-destination 参数接受值 log-analyticsazure-monitor以及 none

发送到 Azure Monitor

若要更新现有容器应用环境以使用 Azure Monitor 作为日志目标,请运行以下命令。 将 <PLACEHOLDERS> 替换为你自己的值:

az containerapp env update \
  --name <ENVIRONMENT_NAME> \
  --resource-group <RESOURCE_GROUP_NAME> \
  --logs-destination azure-monitor

配置诊断设置

--logs-destination 设置为 azure-monitor 时,您必须创建诊断设置,以便使用 az monitor diagnostics-settings 命令配置日志类别的目标详细信息。 可以在环境级别和容器应用级别配置这些诊断设置。

若要在环境级别创建诊断设置,请运行以下命令。 将 <PLACEHOLDERS> 替换为你的值。 可以从 Azure 门户中的“环境”页或 az containerapp env show 命令获取环境 ID。

az monitor diagnostic-settings create \
  --name "AllMetricsToLogAnalytics" \
  --resource <ENVIRONMENT_ID> \
  --logs '[{"categoryGroup":"allLogs","enabled":true}]' \
  --metrics '[{"category":"AllMetrics","enabled":true}]' \
  --workspace <LOG_ANALYTICS_RESOURCE_ID>

确保 JSON 值中没有提供给 --logs 参数和 --metrics 参数的空格。

对于--logs 参数,您可以指定categorycategoryGroup,但不能同时指定两者。 对于 categoryGroup,可用值为 auditallLogs。 对于 category,可用值为 ContainerAppConsoleLogsContainerAppSystemLogs

--metrics对于参数,唯一可用的类别是 AllMetrics

有关详细信息 ,请参阅 LogSettingsMetricSettings

若要在容器应用级别创建诊断设置,请运行以下命令。 将 <PLACEHOLDERS> 替换为你的值。 可以从 Azure 门户或 az containerapp show 命令获取容器应用 ID。

在容器应用级别创建诊断设置时,不支持参数 --logs ,对于 --metrics 参数,唯一可用的类别是 AllMetrics

az monitor diagnostic-settings create \
--name "AllMetricsToLogAnalytics" \
--resource <CONTAINER_APP_ID> \
--metrics '[{"category":"AllMetrics","enabled":true}]' \
--workspace <LOG_ANALYTICS_RESOURCE_ID>

有关 Azure Monitor 诊断设置命令的详细信息,请参阅 az monitor diagnostic-settings

局限性

设置日志选项时,以下限制适用。

  • 专用链接:不支持通过专用链接将日志直接发送到 Log Analytics 工作区。 但是,可以使用 Azure Monitor 并将日志发送到同一 Log Analytics 工作区。 这种间接作是防止系统日志数据丢失所必需的。

后续步骤