你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
性能计数器提供对虚拟硬件组件、操作系统和工作负载性能的见解。 搭配使用数据收集规则 (DCR) 和性能计数器数据源,从 Windows 和 Linux 虚拟机收集计数器。
有关创建 DCR 的详细信息,请参阅 使用 Azure Monitor 从 VM 客户端收集数据。 本文提供了性能计数器数据源类型的其他详细信息。
已为 OpenTelemetry 性能计数器添加了新的数据源,支持 Azure Monitor 工作区作为目标。 在此处阅读有关使用此新数据源的好处的详细信息。
注释
若要直接使用 DCR 定义或使用 ARM 模板等其他方法进行部署,请参阅 Azure Monitor 中的数据收集规则(DCR)示例。
配置 OpenTelemetry 性能计数器数据源(预览版)
根据使用 Azure Monitor 从虚拟机客户端收集数据的过程创建 DCR。 在 DCR 的“收集和传递”选项卡上,从“数据源类型”下拉列表中选择“OpenTelemetry 性能计数器”。 从预定义的一组对象中进行选择,以收集其采样率。 采样率越低,收集值的频率就越高。
选择 “自定义 ”以更精细地选择 OpenTelemetry 性能计数器。
配置性能计数器数据源
根据使用 Azure Monitor 从虚拟机客户端收集数据的过程创建 DCR。 在 DCR 的“收集和传递”选项卡上,从“数据源类型”下拉列表中选择“性能计数器”。 从预定义的一组对象中进行选择,以收集其采样率。 采样率越低,收集值的频率就越高。
选择“自定义”来指定 XPath,收集在“基本”选择中不可用的任何性能计数器。 使用 \PerfObject(ParentInstance/ObjectInstance#InstanceIndex)\Counter 格式。
小窍门
如果计数器名称包含与符号 (&),则请将其替换为 &。 例如,\Memory\Free & Zero Page List Bytes。
警告
在手动定义与 Windows 和 Linux 计算机关联的 DCR 计数器时要小心,因为某些 Windows 和 Linux 样式计数器名称可以解析为相同的指标并导致重复收集。 例如,在同一 DCR 中同时指定 \LogicalDisk(*)\Disk Transfers/sec (Windows) 和 Logical Disk(*)\Disk Transfers/sec (Linux) 将导致每个采样周期收集磁盘传输指标两次。
通过不在未指定 平台类型的 DCR 中收集性能计数器,可以避免此行为。 确保 Windows 计数器仅包含在与 Windows 计算机关联的 DCR 中,并且 Linux 计数器仅包含在与 Linux 计算机关联的 DCR 中。
注释
Microsoft.HybridCompute(已启用 Azure Arc 的服务器)资源当前无法在 指标资源管理器中查看,但可以通过指标 REST API(指标命名空间 - 列表、指标定义 - 列表和指标 - 列表)获取其指标数据。
添加目标
OpenTelemetry 性能计数器可以发送到 Azure Monitor 工作区,可通过 PromQl 查询它。 这是所有用户的建议数据目标,因为 Container Insights、Application Insights 和 VM Insights 都移动到使用 Azure Monitor 工作区作为指标的源,而不是 Log Analytics 工作区。
性能计数器仍可发送到 Log Analytics 工作区,在 Perf 表中存储和/或在 Azure Monitor Metrics(预览)中可用,并可在 指标资源管理器中使用。 添加 Azure Monitor 日志 类型的目标并选择 Log Analytics 工作区。 虽然可以添加多个工作区,但请注意,这会向每个工作区发送重复的数据,这将导致额外的成本。 对于 Azure Monitor 指标(预览版),不需要进一步的详细信息,因为这存储在受监视资源的订阅级别。
验证数据收集
若要验证是否正在 Azure Monitor 工作区中收集 OpenTelemetry 性能计数器,可以首先将查询范围限定为由数据收集规则 (DCR) 选择的 Azure Monitor 工作区 (AMW) 目标,并检查是否有任何 System. 指标按预期流动。
如果 AMW 已设置为 资源上下文访问模式,则还可以通过在门户中导航到 VM 指标边栏选项卡并选择“使用编辑器添加”下拉列表或选择“在编辑器中查看 AMW 指标”下拉列表,在指标命名空间下导航到 VM 本身时,验证相同的查询是否按预期工作。
这两个入口点都应生成一个 PromQl 编辑器,其查询范围现在限定为 VM 资源,同一查询将像以前一样工作,但无需筛选 VM microsoft.resourceid 维度。
若要验证 Log Analytics 工作区中是否正在收集遗留性能计数器数据源,请检查 Perf 表中的记录。 在虚拟机或 Azure 门户中的 Log Analytics 工作区中,选择 “日志 ”,然后单击“ 表 ”按钮。 在“虚拟机”类别下,单击 Perf 旁边的“运行”。
若要验证旧性能计数器数据源是否正在 Azure Monitor 指标中收集,请从 Azure 门户中的虚拟机中选择 “指标 ”。 为命名空间选择 虚拟机来宾 (Windows)或 azure.vm.linux.guestmetrics ,然后选择要添加到视图的指标。
性能计数器
适用于 Windows 和 Linux 虚拟机的 Azure Monitor 代理可收集以下性能计数器。 创建或更新数据收集规则时,可以更改采样频率。
| OTel 性能计数器 | 类型 | 单位 | 集合体 | 单调 | 尺寸 | Description |
|---|---|---|---|---|---|---|
| 系统.cpu.利用率 | 仪表 | 1 | N/A | 假 |
cpu:从 0 开始的逻辑 CPU 编号(值:任何 Str) 状态:按类型细分 CPU 使用率(值:idle、interrupt、nice、softirq、steal、system、user、wait) |
每个逻辑 CPU 自上次测量以来的 system.cpu.time 差值,再除以经过的时间 (0-1)。 |
| system.cpu.time | 总和 | s | 累积 | 正确 |
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} | N/A | 假 | (无) | 平均 CPU 负载超过 5 分钟。 |
| 系统.cpu.负载平均.1m | 仪表 | {thread} | N/A | 假 | (无) | 平均 CPU 负载超过 1 分钟。 |
| 系统.CPU.负载平均值.15分钟 | 仪表 | {thread} | N/A | 假 | (无) | 平均 CPU 负载超过 15 分钟。 |
| 系统.中央处理器.频率 | 仪表 | 赫兹 | N/A | 假 | (无) | CPU核心当前频率为Hz。 |
| 进程运行时间 (process.uptime) | 仪表 | s | N/A | 假 | (无) | 进程运行的时间。 |
| process.threads | 总和 | {线程} | 累积 | 假 | (无) | 进程的线程数量。 |
| process.signals_pending | 总和 | {信号} | 累积 | 假 | (无) | 进程的挂起信号数(仅限 Linux)。 |
| 进程分页错误 | 总和 | 故障 | 累积 | 正确 | 类型:错误类型(值:主要、次要) | 进程产生的页错误数(Linux 限制)。 |
| 进程.open_file_descriptors | 总和 | {count} | 累积 | 假 | (无) | 进程正在使用的文件描述符数。 |
| 进程.内存.虚拟 | 总和 | 通过 | 累积 | 假 | (无) | 虚拟内存大小。 |
| 进程内存利用率 | 仪表 | 1 | N/A | 假 | (无) | 进程使用的总物理内存百分比。 |
| 进程.内存.使用 | 总和 | 通过 | 累积 | 假 | (无) | 正在使用的物理内存量。 |
| system.disk.weighted_io_time | 总和 | s | 累积 | 假 | 设备:磁盘的名称(值:任何 Str) | 磁盘激活后所消耗的时间乘以队列长度。 |
| system.disk.待处理操作 (system.disk.pending_operations) | 总和 | {操作} | 累积 | 假 | 设备:磁盘的名称(值:任何 Str) | 挂起的I/O操作的队列大小。 |
| 系统.磁盘.操作 | 总和 | {操作} | 累积 | 正确 |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
磁盘操作计数。 |
| 系统.磁盘.操作时间 | 总和 | s | 累积 | 正确 |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
在磁盘操作中花费的时间。 |
| system.disk.merged | 总和 | {操作} | 累积 | 正确 |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
被合并为单个物理操作的磁盘读/写。 |
| system.disk.io_time | 总和 | s | 累积 | 正确 | 设备:磁盘的名称(值:任何 Str) | 磁盘处于激活状态的时间。 |
| system.disk.io | 总和 | 通过 | 累积 | 正确 |
设备:磁盘的名称(值:任何 Str) 方向:流方向(值:读取、写入) |
传输的磁盘字节数。 |
| process.handles | 总和 | {count} | 累积 | 假 | (无) | 打开的句柄数量(仅限 Windows)。 |
| 进程.磁盘.操作 | 总和 | {操作} | 累积 | 正确 | 方向:流方向(值:读取、写入) | 进程执行的磁盘操作。 |
| process.disk.io | 总和 | 通过 | 累积 | 正确 | 方向:流方向(值:读取、写入) | 传输的磁盘字节数。 |
| 进程.cpu.利用率 | 仪表 | 1 | N/A | 假 | 状态:CPU 使用率细分(值:系统、用户、等待) | 处理自上次抓取以来使用的总 CPU 时间百分比 (0-1)。 |
| 进程.中央处理器.时间 | 总和 | s | 累积 | 正确 | 状态:CPU 使用率细分(值:系统、用户、等待) | 按状态细分的总 CPU 秒数。 |
| 进程上下文切换 | 总和 | {count} | 累积 | 正确 | 类型:上下文开关的类型(值:任何 Str) | 进程被上下文切换的次数(仅限 Linux)。 |
| 系统内存利用率 | 仪表 | 1 | N/A | 假 | 状态:内存使用情况细分(值:缓冲、缓存、非活动、可用、slab_reclaimable、slab_unreclaimable、已用) | 使用的内存字节百分比。 |
| 系统内存使用情况 | 总和 | 通过 | 累积 | 假 | 状态:内存使用情况细分(值:缓冲、缓存、非活动、可用、slab_reclaimable、slab_unreclaimable、已用) | 正在使用的内存字节数。 |
| system.memory.页面大小 | 仪表 | 通过 | N/A | 假 | (无) | 系统配置的页大小。 |
| system.memory.limit | 总和 | 通过 | 累积 | 假 | (无) | 可用内存的总字节数。 |
| system.linux.memory.dirty (系统.Linux.内存.dirty) | 总和 | 通过 | 累积 | 假 | (无) | 内存中的脏数据量(/proc/meminfo)。 |
| system.linux.memory.available | 总和 | 通过 | 累积 | 假 | (无) | 估计可用内存(仅限 Linux)。 |
| system.network.packets | 总和 | {packets} | 累积 | 正确 |
设备:网络接口名称(值:任何 Str) 方向:流方向(值:接收、传输) |
传输的数据包数。 |
| system.network.io | 总和 | 通过 | 累积 | 正确 | (无) | 传输和接收的字节数。 |
| 系统.网络.错误 | 总和 | {errors} | 累积 | 假 |
设备:网络接口名称(值:任何 Str) 方向:流方向(值:接收、传输) |
遇到的错误数。 |
| system.network.dropped | 总和 | {packets} | 累积 | 正确 |
设备:网络接口名称(值:任何 Str) 方向:流方向(值:接收、传输) |
丢弃的数据包数。 |
| system.network.conntrack.max | 总和 | {entries} | 累积 | 假 | (无) | conntrack 表中条目数量的限制。 |
| system.network.conntrack.count | 总和 | {entries} | 累积 | 假 | (无) | conntrack 表中的条目计数。 |
| 系统.网络.连接 | 总和 | {连接} | 累积 | 假 |
协议:网络协议(值:tcp) 状态:连接状态(值:任何 Str) |
连接数。 |
| 系统运行时间 | 仪表 | s | N/A | 假 | (无) | 系统运行时间。 |
| system.processes.created | 总和 | {进程} | 累积 | 正确 | (无) | 已创建的进程总数。 |
| system.processes.count | 总和 | {进程} | 累积 | 假 | 状态:进程状态(值:已阻止、守护程序、分离、空闲、锁定、孤立、分页、正在运行、睡眠、停止、系统、未知、僵尸) | 每个状态中的进程总数。 |
| 系统分页利用率 | 仪表 | 1 | N/A | 假 |
device:页面文件名称(值:任意字符串) state:分页使用类型(值:缓存,空闲,已使用) |
交换 (Unix) 或页面文件 (Windows) 利用率。 |
| 系统.分页.使用情况 | 总和 | 通过 | 累积 | 假 |
device:页面文件名称(值:任意字符串) state:分页使用类型(值:缓存,空闲,已使用) |
交换(Unix)或页面文件(Windows)使用情况。 |
| 系统.分页.操作 | 总和 | {操作} | 累积 | 正确 |
方向:页面流(值:page_in,page_out) 类型:故障类型(值:主要,次要) |
分页操作。 |
| 系统分页错误 | 总和 | 故障 | (无) | 正确 | 类型:故障类型(值:主要,次要) | 页错误数。 |
| 系统文件系统利用率 (system.filesystem.utilization) | 仪表 | 1 | N/A | 假 |
设备:文件系统标识符 mode:挂载模式(值:ro, rw) mountpoint:路径 类型:文件系统类型(取值:ext4,tmpfs,等) |
文件系统字节使用比例。 |
| system.filesystem.usage | 总和 | 通过 | 累积 | 假 |
设备:文件系统标识符 模式:装载模式 mountpoint:路径 类型:文件系统类型 state:使用类型(值:免费,保留,已用) |
使用的文件系统字节数。 |
| system.filesystem.inodes.usage | 总和 | {inodes} | 累积 | 假 |
设备:文件系统标识符 模式:装载模式 mountpoint:路径 类型:文件系统类型 state:使用类型(值:免费,保留,已用) |
使用的文件系统 inode。 |
后续步骤
- 详细了解 OpenTelemetry 性能计数器
- 详细了解 Azure Monitor 代理程序。
- 详细了解数据收集规则。