你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Monitor 中的 VM 见解当前使用 Log Analytics 工作区从虚拟机收集客户端性能数据,并为 Azure 门户中的可视化效果提供支持。 随着 OpenTelemetry (OTel) 系统指标的发布,VMinsights 正在转换为一种更具成本效益、更高效的方法来收集和可视化系统级指标。 本文介绍如何开始使用 OpenTelemetry 指标作为主要可视化工具。
用于 VM 洞察的 OpenTelemetry 的优点
基于 OTel 的新集合管道的优点包括:
- 标准系统级指标,例如 CPU、内存、磁盘 I/O 和网络错误。
- 以前在 Azure Monitor 中不可用的按进程指标(例如进程运行时间、内存和打开的文件描述符)。
- 对非 OS 工作负荷(如 MongoDB、Cassandra 和 Oracle)的扩展性。
- 跨平台一致性,跨 Linux 和 Windows 的统一架构。
先决条件
- 运行 Azure Monitor 代理支持的操作系统的 Azure VM 或已启用 Arc 的服务器。
- 有关 与 Azure Monitor 代理相关的先决条件,请参阅“管理 Azure Monitor 代理 ”。
- 有关 Azure Monitor 代理的网络要求,请参阅 Azure Monitor 代理网络配置 。
为 VM 见解启用 OpenTelemetry
注释
Azure 门户目前是唯一支持为 VM 洞察启用 OpenTelemetry 的方法。
在 Azure 门户中选择 VM,然后导航到“监视”部分下的“见解”窗格。
如果 VM 已加入 VM insights,则会看到启用 OpenTelemetry 的提示。
如果 VM 尚未载入,可以在载入过程中启用 OpenTelemetry。
对于尚未载入的 VM,可以选择是启用基于日志的经典指标、新的 OpenTelemetry 指标,还是同时启用这两者。 对于已载入的 VM,只能添加 OpenTelemetry 指标。 禁用基于日志的经典指标的选项当前不可用。 请参阅 “禁用基于经典日志的指标 ”以禁用经典体验。
将显示用于 OTel 指标的 Azure Monitor 工作区和将用于经典指标的 Log Analytics 工作区。 可以通过选择“ 自定义基础结构监视”来更改任一工作区。 如果工作区尚不存在,将为你创建一个默认工作区。 还可以选择创建自己的新工作区。
注释
此屏幕显示将收集的指标,尽管无法在此处修改它们。 请参阅 自定义指标集合。
可视化 OpenTelemetry 指标
启用 OTel 指标时,VM 见解仪表板会更新为使用这些指标,而不是存储在 Log Analytics 工作区中的指标。 可以对这些指标进行自定义分析,从 Azure Monitor 工作区中选择 “指标 ”选项以打开指标资源管理器。 请参阅 支持 PromQL 的 Azure Monitor 指标资源管理器。
禁用基于日志的经典指标
如果 VM 当前正在使用基于日志的经典 VM 见解体验,则可以选择停止将指标发送到 Log Analytics 工作区以节省引入和保留成本。 有关此过程,请参阅“在 VM 见解中禁用 VM 监视”。
自定义指标集合
默认情况下,VM 见解不收取任何费用收集一组核心指标。 如果需要其他可见性(例如按进程性能、逻辑磁盘使用情况、文件系统利用率或特定于工作负荷的指标),可以通过更新启用具有 OTel 指标的 VM 见解时部署的 数据收集规则(DCR) 来扩展集合。
若要标识与 VM 关联的 DCR,请从 Azure 门户中的“监视”菜单打开数据收集规则。 选择“ 资源 ”选项卡并找到 VM。
单击 “数据收集规则 ”列中的数字,列出与 VM 关联的 DCR。 OTel DCR 将以格式 MSVMOtel-<region>-<name>命名。
有关如何修改 DCR 的指导 ,请参阅 Azure Monitor 中的“创建数据收集规则”( DCR)。 默认配置如下所示。 将 “其他指标” 中列出的任何指标添加到 counterSpecifiers DCR 部分。
{
"properties": {
"dataSources": {
"performanceCountersOTel": [
{
"streams": [
"Microsoft-OtelPerfMetrics"
],
"samplingFrequencyInSeconds": 60,
"counterSpecifiers": [
"system.filesystem.usage",
"system.filesystem.utilization",
"system.disk.io",
"system.disk.operation_time",
"system.disk.operations",
"system.memory.usage",
"system.network.io",
"system.cpu.time",
"system.uptime",
"system.network.dropped",
"system.network.errors"
],
"name": "OtelDataSource"
}
]
},
"destinations": {
"monitoringAccounts": [
{
"accountResourceId": "/subscriptions/my-subscription/resourcegroups/my-resource-group/providers/microsoft.monitor/accounts/my-workspace",
"name": "MonitoringAccountDestination"
}
]
},
"dataFlows": [
{
"streams": [
"Microsoft-OtelPerfMetrics"
],
"destinations": [
"MonitoringAccountDestination"
]
}
]
}
}
Troubleshooting
图表卡在加载状态
如果 Azure Monitor 工作区的网络流量被阻止,则会出现此问题。 这通常与网络策略(如广告阻止软件)相关。 若要解决此问题,请禁用广告拦截或将 monitor.azure.com 流量加入允许列表并重新加载页面。
无法访问数据收集规则 (DCR)
如果用户无权查看 VM 的关联 DCR,或者 DCR 可能已被删除,则会发生此错误。 若要解决此问题,请使用工具栏中的 “监视设置” 按钮联系系统管理员或重新配置 OpenTelemetry 指标。
数据配置错误
当 Azure Monitor 工作区或 DCR 已修改或删除时,会发生此错误。 使用工具栏中的 “监视设置” 按钮重新配置 OpenTelemetry 指标。
访问被拒绝
当用户的门户令牌过期或无权查看关联的 Azure Monitor 工作区时,会发生此错误。 这通常是通过刷新浏览器会话或联系系统管理员请求访问权限来解决的。 用户需要获取监视阅读权限,并且系统管理员应在 Azure Monitor 工作区上启用以资源为中心的标志。
发生未知错误
如果此错误消息仍然存在,请联系支持人员以开启工单。
指标参考
下表列出了 VM 见解 OpenTelemetry 收集的指标。
默认指标
下表中的指标默认收集,无需额外付费。
| 指标名称 | Description |
|---|---|
| 系统运行时间 | 自上次重新启动以来的时间(以秒为单位) |
| system.cpu.time | 总 CPU 时间(用户 + 系统 + 空闲),以秒为单位 |
| 系统内存使用情况 | 正在使用的内存(字节) |
| system.network.io | 传输/接收的字节数 |
| system.network.dropped | 丢弃的数据包数 |
| 系统.网络.错误 | 网络错误 |
| system.disk.io | 磁盘 I/O (读取/写入的字节数) |
| 系统.磁盘.操作 | 磁盘操作(读/写次数) |
| system.filesystem.usage | 文件系统使用情况(以字节为单位) |
| 系统.磁盘.操作时间 | 平均磁盘操作时间 |
其他指标
可以通过修改 VM 的 DCR 来收集下表中的指标,如 自定义指标集合中所述。 收集这些指标需要额外的成本。
| 指标名称 | Description |
|---|---|
| 系统.cpu.利用率 | CPU 使用率 % |
| system.cpu.logical.count | 逻辑处理器数 |
| system.cpu.physical.count | 物理 CPU 数 |
| 系统.中央处理器.频率 | CPU 频率 |
| system.cpu.load_average.1m | 系统负载平均值 (1 分钟) |
| 系统CPU负载平均值.5分钟 | 系统负载平均值 (5 分钟) |
| 系统.CPU.负载平均值.15分钟 | 系统负载平均值 (15 分钟) |
| 系统内存利用率 | 使用的 % 内存 |
| system.memory.limit | 总内存限制 |
| system.memory.页面大小 | 页大小(字节) |
| system.linux.memory.available | 可用内存 |
| system.linux.memory.dirty (系统.Linux.内存.dirty) | 脏内存页 |
| 系统分页错误 | 页面错误 |
| system.paging.operations | 分页操作(读取/写入) |
| system.paging.usage | 分页/交换使用情况(字节) |
| 系统分页利用率 | 使用的分页/交换百分比 |
| system.disk.io_time | 执行 I/O 所用的时间 |
| system.disk.merged | 合并操作的数量 |
| system.disk.待处理操作 (system.disk.pending_operations) | 挂起的 I/O 操作数 |
| system.disk.weighted_io_time | 加权 I/O 时间(考虑队列深度) |
| 系统文件系统利用率 (system.filesystem.utilization) | 文件系统使用情况 % |
| system.filesystem.inodes.usage | Inodes 使用情况 |
| system.network.packets | 已传输/接收的数据包 |
| 系统.网络.连接 | 活动网络连接 |
| system.network.conntrack.count | 当前 conntrack 表条目 |
| system.network.conntrack.max | conntrack 表大小上限 |
| 进程运行时间 (process.uptime) | 进程运行时间 |
| process.cpu.time | 进程消耗的 CPU 时间 |
| process.cpu.utilization | 每个进程的 CPU 使用率 % |
| 进程.内存.使用 | 内存使用情况(RSS) |
| 进程.内存.虚拟 | 虚拟内存使用情况 |
| 进程内存利用率 | 内存 % 使用情况 |
| process.disk.io | 磁盘 I/O (每个进程字节数) |
| process.disk.operations | 每个进程的磁盘操作 |
| 进程分页错误 | 进程页错误 |
| process.open_file_descriptors | 打开文件描述符 |
| process.threads | 线程数 |
| process.handles | 正在使用的句柄数 (Windows) |
| 进程上下文切换 | 上下文切换 |
| process.signals_pending | 挂起的信号 |
| system.process.count | 进程总数 |
| system.process.created | 已创建的进程 |