本文列出了Azure Monitor代理从 Windows 和 Linux 虚拟机收集的性能计数器,以及自动添加到这些指标的 OpenTelemetry 资源属性。 在配置数据收集规则(DCR)或浏览Azure Monitor指标资源管理器中的指标时,请使用它作为参考。
性能计数器
Azure Monitor代理通过两个路径收集Windows和 Linux 虚拟机的性能计数器:
- OpenTelemetry 计数器 (建议用于新部署)。 按命名空间分组:CPU、进程、磁盘、内存、网络、系统、分页和文件系统。
- 旧版Windows和 Linux 性能计数器(适用于使用经典计数器模型的 VM Insights 或 DCR 配置)。 在本部分末尾按操作系统分组。
默认采样频率为 60 秒。 创建或更新数据收集规则时,可以更改此频率。
OpenTelemetry CPU 计数器
CPU 计数器涵盖 system.cpu.utilization 和 system.cpu.time(按 CPU 状态和逻辑 CPU 细分)、物理和逻辑 CPU 数量(system.cpu.physical.count、system.cpu.logical.count)、1 分钟、5 分钟和 15 分钟负载平均值(system.cpu.load_average.1m、system.cpu.load_average.5m、system.cpu.load_average.15m),以及当前 CPU 频率(system.cpu.frequency)。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| 系统.cpu.利用率 | 仪表 | 1 | 不适用 | 假 |
cpu:从 0 开始的逻辑 CPU 编号(值:任何 Str) 状态:按类型细分 CPU 使用率(值:idle、interrupt、nice、softirq、steal、system、user、wait) |
每个逻辑 CPU 的 system.cpu.time 自上次测量以来的变化,用经过的时间除以(0-1)。 |
| system.cpu.time | 总和 | s | 累积 | TRUE |
cpu:从 0 开始的逻辑 CPU 编号(值:任何 Str) 状态:按类型细分 CPU 使用率(值:idle、interrupt、nice、softirq、steal、system、user、wait) |
每个模式上花费的每个逻辑 CPU 的总秒数。 |
| 系统 (system).CPU.物理 (physical).总数 (count) | 总和 | {中央处理器} | 累积 | 假 | (无) | 可用物理 CPU 数。 |
| 系统.处理器.逻辑.数量 | 总和 | {中央处理器} | 累积 | 假 | cpu:从 0 开始的逻辑 CPU 编号(值:任何 Str) | 可用逻辑 CPU 数。 |
| 系统CPU负载平均值.5分钟 | 仪表 | {thread} | 不适用 | 假 | (无) | 平均 CPU 负载超过 5 分钟。 |
| 系统.cpu.负载平均.1m | 仪表 | {thread} | 不适用 | 假 | (无) | 平均 CPU 负载超过 1 分钟。 |
| 系统.CPU.负载平均值.15分钟 | 仪表 | {thread} | 不适用 | 假 | (无) | 平均 CPU 负载超过 15 分钟。 |
| 系统.中央处理器.频率 | 仪表 | 赫兹 | 不适用 | 假 | (无) | CPU核心当前频率为Hz。 |
OpenTelemetry 进程计数器 - 运行时、线程和故障
各个进程的运行时和生命周期指标:运行时间()、线程计数(process.uptimeprocess.threads)、挂起信号计数(process.signals_pending仅限 Linux)、分页错误计数(process.paging.faults仅限 Linux)、打开文件描述符计数()、打开句柄计数(process.open_file_descriptorsprocess.handles、仅Windows)和上下文切换计数(process.context_switches仅限 Linux)。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| 进程运行时间 (process.uptime) | 仪表 | s | 不适用 | 假 | (无) | 进程运行的时间。 |
| process.threads | 总和 | {线程} | 累积 | 假 | (无) | 进程的线程数量。 |
| process.signals_pending | 总和 | {信号} | 累积 | 假 | (无) | 进程的挂起信号数(仅限 Linux)。 |
| 进程分页错误 | 总和 | 故障 | 累积 | TRUE | 类型:错误类型(值:主要、次要) | 进程产生的页错误数(Linux 限制)。 |
| 进程.open_file_descriptors | 总和 | {count} | 累积 | 假 | (无) | 进程正在使用的文件描述符数。 |
| process.handles | 总和 | {count} | 累积 | 假 | (无) | 打开的句柄数量(仅限 Windows)。 |
| 进程上下文切换 | 总和 | {count} | 累积 | TRUE | 类型:上下文开关的类型(值:任何 Str) | 进程被上下文切换的次数(仅限 Linux)。 |
OpenTelemetry 进程计数器 - CPU、内存和 I/O
单个进程的资源使用情况指标:虚拟内存大小(process.memory.virtual)、所用物理内存()、使用process.memory.utilization的物理内存百分比(process.memory.usage)、磁盘操作计数和字节吞吐量(、process.disk.operationsCPU 时间百分比(process.disk.ioprocess.cpu.utilization)和按状态细分的总 CPU 秒数(process.cpu.time)。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| 进程.内存.虚拟 | 总和 | 通过 | 累积 | 假 | (无) | 虚拟内存大小。 |
| 进程内存利用率 | 仪表 | 1 | 不适用 | 假 | (无) | 进程使用的总物理内存百分比。 |
| 进程.内存.使用 | 总和 | 通过 | 累积 | 假 | (无) | 正在使用的物理内存量。 |
| 进程.磁盘.操作 | 总和 | {操作} | 累积 | TRUE | 方向:流方向(值:读取、写入) | 进程执行的磁盘操作。 |
| process.disk.io | 总和 | 通过 | 累积 | TRUE | 方向:流方向(值:读取、写入) | 传输的磁盘字节数。 |
| 进程.cpu.利用率 | 仪表 | 1 | 不适用 | 假 | 状态:CPU 使用率细分(值:系统、用户、等待) | 自上次采集以来,进程使用的总 CPU 使用时间的百分比(0-1)。 |
| 进程.中央处理器.时间 | 总和 | s | 累积 | TRUE | 状态:CPU 使用率细分(值:系统、用户、等待) | 按状态细分的总 CPU 秒数。 |
OpenTelemetry 磁盘计数器
每个设备的磁盘活动指标:传输的总字节数(system.disk.io)、操作次数和耗时(system.disk.operations、system.disk.operation_time)、挂起队列深度(system.disk.pending_operations)、合并的操作次数(system.disk.merged)、总激活时间(system.disk.io_time)以及队列长度加权激活时间(system.disk.weighted_io_time)。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| system.disk.weighted_io_time | 总和 | s | 累积 | 假 | 设备:磁盘的名称(值:任何 Str) | 磁盘激活后所消耗的时间乘以队列长度。 |
| system.disk.待处理操作 (system.disk.pending_operations) | 总和 | {操作} | 累积 | 假 | 设备:磁盘的名称(值:任何 Str) | 挂起的I/O操作的队列大小。 |
| 系统.磁盘.操作 | 总和 | {操作} | 累积 | TRUE |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
磁盘操作计数。 |
| 系统.磁盘.操作时间 | 总和 | s | 累积 | TRUE |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
在磁盘操作中花费的时间。 |
| system.disk.merged | 总和 | {操作} | 累积 | TRUE |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
被合并为单个物理操作的磁盘读/写。 |
| system.disk.io_time | 总和 | s | 累积 | TRUE | 设备:磁盘的名称(值:任何 Str) | 磁盘处于激活状态的时间。 |
| system.disk.io | 总和 | 通过 | 累积 | TRUE |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
传输的磁盘字节数。 |
OpenTelemetry 内存计数器
内存使用和配置指标:按内存状态(system.memory.usage、system.memory.utilization)、配置的页大小(system.memory.page_size)、总可用内存(system.memory.limit)以及 Linux 特有的脏内存和可用内存估计(system.linux.memory.dirty、system.linux.memory.available)细分的字节和百分比利用率。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| 系统内存利用率 | 仪表 | 1 | 不适用 | 假 | 状态:内存使用情况细分(值:缓冲、缓存、非活动、可用、slab_reclaimable、slab_unreclaimable、已用) | 使用的内存字节百分比。 |
| 系统内存使用情况 | 总和 | 通过 | 累积 | 假 | 状态:内存使用情况细分(值:缓冲、缓存、非活动、可用、slab_reclaimable、slab_unreclaimable、已用) | 正在使用的内存字节数。 |
| system.memory.页面大小 | 仪表 | 通过 | 不适用 | 假 | (无) | 系统配置的页大小。 |
| system.memory.limit | 总和 | 通过 | 累积 | 假 | (无) | 可用内存的总字节数。 |
| system.linux.memory.dirty (系统.Linux.内存.dirty) | 总和 | 通过 | 累积 | 假 | (无) | 内存中的脏数据量(/proc/meminfo)。 |
| system.linux.memory.available | 总和 | 通过 | 累积 | 假 | (无) | 估计可用内存(仅限 Linux)。 |
OpenTelemetry 网络计数器
每个接口的网络活动指标:数据包计数(system.network.packets)、字节吞吐量(system.network.io)、错误计数(system.network.errors)、丢弃的数据包计数(system.network.dropped)、conntrack 表入口计数和限制(system.network.conntrack.count,system.network.conntrack.max以及按协议和状态()细分的打开连接计数。system.network.connections
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| system.network.packets | 总和 | {packets} | 累积 | TRUE |
设备:网络接口名称(值:任何 Str) 方向:流方向(值:接收、传输) |
传输的数据包数。 |
| system.network.io | 总和 | 通过 | 累积 | TRUE | (无) | 传输和接收的字节数。 |
| 系统.网络.错误 | 总和 | {errors} | 累积 | 假 |
设备:网络接口名称(值:任何 Str) 方向:流方向(值:接收、传输) |
遇到的错误数。 |
| system.network.dropped | 总和 | {packets} | 累积 | TRUE |
设备:网络接口名称(值:任何 Str) 方向:流方向(值:接收、传输) |
丢弃的数据包数。 |
| system.network.conntrack.max | 总和 | {entries} | 累积 | 假 | (无) | conntrack 表中条目数量的限制。 |
| system.network.conntrack.count | 总和 | {entries} | 累积 | 假 | (无) | conntrack 表中的条目计数。 |
| 系统.网络.连接 | 总和 | {连接} | 累积 | 假 |
协议:网络协议(值:tcp) 状态:连接状态(值:任何 Str) |
连接数。 |
OpenTelemetry 系统计数器
系统范围的指标:总运行时间(system.uptime)、创建的总进程数(system.processes.created)和按状态system.processes.count(细分的当前进程计数)。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| 系统运行时间 | 仪表 | s | 不适用 | 假 | (无) | 系统运行时间。 |
| system.processes.created | 总和 | {进程} | 累积 | TRUE | (无) | 已创建的进程总数。 |
| system.processes.count | 总和 | {进程} | 累积 | 假 | 状态:进程状态(值:已阻止、守护程序、分离、空闲、锁定、孤立、分页、正在运行、睡眠、停止、系统、未知、僵尸) | 每个状态中的进程总数。 |
OpenTelemetry 分页计数器
交换(Unix)或页面文件(Windows)指标包括字节使用量和利用率百分比(system.paging.usage、system.paging.utilization)、按方向和故障类型细分的分页操作计数(system.paging.operations),以及总页面故障计数(system.paging.faults)。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| 系统分页利用率 | 仪表 | 1 | 不适用 | 假 |
device:页面文件名称(值:任意字符串) state:分页使用类型(值:缓存,空闲,已使用) |
交换 (Unix) 或页面文件 (Windows) 利用率。 |
| 系统.分页.使用情况 | 总和 | 通过 | 累积 | 假 |
device:页面文件名称(值:任意字符串) state:分页使用类型(值:缓存,空闲,已使用) |
交换(Unix)或页面文件(Windows)使用情况。 |
| 系统.分页.操作 | 总和 | {操作} | 累积 | TRUE |
方向:页面流(值:page_in,page_out) 类型:故障类型(值:主要,次要) |
分页操作。 |
| 系统分页错误 | 总和 | 故障 | (无) | TRUE | 类型:故障类型(值:主要,次要) | 页错误数。 |
OpenTelemetry 文件系统计数器
每个已挂载设备的文件系统使用情况包括:已用字节所占比例(system.filesystem.utilization)、按使用状态细分的已用总字节数(system.filesystem.usage),以及按使用状态细分的 inode 数量(system.filesystem.inodes.usage)。
| 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | 说明 |
|---|---|---|---|---|---|---|
| 系统文件系统利用率 (system.filesystem.utilization) | 仪表 | 1 | 不适用 | 假 |
设备:文件系统标识符 mode:挂载模式(值:ro, rw) mountpoint:路径 类型:文件系统类型(取值:ext4,tmpfs,等) |
文件系统字节使用比例。 |
| system.filesystem.usage | 总和 | 通过 | 累积 | 假 |
设备:文件系统标识符 模式:装载模式 mountpoint:路径 类型:文件系统类型 state:使用类型(值:免费,保留,已用) |
使用的文件系统字节数。 |
| system.filesystem.inodes.usage | 总和 | {inodes} | 累积 | 假 |
设备:文件系统标识符 模式:装载模式 mountpoint:路径 类型:文件系统类型 state:使用类型(值:免费,保留,已用) |
使用的文件系统 inode。 |
旧版Windows和 Linux 性能计数器
对于使用经典Windows和 Linux 性能计数器模型而不是 OpenTelemetry 的 VM Insights 或 DCR 配置,请选择操作系统选项卡。
由 Azure Monitor 代理收集并按类别分组的 Windows 性能计数器。
| 性能计数器 | 类别 |
|---|---|
| \处理器信息(_总计)\% 处理器时间 | CPU |
| \处理器信息(_总)\% 特权时间 | CPU |
| \处理器信息(_Total)\% 用户时间 | CPU |
| \处理器信息(_Total)\处理器频率 | CPU |
| \系统\进程 | CPU |
| \进程(_Total)\线程计数 | CPU |
| \进程(_总计)\句柄计数 | CPU |
| \系统\系统运行时间 | CPU |
| \System\上下文切换/秒 | CPU |
| \System\处理器队列长度 | CPU |
| \Memory\% 已提交字节的使用率 | Memory |
| \内存\可用字节 | Memory |
| \内存\提交字节 | Memory |
| \内存\缓存字节 (\Memory\Cache Bytes) | Memory |
| \Memory\Pool 分页字节数 | Memory |
| \内存\非分页池字节 | Memory |
| \内存\页面/秒 | Memory |
| \内存\页面错误次数/秒 | Memory |
| \Process(_Total)\Working Set | Memory |
| \Process(_Total)\工作集 - 私有 | Memory |
| \LogicalDisk(_Total)\% 磁盘时间 | Disk |
| \LogicalDisk(_Total)\% 磁盘读取时间 | Disk |
| \LogicalDisk(_Total)\% 磁盘写入时间 | Disk |
| \LogicalDisk(_Total)\% 空闲时间 | Disk |
| \LogicalDisk(_Total)\磁盘字节/秒 | Disk |
| \LogicalDisk(_Total)\磁盘读取字节数/秒 | Disk |
| \LogicalDisk(_Total)\磁盘写入字节数/秒 | Disk |
| \LogicalDisk(_Total)\磁盘传输次数/秒 | Disk |
| \LogicalDisk(_Total)\磁盘读取次数/秒 | Disk |
| \LogicalDisk(_Total)\磁盘写入次数/秒 | Disk |
| \LogicalDisk(_Total)\Avg.Disk sec/Transfer | Disk |
| \LogicalDisk(_Total)\Avg.Disk sec/Read | Disk |
| \LogicalDisk(_Total)\磁盘平均写入秒数 | Disk |
| \LogicalDisk(_Total)\平均磁盘队列长度 | Disk |
| \LogicalDisk(_Total)\平均磁盘读取队列长度 | Disk |
| \LogicalDisk(_Total)\Avg.Disk Write Queue Length | Disk |
| \LogicalDisk(_Total)\% 可用空间 | Disk |
| \LogicalDisk(_Total)\空闲兆字节 | Disk |
| \网络接口(*) \字节总数/秒 | Network |
| \网络接口(*) \字节发送/秒 | Network |
| \网络接口(*) \接收字节数/秒 | Network |
| \网络接口(*) \数据包/秒 | Network |
| \网络接口(*)\发送的数据包数/秒 | Network |
| \网络接口(*) \数据包接收/秒 | Network |
| \网络接口(*) \数据包输出错误 | Network |
| \网络接口(*) \接收数据包错误 | Network |
资源属性
OpenTelemetry 资源语义约定 仍在开发中。 Azure Monitor团队正积极与开源社区合作,为各种方案改进和标准化此命名约定。 分享你的反馈,以帮助持续改进你的体验。
使用 Azure Monitor 代理和数据收集规则收集 OpenTelemetry 指标并将其发送到Azure Monitor工作区时,解决方案会自动将以下云资源属性添加为维度以支持资源范围的查询:
- Microsoft.resourceid
- Microsoft.subscriptionid
- Microsoft.resourcegroupname
- Microsoft.resourcetype
- Microsoft.amwresourceid
OpenTelemetry 每个进程 指标 都有自己的一组特殊的 资源属性。 下表显示了Azure Monitor代理自动提升为维度的资源属性。
| 名称 | 说明 | 价值观 | 已启用 |
|---|---|---|---|
| 进程命令 | 用于启动进程(即命令名称)的命令。 在基于 Linux 的系统上,设置为第 proc/[pid]/cmdline0 个字符串。 在 Windows 上,将其设置为从 GetCommandLineW 中提取的第一个参数。 |
任何字符串 | 是 |
| process.executable.name | 可执行进程文件的名称。 在基于 Linux 的系统上,在 Name 中将其设置为 proc/[pid]/status。 在 Windows 上,将其设置为 GetProcessImageFileNameW 的基本名称。 |
任何字符串 | 是 |
| 过程负责人 | 拥有进程的用户的用户名。 | 任何字符串 | 是 |
| process.pid | 进程标识符(PID)。 | 任何整数 | 是 |
| process.cgroup | 与进程关联的 cgroup(仅限 Linux)。 | 任何字符串 | 假 |
| 进程.命令行 | 用于以单个字符串形式表示完整命令来启动进程的完整命令。 在 Windows 上,将其设置为 GetCommandLineW 的结果。 如果必须只是为了监视而组装此属性,请不要设置此属性。 改用 process.command_args。 |
任何字符串 | 假 |
| process.executable.path | 进程可执行文件的完整路径。 在基于 Linux 的系统上,将其设置为 proc/[pid]/exe 的目标。 在 Windows 上,将其设置为 GetProcessImageFileNameW 的结果。 |
任何字符串 | 假 |
| process.parent_pid | 父进程标识符(PPID)。 | 任何整数 | 假 |
该 process.command_line 属性可以包含具有数千个字符的极长字符串,使其不适合用作普通指标维度。 产品团队可能会根据提交为反馈的客户用户方案找到不同的方法来显示此属性。
后续步骤
使用来自各种服务的自定义指标: