各种服务会自动生成日志。可以在 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 秒。

  • 要确定特定服务日志(例如 ebsvro)使用的磁盘空间,请运行以下 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-appvco-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)