本文介绍如何使用命令行工具大规模启用对虚拟机、虚拟机规模集和已启用 Arc 的服务器进行监视,以便使用基础结构即代码(IaC)工具和自动化方法。 通过这些方法,可以一致地跨 VM 机群部署监视,并将监视配置集成到 DevOps 管道中。
支持的计算机
- Azure虚拟机
- Azure 虚拟机规模集
- 已启用 Arc 的服务器
有关受支持的操作系统的列表,请参阅 Azure Monitor 代理支持的操作系统。
先决条件
- 如果启用 OpenTelemetry 指标(预览版),则会使用 Azure Monitor 工作区。 请参阅 “创建 Azure Monitor 工作区”。
- Log Analytics 工作区 如果启用基于日志的指标或收集日志。 请参阅 创建 Log Analytics 工作区。
- 创建数据收集规则(DCR)并将其与 VM 相关联的权限。 请参阅 数据收集规则权限。
- 要监视托管在 Azure 外部的虚拟机,请使用 Azure Connected Machine 代理。 必须先安装 Connected Machine 代理,以便计算机可以通过已启用 Azure Arc 的服务器进行管理,然后才能安装 Azure Monitor 代理并启用监视。 请参阅 将计算机连接到已启用 Arc 的服务器。
概述
要通过 Azure Monitor 从虚拟机的来宾操作系统和工作负载收集数据以实现全面监控,则涉及三个步骤,如下表所示。 在 Azure 门户中 创建 DCR 时,会自动完成上述每个步骤。
| 步骤 | 说明 |
|---|---|
| 安装 Azure Monitor 代理 | 需要在要监视的每个虚拟机上安装代理。 这只需要完成一次,因为代理可以使用任意数量的 DCR 来收集不同的数据。 |
| 创建数据收集规则 (DCR) | 每个 DCR 指定要收集和发送数据的位置。 可以根据要求创建自己的 DCR 或使用现有 DCR。 你需要了解不同类型的 DCR 及其用途,以确定要使用的 DCR 类型。 |
| 将 DCR 与 VM 相关联 | 在 VM 与 DCR 之间创建关联时,代理会下载该 DCR 并开始数据收集。 为代理创建与多个 DCR 的关联,以收集不同类型的数据。 删除关联以停止数据收集。 |
安装 Azure Monitor 代理
第一步是在虚拟机和已启用 Arc 的服务器上安装 Azure Monitor 代理扩展。
Azure 虚拟机
# Windows
az vm extension set \
--name AzureMonitorWindowsAgent \
--publisher Microsoft.Azure.Monitor \
--vm-name <vm-name> \
--resource-group <resource-group>
# Linux
az vm extension set \
--name AzureMonitorLinuxAgent \
--publisher Microsoft.Azure.Monitor \
--vm-name <vm-name> \
--resource-group <resource-group>
已启用 Arc 的服务器
# Windows
az connectedmachine extension create \
--name AzureMonitorWindowsAgent \
--publisher Microsoft.Azure.Monitor \
--type AzureMonitorWindowsAgent \
--machine-name <arc-server-name> \
--resource-group <resource-group> \
--location <location>
# Linux
az connectedmachine extension create \
--name AzureMonitorLinuxAgent \
--publisher Microsoft.Azure.Monitor \
--type AzureMonitorLinuxAgent \
--machine-name <arc-server-name> \
--resource-group <resource-group> \
--location <location>
虚拟机规模集
# Windows
az vmss extension set \
--name AzureMonitorWindowsAgent \
--publisher Microsoft.Azure.Monitor \
--vmss-name <vmss-name> \
--resource-group <resource-group>
# Linux
az vmss extension set \
--name AzureMonitorLinuxAgent \
--publisher Microsoft.Azure.Monitor \
--vmss-name <vmss-name> \
--resource-group <resource-group>
创建数据收集规则
数据收集规则(DCR)定义从 Azure Monitor 代理收集哪些数据,以及从何处发送数据。 可以根据要监视的内容创建不同类型的 DCR。 某些 DCR 将在 Azure 门户中启用功能,例如 VM 的增强监视体验,而其他 DCR 将收集可用于分析或警报的特定类型的日志或指标。
DCR 采用 JSON 结构。 使用 Azure 门户创建 DCR 时,无需了解 DCR 结构。 可能需要深入了解 DCR 结构,以便从头创建 DCR 或向现有 DCR 添加包括转换在内的高级功能。
下表描述了用于 VM 监视的最常见 DCR 类型。 有关 DCR 类型及其结构的完整列表,请参阅 数据收集规则结构。 有关创建 DCR 的详细信息,请参阅 数据收集规则:创建和编辑。
| DCR 类型 | 说明 |
|---|---|
| OpenTelemetry 指标 | 使用 OpenTelemetry 标准来收集系统层面的性能计数器。 在 Azure 门户中启用指标驱动的 VM 监控体验。 请使用下面的 DCR 定义。 修改节 counterSpecifiers 以添加要收集的指标。 |
| 基于日志的指标 | 在 Log Analytics 工作区中收集预定义的性能计数器。 在 Azure 门户中启用基于经典日志的体验。 请使用下面的 DCR 定义。 不应修改此 DCR。 |
| 日志 | 从 VM 收集不同类型的日志,包括 Windows 事件和 Syslog。 这些 DCR 不会在 Azure Monitor 中启用任何额外功能,但可以使用 Log Analytics 进行分析,并用于警报设置。 有关可用的不同数据源的说明,请参阅 使用 Azure Monitor 从虚拟机收集来宾日志数据 。 有关日志收集的示例 DCR 定义 ,请参阅 Azure Monitor 中的数据收集规则 (DCR) 示例 。 |
使用以下 DCR 定义为虚拟机启用增强型监视。 唯一的修改是更新每个定义中的位置和目标工作区,以指向用于 OpenTelemetry 指标的 Azure Monitor 工作区或基于日志的指标的 Log Analytics 工作区。
基于指标的体验(预览版)
{
"location": "<location>",
"properties": {
"dataSources": {
"performanceCountersOTel": [
{
"streams": "Microsoft-OtelPerfMetrics",
"samplingFrequencyInSeconds": 60,
"counterSpecifiers": [
"system.filesystem.usage",
"system.disk.io",
"system.disk.operation_time",
"system.disk.operations",
"system.memory.usage",
"system.network.io",
"system.cpu.time",
"system.network.dropped",
"system.network.errors",
"system.uptime"
],
"name": "OtelPerfCounters"
}
]
},
"destinations": {
"monitoringAccounts": [
{
"accountResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Monitor/accounts/<workspace-name>",
"name": "MonitoringAccount"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-OtelPerfMetrics"
],
"destinations": [
"MonitoringAccount"
]
}
]
}
}
基于日志的体验(经典)
{
"location": "<location>",
"properties": {
"description": "Data collection rule for VM Insights.",
"dataSources": {
"performanceCounters": [
{
"name": "VMInsightsPerfCounters",
"streams": [
"Microsoft-InsightsMetrics"
],
"scheduledTransferPeriod": "PT1M",
"samplingFrequencyInSeconds": 60,
"counterSpecifiers": [
"\\VmInsights\\DetailedMetrics"
]
}
]
},
"destinations": {
"logAnalytics": [
{
"workspaceResourceId": "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.OperationalInsights/workspaces/<workspace-name>",
"name": "VMInsightsPerf-Logs-Dest"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-InsightsMetrics"
],
"destinations": [
"VMInsightsPerf-Logs-Dest"
]
}
]
}
}
将 DCR 定义保存到 JSON 文件,并使用它通过以下命令创建 DCR。
az monitor data-collection rule create \
--name <dcr-name> \
--resource-group <resource-group> \
--location <location> \
--rule-file <path-to-json-file>
将 DCR 与 VM 相关联
最后一步是在 DCR 与 VM 之间创建关联。 这会激活 DCR,并告知 Azure Monitor 代理根据 DCR 中定义的规则开始收集数据。 如果要收集不同类型的数据,可以为 VM 创建多个关联。 还可以删除关联以停止从特定 DCR 收集数据,而不会影响其他关联或代理本身。
Azure VM
az monitor data-collection rule association create \
--name "dcr-association" \
--rule-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/microsoft.insights/datacollectionrules/<dcr-name>
--resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Compute/virtualMachines/<vm-name>
Azure VM 规模集
az monitor data-collection rule association create \
--name "dcr-association" \
--rule-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/microsoft.insights/datacollectionrules/<dcr-name>
--resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Compute/virtualMachines/<vm-name>
已启用 Arc 的服务器
az monitor data-collection rule association create \
--name "dcr-association" \
--rule-id /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/microsoft.insights/datacollectionrules/<dcr-name> \
--resource /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.HybridCompute/machines/<arc-server-name>
启用网络隔离
VM 见解支持的网络隔离有一种方法,如下表所述。
| 方法 | 说明 |
|---|---|
| 私有链接 | 请参阅 使用专用链接为 Azure Monitor 代理启用网络隔离。 |
相关内容
- 监视 Azure 中的虚拟机 - 查看可用于虚拟机和规模集的核心监视功能。
- 使用 Azure Monitor 从虚拟机收集来宾日志数据 - 添加来宾日志,例如 Windows 事件、Syslog、IIS 日志和自定义日志。
- 排查 Azure Monitor 中的 VM 监视 问题 - 调查代理安装和常见载入问题。