排查 Linux 更新代理问题

在进行更新管理时计算机未显示为已就绪(正常),这可能有多种原因。 你可以检查 Linux 混合 Runbook 辅助角色代理的运行状况,以确定潜在问题。 以下是计算机的三种就绪状态:

  • 就绪:已部署混合 Runbook 辅助角色,并且上次访问它的时间距当前时间不到一小时。
  • 已断开连接:已部署混合 Runbook 辅助角色,并且上次访问它的时间距当前时间超过一小时。
  • 未配置:混合 Runbook 辅助角色找不到或尚未完成部署。

注意

Azure 门户显示的内容和计算机的当前状态之间可能会有些微延迟。

本文介绍如何从 Azure 门户为 Azure 计算机运行故障排除,以及如何为离线场景下的非 Azure 计算机运行故障排除。

注意

如果配置了代理服务器,则故障排除脚本当前不会通过它路由流量。

启动“故障排除”

对于 Azure 计算机,请选择门户中“更新代理准备”列下的“故障排除”链接,以打开“排除更新代理故障”页 。 对于非 Azure 计算机,该链接会转到本文。 若要对非 Azure 计算机进行故障排除,请参阅“脱机故障排除”部分中的说明。

Screenshot of VM list page.

注意

检查要求 VM 处于运行状态。 如果 VM 没有运行,则会显示“启动 VM”。

在“排除更新代理故障”页上,选择“运行检查”,启动故障排除。 故障排除将使用运行命令在计算机上运行脚本,以验证依赖项。 完成故障排除时,它会返回检查的结果。

Screenshot of Troubleshoot page.

检查完成后,在窗口中将返回结果。 检查部分提供了每项检查所要查找的内容相关信息。

Screenshot of Linux Troubleshooter.

先决条件检查

操作系统

操作系统检查将验证混合 Runbook 辅助角色是否正在运行受支持的操作系统之一。

Dmidecode 检查

若要验证某个 VM 是否为 Azure VM,请使用以下命令检查资产标记值:

sudo dmidecode

如果资产标记不是 7783-7084-3265-9085-8269-3286-77,请重启 VM 以开始重新注册。

监视代理服务运行状况检查

监视代理

若要解决此问题,请安装 Azure Log Analytics Linux 代理,并确保它与所需的终结点通信。 有关详细信息,请参阅在 Linux 计算机上安装 Log Analytics 代理

此任务检查文件夹是否存在 -

/etc/opt/microsoft/omsagent/conf/omsadmin.conf

监视代理状态

若要解决此问题,必须使用以下命令启动 OMS 代理服务:

 sudo /opt/microsoft/omsagent/bin/service_control restart

若要验证,可使用以下命令执行进程检查:

process_name="omsagent" 
ps aux | grep %s | grep -v grep" % (process_name)" 

有关详细信息,请参阅排查适用于 Linux 的 Log Analytics 代理的问题

多宿主

此检查可确定代理是否向多个工作区报告。 更新管理不支持多宿主。

若要解决此问题,请完全清除 OMS 代理,并使用与更新管理链接的工作区重新安装该代理

通过检查以下路径下的目录来验证是否不存在其他多宿主目标:

/var/opt/microsoft/omsagent。

由于它们是工作区的目录,因此目录数量等于加入 OMSAgent 的工作区数量。

混合 Runbook 辅助角色

若要解决此问题,请运行以下命令:

sudo su omsagent -c 'python /opt/microsoft/omsconfig/Scripts/PerformRequiredConfigurationChecks.py'

此命令会强制 omsconfig 代理与 Azure Monitor 进行通信并检索最新的配置。

验证以下两个路径是否存在:

/opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/VERSION </br> /opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/DSCResources/MSFT_nxOMSAutomationWorkerResource/automationworker/worker/configuration.py

混合 Runbook 辅助角色状态

此检查可确保混合 Runbook 辅助角色在计算机上运行。 如果混合 Runbook 辅助角色正常运行,则应存在以下示例中的进程。

ps -ef | grep python
nxautom+   8567      1  0 14:45 ?        00:00:00 python /opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/DSCResources/MSFT_nxOMSAutomationWorkerResource/automationworker/worker/main.py /var/opt/microsoft/omsagent/state/automationworker/oms.conf rworkspace:<workspaceId> <Linux hybrid worker version>
nxautom+   8593      1  0 14:45 ?        00:00:02 python /opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/DSCResources/MSFT_nxOMSAutomationWorkerResource/automationworker/worker/hybridworker.py /var/opt/microsoft/omsagent/state/automationworker/worker.conf managed rworkspace:<workspaceId> rversion:<Linux hybrid worker version>
nxautom+   8595      1  0 14:45 ?        00:00:02 python /opt/microsoft/omsconfig/modules/nxOMSAutomationWorker/DSCResources/MSFT_nxOMSAutomationWorkerResource/automationworker/worker/hybridworker.py /var/opt/microsoft/omsagent/<workspaceId>/state/automationworker/diy/worker.conf managed rworkspace:<workspaceId> rversion:<Linux hybrid worker version>

更新管理将从操作终结点下载混合 Runbook 辅助角色包。 因此,如果混合 Runbook 辅助角色未运行,并且操作终结点检查失败,则更新可能会失败。

若要解决此问题,请运行以下命令:

sudo su omsagent -c 'python /opt/microsoft/omsconfig/Scripts/PerformRequiredConfigurationChecks.py'

此命令会强制 omsconfig 代理与 Azure Monitor 进行通信并检索最新的配置。

如果问题仍然存在,请运行 omsagent 日志收集器工具

连接性检查

代理启用的检查

若要解决此问题,请删除代理,或确保代理地址能够访问必要的 URL

可以通过运行以下命令来验证任务:

HTTP_PROXY

IMDS 连接检查

若要解决此问题,请允许访问 IP 169.254.169.254。 有关详细信息,请参阅访问 Azure 实例元数据服务

网络更改后,你可以重新运行疑难解答,或运行以下命令进行验证:

 curl -H \"Metadata: true\" http://169.254.169.254/metadata/instance?api-version=2018-02-01

一般 Internet 连接

此项检查可确保计算机能够访问 Internet;如果你已阻止 Internet 并仅允许特定的 URL,则可以忽略此项检查。

任何 HTTP URL 上的 CURL。

注册终结点

此检查可确定混合 Runbook 辅助角色是否可以与 Log Analytics 工作区中的 Azure 自动化正确通信。

代理和防火墙配置必须允许混合 Runbook 辅助角色代理与注册终结点通信。 有关要打开的地址和端口列表,请参阅网络规划

通过允许必要的 URL 来解决此问题。 有关详细信息,请参阅更新管理

网络更改后,你可以对提供的 jrds 终结点重新运行疑难解答或 CURL。

操作终结点

此检查可确定 Log Analytics 代理是否可以与作业运行时数据服务正确通信。

代理和防火墙配置必须允许混合 Runbook 辅助角色代理与作业运行时数据服务通信。 有关要打开的地址和端口的列表,请参阅网络规划

Log Analytics 终结点 1

此检查会验证计算机是否可以访问 Log Analytics 代理所需的终结点。

通过允许必要的 URL 来解决此问题。

做出网络更改后,你可以对提供的 ODS 终结点重新运行疑难解答或 Curl。

Log Analytics 终结点 2

此检查会验证计算机是否可以访问 Log Analytics 代理所需的终结点。

通过允许必要的 URL 来解决此问题。

做出网络更改后,你可以对提供的 OMS 终结点重新运行疑难解答或 Curl

软件存储库

通过允许必要的存储库 URL 来解决此问题。

做出网络更改后,你可以对包管理器中配置的软件存储库

重新运行疑难解答或 Curl。

刷新存储库有助于确认通信状态。

sudo apt-get check
sudo yum check-update

注意

只能在脱机模式下运行该检查。

脱机使用故障排除

可以通过在本地运行脚本,在混合 Runbook 辅助角色上脱机使用故障排除。 可在 GitHub 中查看 Python 脚本 UM_Linux_Troubleshooter_Offline.py

注意

当前版本的故障排除脚本不支持 Ubuntu 20.04。

以下示例显示了此脚本的输出示例:

Debug: Machine Information:   Static hostname: LinuxVM2
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 00000000000000000000000000000000
           Boot ID: 00000000000000000000000000000000
    Virtualization: microsoft
  Operating System: Ubuntu 16.04.5 LTS
            Kernel: Linux 4.15.0-1025-azure
      Architecture: x86-64


Passed: Operating system version is supported

Passed: Microsoft Monitoring agent is installed

Debug: omsadmin.conf file contents:
        WORKSPACE_ID=00000000-0000-0000-0000-000000000000
        AGENT_GUID=00000000-0000-0000-0000-000000000000
        LOG_FACILITY=local0
        CERTIFICATE_UPDATE_ENDPOINT=https://00000000-0000-0000-0000-000000000000.oms.opinsights.azure.cn/ConfigurationService.Svc/RenewCertificate
        URL_TLD=opinsights.azure.cn
        DSC_ENDPOINT=https://scus-agentservice-prod-1.azure-automation.cn/Accounts/00000000-0000-0000-0000-000000000000/Nodes\(AgentId='00000000-0000-0000-0000-000000000000'\)
        OMS_ENDPOINT=https://00000000-0000-0000-0000-000000000000.ods.opinsights.azure.cn/OperationalData.svc/PostJsonDataItems
        AZURE_RESOURCE_ID=/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/myresourcegroup/providers/microsoft.compute/virtualmachines/linuxvm2
        OMSCLOUD_ID=0000-0000-0000-0000-0000-0000-00
        UUID=00000000-0000-0000-0000-000000000000


Passed: Microsoft Monitoring agent is running

Passed: Machine registered with log analytics workspace:['00000000-0000-0000-0000-000000000000']

Passed: Hybrid worker package is present

Passed: Hybrid worker is running

Passed: Machine is connected to internet

Passed: TCP test for {scus-agentservice-prod-1.azure-automation.cn} (port 443) succeeded

Passed: TCP test for {eus2-jobruntimedata-prod-su1.azure-automation.cn} (port 443) succeeded

Passed: TCP test for {00000000-0000-0000-0000-000000000000.ods.opinsights.azure.cn} (port 443) succeeded

Passed: TCP test for {00000000-0000-0000-0000-000000000000.oms.opinsights.azure.cn} (port 443) succeeded

Passed: TCP test for {ods.systemcenteradvisor.com} (port 443) succeeded

后续步骤

排查混合 Runbook 辅助角色问题