各种服务会自动生成日志。可以在 VMware Aria Automation 中生成日志包。此外,还可以将环境配置为将日志发送到 VMware Aria Operations for Logs。
有关 vracli
命令行实用程序的信息,请在 vracli
命令行中使用 --help
参数(例如,vracli log-bundle --help
)。
有关 VMware Aria Operations for Logs 的相关信息,请参见如何在 VMware Aria Automation 中配置将日志转发到 VMware Aria Operations for Logs。
日志包命令
可以创建日志包,以包含所运行服务生成的所有日志。日志包中包含所有服务日志。可以使用日志包进行故障排除。
在集群环境(高可用性模式)中,仅在一个节点上运行 vracli log-bundle
命令。将从环境中的所有节点中提取日志。但是,如果发生网络或其他集群问题,则从尽可能多的可访问节点中提取日志。例如,如果一个节点在包含三个节点的集群中断开连接,则仅从两个正常节点收集日志。vracli log-bundle
命令输出包含有关发现的任何问题及其解决办法步骤的信息。
- 要创建日志包,请通过 SSH 登录到任何节点,然后运行以下
vracli
命令:vracli log-bundle
- 要更改从每个节点收集日志的超时值,请运行以下
vracli
命令:vracli log-bundle --collector-timeout $CUSTOM_TIMEOUT_IN_SECONDS
例如,如果您的环境中包含大型日志文件、网络连接速度慢或 CPU 使用率较高,则可以将超时设置为大于默认值 1000 秒。
- 要确定特定服务日志(例如
ebs
或vro
)使用的磁盘空间,请运行以下vracli
命令并检查命令输出:vracli disk-mgr
- 要配置其他选项(如程序集超时和缓冲区位置),请使用以下
vracli
help 命令:vracli log-bundle --help
日志包结构
日志包是一个带时间戳的 tar 文件。包的名称符合模式 log-bundle-<date>T<time>.tar
文件,例如 log-bundle-20200629T131312.tar
。日志包通常包含环境中所有节点的日志。如果出现错误,则包含尽可能多的日志。至少包含本地节点的日志。
- 环境文件
环境文件包含各种 Kubernetes 维护命令的输出。该文件提供有关每个节点和每个 pod 的当前资源使用情况的信息。此外,该文件还包含所有可用 Kubernetes 实体的集群信息和描述。
- 主机日志和配置
收集每个主机的配置(例如,其
/etc
目录)和主机特定的日志(例如journald
)时,对每个集群节点或主机使用一个目录。目录的名称与节点的主机名相匹配。目录的内部内容与主机的文件系统相匹配。目录数与集群节点数相匹配。 - 服务日志
Kubernetes 服务的日志位于以下文件夹结构中:
<hostname>/services-logs/<namespace>/<app-name>/file-logs/<container-name>.log
<hostname>/services-logs/<namespace>/<app-name>/console-logs/<container-name>.log
示例文件名为
my-host-01/services-logs/prelude/vco-app/file-logs/vco-server-app.log
。- hostname 是当前运行或过去运行应用程序容器的节点的主机名。通常情况下,每个服务的每个节点都有一个实例。例如,3 个节点 = 3 个实例。
- namespace 是在其中部署应用程序的 Kubernetes 命名空间。对于面向用户的服务,此值为
prelude
。 - app-name 是生成日志的 Kubernetes 应用程序的名称(例如
provisioning-service-app
)。 - container-name 是生成日志的容器的名称。某些应用程序包含多个容器。例如,
vco-app
容器包括vco-server-app
和vco-controlcenter-app
容器。
- (旧版)Pod 日志
虽然可以使用
vracli log-bundle --include-legacy-pod-logs
命令继续在包中生成 pod 日志,但不建议这样做,因为所有日志信息都已位于每个服务的日志中。包含 pod 日志可能会不必要地增加生成日志包所需的时间和空间。
减少日志包的大小
要生成较小的日志包,请使用以下任一 vracli log-bundle
命令:
vracli log-bundle --since-days n
使用此命令可以仅收集过去几天内生成的日志文件。否则,将保留并收集过去 2 天的日志。例如:
vracli log-bundle --since-days 1
vracli log-bundle --services service_A,service_B,service_C
使用以下命令仅收集指定提供的服务的日志。例如:
vracli log-bundle --services ebs-app,vco-app
vracli log-bundle --skip-heap-dumps
使用此命令可以从生成的日志包中排除所有堆转储。
显示日志
可以使用 vracli logs <pod_name>
命令输出服务 pod 或应用程序的日志。
- --service
显示应用程序的所有节点(而不是单个 pod)的合并日志
示例:
vracli logs --service abx-service-app
- --tail n
显示日志的最后 n 行。n 的默认值为 10。
示例:
vracli logs --tail 20 abx-service-app-8598fcd4b4-tjwhk
- --file
仅显示指定的文件。如果未提供文件名,则显示所有文件。
示例:
vracli logs --file abx-service-app.log abx-service-app-8598fcd4b4-tjwhk
了解日志轮换
- 所有服务都生成日志。服务日志存储在专用的
/var/log/services-logs
磁盘中。 - 所有日志都定期轮换。每小时进行一次轮换,或者在达到特定大小限制时进行轮换。
- 最终会压缩所有旧日志轮换。
- 日志轮换没有服务级配额。
- 系统会保留尽可能多的日志。Automation 会定期检查日志的已用磁盘空间。当空间达到 70% 时,将清除较旧的日志,直到日志的磁盘空间达到 60%。
- 如果需要更多空间,可以调整日志磁盘的大小。请参见增加 VMware Aria Automation 设备的磁盘空间。
要检查日志磁盘空间,请运行以下 vracli
命令。对于每个节点,/dev/sdc(/var/log)
的可用空间应接近 30% 或更多。
# vracli cluster exec -- bash -c 'current_node; vracli disk-mgr; exit 0' sc1-10-182-1-103.eng.vmware.com /dev/sda4(/): Total size: 47.80GiB Free: 34.46GiB(72.1%) Available(for non-superusers): 32.00GiB(66.9%) SCSI ID: (0:0) /dev/sdb(/data): Total size: 140.68GiB Free: 116.68GiB(82.9%) Available(for non-superusers): 109.47GiB(77.8%) SCSI ID: (0:1) /dev/sdc(/var/log): Total size: 21.48GiB Free: 20.76GiB(96.6%) Available(for non-superusers): 19.64GiB(91.4%) SCSI ID: (0:2) /dev/sdd(/home): Total size: 29.36GiB Free: 29.01GiB(98.8%) Available(for non-superusers): 27.49GiB(93.7%) SCSI ID: (0:3)