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

在 Azure 运营商关系 Kubernetes 群集节点上运行日志收集器脚本

在某些情况下,Microsoft 支持人员可能需要在 Nexus Kubernetes 群集内更深入地了解情况。 为了帮助他们做到这一点,你可以使用一个日志收集脚本。 此脚本检索所有所需的日志,使 Microsoft 支持人员能够更好地了解问题并有效地进行故障排除。

脚本收集的内容

日志收集器脚本旨在全面收集系统各个方面的数据,以进行故障排除和分析。 下面概述了该脚本收集的诊断数据类型:

系统和内核诊断

  • 内核信息:日志、人类可读的消息、版本和体系结构,用于深入的内核诊断。
  • 操作系统日志:详细说明系统活动的基本日志,以及系统服务的容器日志。

硬件和资源使用情况

  • CPU 和 IO 受限的进程:识别限制问题,提供性能瓶颈的见解。
  • 网络接口统计信息:网络接口的详细统计信息,用于诊断错误和丢包。

软件和服务

  • 已安装的包:所有已安装包的列表,对于了解系统的软件环境至关重要。
  • 活动系统服务:有关活动服务、进程快照以及详细系统和进程统计的信息。
  • 容器运行时和 Kubernetes 组件日志:Kubernetes 组件和其他用于群集诊断的重要服务的日志。

网络和连接

  • 网络连接跟踪信息:用于防火墙诊断的 Conntrack 统计信息和连接列表。
  • 网络配置和接口详细信息:接口配置、IP 路由、地址和邻居信息。
  • 任何其他接口配置和日志:与节点中所有接口的配置相关的日志。
  • 网络连接测试:测试外部网络连接和 Kubernetes API 服务器通信。
  • DNS 解析配置:用于诊断域名解析问题的 DNS 解析器配置。
  • 网络配置和日志:全面的网络数据,包括连接跟踪和接口配置。
  • 容器网络接口 (CNI) 配置:用于容器网络诊断的 CNI 配置。

安全性与符合性

  • SELinux 状态:报告 SELinux 模式以了解访问控制和安全上下文。
  • IPtables 规则:配置 IPtables 规则集以深入了解防火墙设置。

存储和文件系统

  • 装入点和卷信息:有关装入点、卷、磁盘使用情况和文件系统详情的详细信息。

配置和管理

  • 系统配置:用于全面查看内核运行时配置的 Sysctl 参数。
  • Kubernetes 配置和运行状况:Kubernetes 设置详细信息,包括配置和服务列表。
  • 容器运行时信息:配置、版本信息以及有关正在运行的容器的详细信息。
  • 容器运行时接口 (CRI) 信息:容器运行时接口的操作数据,有助于容器业务流程诊断。

先决条件

  • 确保可以通过 SSH 访问 Nexus Kubernetes 群集节点。 如果可以通过 IP 直接访问节点,请直接建立 SSH 连接。 否则,请通过命令 az ssh arc 使用 Azure Arc for servers。 有关各种连接方法的详细信息,请查看连接到群集一文。

执行

可以通过 SSH 访问节点后,请执行命令 sudo /opt/log-collector/collect.sh 来运行日志收集器脚本。

执行后,你会看到如下所示的输出:

Trying to check for root... 
Trying to check for required utilities... 
Trying to create required directories... 
Trying to check for disk space... 
Trying to start collecting logs... Trying to collect common operating system logs... 
Trying to collect mount points and volume information... 
Trying to collect SELinux status... 
.
.
Trying to archive gathered information... 
Finishing up...

        Done... your bundled logs are located in /var/log/<node_name_date_time-UTC>.tar.gz

如何下载日志文件

生成日志文件后,可以使用各种方法(包括 SCP、SFTP 或 Azure CLI)将生成的日志文件从群集节点下载到本地计算机。 但请务必注意,仅当可以通过 IP 直接访问群集节点时,才能使用 SCP 或 SFTP。 如果无法通过 IP 直接访问,可以使用 Azure CLI 下载日志文件。

你应该熟悉此命令,因为它就是用于通过 SSH 访问 Nexus Kubernetes 群集节点的同一个命令。 若要将生成的日志文件从节点下载到本地计算机,请再次使用此命令,并在末尾添加 cat 命令来复制文件。

RESOURCE_GROUP="myResourceGroup"
CLUSTER_NAME="myNexusK8sCluster"
SUBSCRIPTION_ID="<Subscription ID>"
USER_NAME="azureuser"
SSH_PRIVATE_KEY_FILE="<vm_ssh_id_rsa>"
MANAGED_RESOURCE_GROUP=$(az networkcloud kubernetescluster show -n $CLUSTER_NAME -g $RESOURCE_GROUP --subscription $SUBSCRIPTION_ID --output tsv --query managedResourceGroupConfiguration.name)

注意

请将占位符变量替换为与你的 Azure 环境和 Nexus Kubernetes 群集相关的实际值。

az ssh arc --subscription $SUBSCRIPTION_ID \
    --resource-group $MANAGED_RESOURCE_GROUP \
    --name <VM Name> \
    --local-user $USER_NAME \
    --private-key-file $SSH_PRIVATE_KEY_FILE
    'sudo cat /var/log/node_name_date_time-UTC.tar.gz' > <Local machine path>/node_name_date_time-UTC.tar.gz

在上面的命令中,请将 node_name_date_time-UTC.tar.gz 替换为在群集节点中创建的日志文件的名称,并将 <Local machine path> 替换为本地计算机上用于保存该文件的位置。

后续步骤

将 tar 文件下载到本地计算机后,可以将其上传到支持工单以供 Microsoft 支持人员查看日志。