适用于 Linux 的 Log Analytics 虚拟机扩展

概述

Azure Monitor 日志提供跨云和本地资产的监视、警报和警报修正功能。 适用于 Linux 的 Log Analytics 虚拟机扩展由 Azure 发布并提供支持。 该扩展在 Azure 虚拟机上安装 Log Analytics 代理,并将虚拟机注册到现有的 Log Analytics 工作区中。 本文档详细介绍适用于 Linux 的 Log Analytics 虚拟机扩展支持的平台、配置和部署选项。

注意

使用已启用 Azure Arc 的服务器,可以更新 Log Analytics 代理 VM 扩展、将其部署到非 Azure Windows 和 Linux 计算机,也可从中删除,从而简化在混合计算机生命周期内对其进行的管理。 有关详细信息,请参阅使用已启用 Azure Arc 的服务器进行 VM 管理

先决条件

操作系统

有关支持的 Linux 发行版的详细信息,请参阅 Azure Monitor 代理的概述一文。

代理和 VM 扩展版本

下表提供每次发布的 Log Analytics VM 扩展和 Log Analytics 代理捆绑包的版本映射。 并附有 Log Analytics 代理捆绑包版本的发行说明链接。 发行说明包括有关可用于给定代理版本的 bug 修补程序和新功能的详细信息。

Log Analytics Linux VM 扩展版本 Log Analytics 代理捆绑包版本
1.17.2 1.17.2
1.17.1 1.17.1
1.16.0 1.16.0
1.14.23 1.14.23
1.14.20 1.14.20
1.14.19 1.14.19
1.14.16 1.14.16
1.14.13 1.14.13
1.14.11 1.14.11
1.14.9 1.14.9
1.13.40 1.13.40
1.13.35 1.13.35
1.13.33 1.13.33
1.13.27 1.13.27
1.13.15 1.13.9-0
1.12.25 1.12.15-0
1.11.15 1.11.0-9
1.10.0 1.10.0-1
1.9.1 1.9.0-0
1.8.11 1.8.1-256
1.8.0 1.8.0-256
1.7.9 1.6.1-3
1.6.42.0 1.6.0-42
1.4.60.2 1.4.4-210
1.4.59.1 1.4.3-174
1.4.58.7 14.2-125
1.4.56.5 1.4.2-124
1.4.55.4 1.4.1-123
1.4.45.3 1.4.1-45
1.4.45.2 1.4.0-45
1.3.127.5 1.3.5-127
1.3.127.7 1.3.5-127
1.3.18.7 1.3.4-15

Microsoft Defender for Cloud

Microsoft Defender for Cloud 自动预配 Log Analytics 代理并将其连接到 Azure 订阅中由 Defender for Cloud 创建的默认 Log Analytics 工作区。 如果使用 Microsoft Defender for Cloud,请勿按照本文档中的步骤运行。 这样做会覆盖已配置的工作区并断开与 Microsoft Defender for Cloud 的连接。

Internet 连接

适用于 Linux 的 Log Analytics 代理扩展要求目标虚拟机已连接到 Internet。

扩展架构

以下 JSON 显示 Log Analytics 代理扩展的架构。 此扩展需要目标 Log Analytics 工作区的工作区 ID 和工作区密钥,这些值可在 Azure 门户的 Log Analytics 工作区中找到。 由于工作区密钥应视为敏感数据,因此将它存储在受保护的设置配置中。 Azure VM 扩展的受保护设置数据已加密,并且只能在目标虚拟机上解密。 请注意,workspaceIdworkspaceKey 区分大小写。

注意

由于容器监视解决方案即将停用,因此以下文档使用可选设置 "skipDockerProviderInstall": true。

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "OMSExtension",
  "apiVersion": "2018-06-01",
  "location": "<location>",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', <vm-name>)]"
  ],
  "properties": {
    "publisher": "Microsoft.EnterpriseCloud.Monitoring",
    "type": "OmsAgentForLinux",
    "typeHandlerVersion": "1.16",
    "autoUpgradeMinorVersion": true,
    "settings": {
      "workspaceId": "myWorkspaceId",
      "skipDockerProviderInstall": true
    },
    "protectedSettings": {
      "workspaceKey": "myWorkSpaceKey"
    }
  }
}

注意

上面的架构假定,将其放置在模板的根级别。 如果将其放在模板的虚拟机资源中,则应更改 typename 属性,如后文所述。

属性值

名称 值/示例
apiVersion 2018-06-01
publisher Microsoft.EnterpriseCloud.Monitoring
type OmsAgentForLinux
typeHandlerVersion 1.16
workspaceId (e.g) 6f680a37-00c6-41c7-a93f-1437e3462574
workspaceKey (e.g) z4bU3p1/GrnWpQkky4gdabWXAhbWSTz70hm4m2Xt92XI+rSRgE8qVvRhsGo9TXffbrTahyrwv35W0pOqQAU7uQ==

模板部署

注意

诊断 VM 扩展中还随附了 Log Analytics VM 扩展的某些组件。 由于这种体系结构,如果在同一 ARM 模板中对两个扩展进行实例化,则可能会发生冲突。 为避免这些安装时冲突,请使用 dependsOn 指令,确保按顺序安装扩展。 可按任一顺序安装扩展。

可使用 Azure Resource Manager 模板部署 Azure VM 扩展。 部署需要进行部署后配置(例如,载入 Azure Monitor 日志)的一个或多个虚拟机时,模板是理想选择。 包含 Log Analytics 代理 VM 扩展的示例资源管理器模板可以在 Azure 快速入门库中找到。

虚拟机扩展的 JSON 配置可以嵌套在虚拟机资源内,或放置在资源管理器 JSON 模板的根级别或顶级别。 JSON 的位置会影响资源名称和类型的值。 有关详细信息,请参阅设置子资源的名称和类型

以下示例假定 VM 扩展嵌套在虚拟机资源内。 嵌套扩展资源时,JSON 放置在虚拟机的 "resources": [] 对象中。

{
  "type": "extensions",
  "name": "OMSExtension",
  "apiVersion": "2018-06-01",
  "location": "<location>",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', <vm-name>)]"
  ],
  "properties": {
    "publisher": "Microsoft.EnterpriseCloud.Monitoring",
    "type": "OmsAgentForLinux",
    "typeHandlerVersion": "1.16",
    "settings": {
      "workspaceId": "myWorkspaceId",
      "skipDockerProviderInstall": true
    },
    "protectedSettings": {
      "workspaceKey": "myWorkSpaceKey"
    }
  }
}

将扩展 JSON 放置在模板的根部时,资源名称包括对父虚拟机的引用,并且类型反映了嵌套的配置。

{
  "type": "Microsoft.Compute/virtualMachines/extensions",
  "name": "<parentVmResource>/OMSExtension",
  "apiVersion": "2018-06-01",
  "location": "<location>",
  "dependsOn": [
    "[concat('Microsoft.Compute/virtualMachines/', <vm-name>)]"
  ],
  "properties": {
    "publisher": "Microsoft.EnterpriseCloud.Monitoring",
    "type": "OmsAgentForLinux",
    "typeHandlerVersion": "1.16",
    "settings": {
      "workspaceId": "myWorkspaceId",
      "skipDockerProviderInstall": true
    },
    "protectedSettings": {
      "workspaceKey": "myWorkSpaceKey"
    }
  }
}

Azure CLI 部署

可以使用 Azure CLI 将 Log Analytics 代理 VM 扩展部署到现有的虚拟机。 将下面的 myWorkspaceKey 值替换为工作区密钥,并将 myWorkspaceId 值替换为工作区 ID。 这些值可在 Azure 门户的“高级设置”下的 Log Analytics 工作区中找到。 将 latestVersion 值替换为 Log Analytics Linux VM 扩展版本中的版本。

az vm extension set \
  --resource-group myResourceGroup \
  --vm-name myVM \
  --name OmsAgentForLinux \
  --publisher Microsoft.EnterpriseCloud.Monitoring \
  --protected-settings '{"workspaceKey":"myWorkspaceKey"}' \
  --settings '{"workspaceId":"myWorkspaceId","skipDockerProviderInstall": true}' \
  --version latestVersion

Azure PowerShell 部署

可以使用 Azure Powershell cmdlet 将 Log Analytics 代理 VM 扩展部署到现有的虚拟机。 将下面的 myWorkspaceKey 值替换为工作区密钥,并将 myWorkspaceId 值替换为工作区 ID。 这些值可在 Azure 门户的“高级设置”下的 Log Analytics 工作区中找到。 将 latestVersion 值替换为 Log Analytics Linux VM 扩展版本中的版本。

Set-AzVMExtension \
  -ResourceGroupName myResourceGroup \
  -VMName myVM \
  -ExtensionName OmsAgentForLinux \
  -ExtensionType OmsAgentForLinux \
  -Publisher Microsoft.EnterpriseCloud.Monitoring \
  -TypeHandlerVersion latestVersion \
  -ProtectedSettingString '{"workspaceKey":"myWorkspaceKey"}' \
  -SettingString '{"workspaceId":"myWorkspaceId","skipDockerProviderInstall": true}'

故障排除和支持

疑难解答

有关扩展部署状态的数据可以从 Azure 门户和使用 Azure CLI 或 Azure Powershell 进行检索。 若要查看给定 VM 的扩展部署状态,请在使用 Azure CLI 时运行以下命令。

az vm extension list --resource-group myResourceGroup --vm-name myVM -o table

扩展执行输出将记录到以下文件:

/var/log/azure/Microsoft.EnterpriseCloud.Monitoring.OmsAgentForLinux/extension.log

若要检索安装在 VM 上的 OMS 扩展版本,请在使用 Azure CLI 时运行以下命令。

az vm extension show --resource-group myResourceGroup --vm-name myVM --instance-view

若要检索安装在 VM 上的 OMS 扩展版本,请在使用 Azure PowerShell 时运行以下命令。

Get-AzVMExtension -ResourceGroupName my_resource_group  -VMName my_vm_name -Name OmsAgentForLinux -Status

错误代码及其含义

错误代码 含义 可能的操作
9 过早调用 enable Azure Linux 代理更新为可用的最新版本。
10 VM 已连接至 Log Analytics 工作区 要将 VM 连接到扩展架构中指定的工作区,请在公共设置中将“stopOnMultipleConnections”设置为 false,或删除该属性。 连接到工作区后,此 VM 立即开始计费。
11 提供给扩展的无效配置 按上述示例设置部署所需的所有属性值。
17 Log Analytics 包安装失败
18 OMSConfig 包安装失败。 仔细查看命令输出查找根源故障。
19 OMI 包安装失败
20 SCX 包安装失败
33 生成 omsconfig 的元配置时出错。 提交 GitHub 问题,附带输出中的详细信息。
51 VM 的操作系统不支持此扩展
52 由于缺少依赖项或权限,此扩展失败 若要详细了解缺少的依赖项或权限,请查看输出和日志。
53 由于配置参数缺失或错误,此扩展失败 若要详细了解错误原因,请查看输出和日志。 此外,检查工作区 ID 的正确性,并验证计算机是否连接到 Internet。
55 无法连接到 Azure Monitor 服务或缺少所需的包或 dpkg 包管理器已锁定 确保系统具有 Internet 访问权限,或已提供有效 HTTP 代理。 此外,检查工作区 ID 的正确性,并验证是否已安装 curl 和 tar 实用程序。

有关其他故障排除信息,可查看 Log Analytics-Agent-for-Linux 故障排除指南

支持

如果对本文中的任何观点存在疑问,可以联系 Azure 支持上的 Azure 专家。 或者,你也可以提出 Azure 支持事件。 请转到 Azure 支持站点提交请求。 有关使用 Azure 支持的信息,请阅读世纪互联 Azure 支持常见问题解答