实时流式传输 Azure Spring Apps 作业日志(预览)
注意
基本、标准和企业计划将从 2025 年 3 月中旬开始弃用,停用期为 3 年。 建议转换到 Azure 容器应用。 有关详细信息,请参阅 Azure Spring Apps 停用公告。
标准消耗和专用计划将于 2024 年 9 月 30 日开始弃用,并在六个月后完全关闭。 建议转换到 Azure 容器应用。
本文介绍如何使用 Azure CLI 获取作业的实时日志进行故障排除。 还可以使用诊断设置来分析 Azure Spring Apps 中的诊断数据。 有关详细信息,请参阅使用诊断设置分析日志和指标。 有关流式传输日志的详细信息,请参阅实时流式传输 Azure Spring Apps 应用程序控制台日志。
先决条件
- 具有 Azure Spring Apps 扩展的 Azure CLI 版本 1.24.0 或更高版本。 可以使用以下命令安装扩展:
az extension add --name spring
。
分配 Azure 角色
若要流式传输作业的日志,必须分配有相关的 Azure 角色。 下表列出了所需的角色以及为该角色授予权限以进行的操作:
所需角色 | Operations |
---|---|
Azure Spring Apps 作业日志读取者角色 | Microsoft.AppPlatform/Spring/jobs/executions/logstream/action Microsoft.AppPlatform/Spring/jobs/executions/listInstances/action |
按照以下步骤使用 Azure 门户分配 Azure 角色:
打开 Azure 门户。
打开你的 Azure Spring Apps 服务实例。
在导航窗格中,选择“访问控制(IAM)”。
在“访问控制(IAM)”页上选择“添加”,然后选择“添加角色分配”。
在“添加角色分配”页上的“名称”列表中,搜索并选择目标角色,然后选择“下一步”。
选择“成员”,然后搜索并选择你的用户名。
选择“查看 + 分配”。
查看跟踪日志
本部分提供了使用 Azure CLI 生成跟踪日志的示例。
查看特定实例的跟踪日志
每次触发一个作业时,都会创建一个新的作业执行。 此外,根据作业的并行度设置,多个副本或实例并行执行。
使用以下命令列出作业执行中的所有实例:
az spring job execution instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--job <job-name> \
--execution <job-execution-name>
可以从输出中获取作业执行的所有实例名称。
若要查看特定实例的跟踪日志,请使用带 -i/--instance
参数的 az spring job logs
命令,如以下示例中所示:
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--instance <instance-name>
在一个命令中查看所有实例的跟踪日志
若要查看所有实例的跟踪日志,请使用 --all-instances
参数,如以下示例中所示。 实例名称是每个日志行的前缀。 如果有多个实例,则为每个实例批量打印日志。 这样,一个实例的日志就不会与另一个实例的日志交错。
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--all-instances
连续流式传输新日志
默认情况下,az spring job logs
仅打印流式传输到控制台的现有日志,然后退出。 如果要流式传输新日志,请添加 -f/--follow
参数。
使用 -f/--follow
选项跟踪即时日志时,Azure Spring Apps 日志流式处理服务会每隔一分钟向客户端发送一次检测信号日志,除非该作业不断写入日志。 检测信号日志消息使用以下格式:2023-12-18 09:12:17.745: No log from server
。
流式传输特定实例的日志
请使用以下命令获取特定实例的实例名称并流式传输其日志:
az spring job execution instance list \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--job <job-name> \
--execution <job-execution-name>
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--instance <instance-name> \
--follow
流式传输所有实例的日志
使用以下命令流式传输所有实例的日志:
az spring job logs \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-instance-name> \
--name <job-name> \
--execution <job-execution-name> \
--all-instances \
--follow
在作业执行中流式传输多个实例的日志时,一个实例的日志与其他实例的日志交错。
在虚拟网络注入实例中流式传输日志
对于部署在自定义虚拟网络中的 Azure Spring Apps 实例,可以默认从专用网络访问日志流式处理。 有关详细信息,请参阅在虚拟网络中部署 Azure Spring Apps
借助 Azure Spring Apps,还可从公用网络访问实时作业日志。
注意
如果在公用网络上启用日志流式处理终结点,会将公共入站 IP 添加到虚拟网络。 如果你担心这一点,请务必谨慎使用。
使用以下步骤在公用网络上启用日志流式处理终结点:
启用日志流公共终结点后,可从公用网络访问作业日志,就像访问普通实例一样。
保护流向日志流式处理公共终结点的流量
作业的日志流式处理使用 Azure RBAC 对作业的连接进行身份验证。 因此,只有具有适当角色的用户才能访问日志。
为了在向应用程序公开公共终结点时确保作业的安全性,请通过使用网络安全组筛选流向你的服务的网络流量来保护终结点。 有关详细信息,请参阅教程:在 Azure 门户中使用网络安全组筛选网络流量。 网络安全组包含安全规则,这些规则可允许或拒绝多种 Azure 资源的入站和出站网络流量。 可以为每项规则指定源和目标、端口以及协议。
注意
如果在启用日志流公共终结点后,无法通过 Internet 访问虚拟网络注入实例中的作业日志,请检查网络安全组,查看是否已允许此类入站流量。
下表显示了我们推荐的基本规则示例。 可将 nslookup
等命令与 <service-name>.private.microservices.azure.cn
终结点结合使用来获取服务的目标 IP 地址。
优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 操作 |
---|---|---|---|---|---|---|
100 | 规则名称 | 80 | TCP | Internet | 服务 IP 地址 | Allow |
110 | 规则名称 | 443 | TCP | Internet | 服务 IP 地址 | Allow |