你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
实时流式传输 Azure Spring Apps 应用程序控制台日志
注意
Azure Spring Apps 是 Azure Spring Cloud 服务的新名称。 虽然该服务有新名称,但一些地方仍会使用旧名称,我们仍在更新屏幕截图、视频和图形等资产。
本文适用于:✔️ Java ✔️ C#
本文适用于:✔️ 基本版/标准版 ✔️ 企业版
本文介绍如何在 Azure CLI 中启用日志流式处理,以获取实时应用程序控制台日志进行故障排除。 还可以使用诊断设置来分析 Azure Spring Apps 中的诊断数据。 有关详细信息,请参阅使用诊断设置分析日志和指标。
有关 Azure Spring Apps 中托管组件的流式处理日志,请参阅 实时流式传输 Azure Spring Apps 托管组件日志。
先决条件
- 具有 Azure Spring Apps 扩展的 Azure CLI 版本 1.0.0 或更高版本。 可以通过使用以下命令来安装此扩展:
az extension add --name spring
- 具有正在运行的应用程序的 Azure Spring Apps 实例。 有关详细信息,请参阅快速入门:将第一个应用程序部署到 Azure Spring Apps。
使用 Azure CLI 生成结尾日志
本部分提供了使用 Azure CLI 生成结尾日志的示例。 为了避免重复指定资源组和服务实例名称,请使用以下命令设置默认资源组名称和群集名称:
az config set defaults.group=<service-group-name>
az config set defaults.spring=<service-instance-name>
以下示例中省略了资源组和服务名。
查看具有单个实例的应用的结尾日志
如果名为 auth-service
的应用只有一个实例,则可以使用以下命令查看该应用实例的日志:
az spring app logs --name <application-name>
该命令返回类似于以下示例的日志,其中应用程序 auth-service
名称是。
...
2020-01-15 01:54:40.481 INFO [auth-service,,,] 1 --- [main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-01-15 01:54:40.482 INFO [auth-service,,,] 1 --- [main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.22]
2020-01-15 01:54:40.760 INFO [auth-service,,,] 1 --- [main] o.a.c.c.C.[Tomcat].[localhost].[/uaa] : Initializing Spring embedded WebApplicationContext
2020-01-15 01:54:40.760 INFO [auth-service,,,] 1 --- [main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 7203 ms
...
查看具有多个实例的应用的结尾日志
如果名为 auth-service
的应用具有多个实例,则可以使用 -i/--instance
选项查看实例日志。
首先,运行以下命令以获取应用实例名称:
az spring app show --name auth-service --query properties.activeDeployment.properties.instances --output table
此命令生成类似于以下输出的结果:
Name Status DiscoveryStatus
------------------------------------------- -------- -----------------
auth-service-default-12-75cc4577fc-pw7hb Running UP
auth-service-default-12-75cc4577fc-8nt4m Running UP
auth-service-default-12-75cc4577fc-n25mh Running UP
然后,可以使用 -i/--instance
选项来流式传输应用实例日志,如下所示:
az spring app logs --name auth-service --instance auth-service-default-12-75cc4577fc-pw7hb
还可以从 Azure 门户获取应用实例的详细信息。 在 Azure Spring Apps 服务的左侧导航窗格中选择“应用”之后,选择“应用实例”。
连续流式传输新日志
默认情况下,az spring app logs
仅打印流式传输到应用控制台的现有日志,然后退出。 如果要流式传输新日志,请添加 -f/--follow
参数,如以下示例所示:
az spring app logs --name auth-service --follow
使用 --follow
参数来跟踪即时日志时,Azure Spring Apps 日志流式处理服务每分钟向客户端发送一次检测信号日志,除非应用程序不断写入日志。 检测信号日志消息使用以下格式:2020-01-15 04:27:13.473: No log from server
。
使用以下命令检查所有受支持的日志记录选项:
az spring app logs --help
设置 JSON 结构化日志的格式
注意
若要设置 JSON 结构化日志的格式,需要 spring 扩展 2.4.0 版本或更高版本。
结构化应用程序日志以 JSON 格式显示,可能难以读取。 可以使用 --format-json
参数将 JSON 格式的日志格式化为更可读的格式。 有关详细信息,请参阅 Azure Spring Apps 的结构化应用程序日志。
以下示例显示了如何使用 --format-json
参数:
# Raw JSON log
$ az spring app logs --name auth-service
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Disable delta property : false"}
{"timestamp":"2021-05-26T03:35:27.533Z","logger":"com.netflix.discovery.DiscoveryClient","level":"INFO","thread":"main","mdc":{},"message":"Single vip registry refresh property : null"}
# Formatted JSON log
$ az spring app logs --name auth-service --format-json
2021-05-26T03:35:27.533Z INFO [ main] com.netflix.discovery.DiscoveryClient : Disable delta property : false
2021-05-26T03:35:27.533Z INFO [ main] com.netflix.discovery.DiscoveryClient : Single vip registry refresh property : null
--format-json
参数还接受使用格式字符串语法的可选自定义格式。 有关详细信息,请参阅格式字符串语法。
以下示例显示了如何使用格式字符串语法:
# Custom format
$ az spring app logs --name auth-service --format-json="{message}{n}"
Disable delta property : false
Single vip registry refresh property : null
使用的默认格式为:
{timestamp} {level:>5} [{thread:>15.15}] {logger{39}:<40.40}: {message}{n}{stackTrace}
在虚拟网络注入实例中流式传输 Azure Spring Apps 应用日志
对于部署在自定义虚拟网络中的 Azure Spring Apps 实例,可以默认从专用网络访问日志流式处理。 有关详细信息,请参阅在虚拟网络中部署 Azure Spring Apps
通过 Azure Spring Apps,还可使用 Azure 门户或 Azure CLI 从公共网络访问实时应用日志。
注意
如果在公用网络上启用日志流式处理终结点,会将公共入站 IP 添加到虚拟网络。 如果你担心这一点,请务必谨慎使用。
使用以下步骤在公用网络上启用日志流式处理终结点:
启用日志流公共终结点后,可以从公用网络访问应用日志,就像访问普通实例一样。
保护流向日志流式处理公共终结点的流量
日志流式处理使用与在 Azure Spring Apps 中设置过渡环境中所述的测试终结点相同的密钥,对与部署的连接进行身份验证。 因此,只有对测试密钥具有读取访问权限的用户才能访问日志流式处理。
为了在向应用程序公开公共终结点时确保应用程序的安全性,请通过使用网络安全组筛选流向你的服务的网络流量来保护终结点。 有关详细信息,请参阅教程:在 Azure 门户中使用网络安全组筛选网络流量。 网络安全组包含安全规则,这些规则可允许或拒绝多种 Azure 资源的入站和出站网络流量。 可以为每项规则指定源和目标、端口以及协议。
注意
如果在启用日志流公共终结点后无法从 Internet 访问虚拟网络注入实例中的应用日志,检查网络安全组以查看是否允许此类入站流量。
下表显示了我们推荐的基本规则示例。 可将 nslookup
等命令与 <service-name>.private.azuremicroservices.io
终结点结合使用来获取服务的目标 IP 地址。
优先级 | 名称 | 端口 | 协议 | 源 | 目标 | 操作 |
---|---|---|---|---|---|---|
100 | 规则名称 | 80 | TCP | Internet | 服务 IP 地址 | Allow |
110 | 规则名称 | 443 | TCP | Internet | 服务 IP 地址 | Allow |