在 Azure 操作员 Nexus Kubernetes 群集节点上运行日志收集器脚本

在某些情况下,Microsoft支持可能需要更深入地了解 Nexus Kubernetes 群集。 为便于使用,可以使用日志收集脚本。 此脚本检索所有必要的日志,使Microsoft支持能够更好地了解问题并有效地对其进行故障排除。

它收集的内容

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

系统和内核诊断

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

硬件和资源使用情况

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

软件和服务

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

网络和连接

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

安全性和合规性

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

存储和文件系统

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

Azure Arc azcmagent 日志

  • 将 Azure 连接的计算机代理和扩展的日志文件收集到 ZIP 存档中。

配置和管理

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

先决条件

  • 确保具有对 Nexus Kubernetes 群集节点的 SSH 访问权限。 如果节点具有直接 IP 可访问性,请直接建立 SSH 连接。 否则,请使用 Azure Arc 在服务器上执行命令 az ssh arc。 有关各种连接方法的详细信息,请查看 连接到群集 文章。

Execution

拥有对节点的 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支持的支持票证,以查看日志。