使用 Log Analytics 代理收集 Windows 和 Linux 性能数据源

Windows 和 Linux 中的性能计数器提供有关硬件组件、作系统和应用程序性能的见解。 Azure Monitor 可以频繁收集 Log Analytics 代理的性能计数器,以便进行近实时分析。 Azure Monitor 还可以聚合性能数据,以便进行长期分析和报告。

重要

2024 年 8 月 31 日起,旧版 Log Analytics 代理已弃用。 Microsoft将不再为 Log Analytics 代理提供任何支持。 如果使用 Log Analytics 代理将数据引入 Azure Monitor,请立即迁移到 Azure Monitor 代理

显示性能计数器的屏幕截图。

配置性能计数器

从 Log Analytics 工作区的 “旧代理管理”菜单中 对性能计数器进行配置。

首次为新工作区配置 Windows 或 Linux 性能计数器时,可以选择快速创建多个常见计数器。 它们被列出,每个项目前面都有一个复选框。 确保最初要创建的任何计数器都处于选中状态,然后选择“ 添加所选性能计数器”。

对于 Windows 性能计数器,可以选择每个性能计数器的特定实例。 对于 Linux 性能计数器,选择的每个计数器的实例适用于父计数器的所有子计数器。 下表显示了可用于 Windows 和 Linux 性能计数器的常见实例。

实例名称 Description
_总 所有实例总数
* 所有实例
(/|/var) 匹配名为 /或 /var 的实例

Windows 性能计数器

显示配置 Windows 性能计数器的屏幕截图。

按照此过程添加新的 Windows 性能计数器进行收集。 不支持 V2 Windows 性能计数器。

  1. 选择 “添加性能计数器”。

  2. 在格式 对象(instance)\counter 的文本框中输入计数器的名称。 开始键入时,将显示一个匹配的常见计数器列表。 可以从列表中选择一个计数器,或者输入一个您自己的计数器。 还可以通过指定 对象\counter 返回特定计数器的所有实例。

    从命名实例收集 SQL Server 性能计数器时,所有命名实例计数器都以 MSSQL$ 开头,后跟实例的名称。 例如,若要从名为 SQL 实例 INST2 的数据库性能对象中收集所有数据库的日志缓存命中率计数器,请指定 MSSQL$INST2:Databases(*)\Log Cache Hit Ratio

  3. 添加计数器时,它将使用默认值 10 秒作为其 采样间隔。 如果想要减少收集的性能数据的存储要求,请将此默认值更改为最高 1,800 秒(30 分钟)。

  4. 添加完计数器后,选择屏幕顶部 的“应用 ”以保存配置。

Linux 性能计数器

显示配置 Linux 性能计数器的屏幕截图。

按照此过程添加新的 Linux 性能计数器进行收集。

  1. 选择 “添加性能计数器”。
  2. 在格式 对象(instance)\counter 的文本框中输入计数器的名称。 开始键入时,将显示一个匹配的常见计数器列表。 可以从列表中选择计数器,也可以输入自定义计数器。
  3. 对象的所有计数器都使用相同的 采样间隔。 默认值为 10 秒。 如果想要减少收集的性能数据的存储要求,请将此默认值更改为最高 1,800 秒(30 分钟)。
  4. 添加完计数器后,选择屏幕顶部 的“应用 ”以保存配置。

在配置文件中配置 Linux 性能计数器

可以选择在 Linux 代理上编辑配置文件,而不是使用 Azure 门户配置 Linux 性能计数器。 要收集的性能指标由 /etc/opt/microsoft/omsagent/<workspace id>/conf/omsagent.conf 中的配置控制。

要收集的每个对象或类别的性能指标都应在配置文件中定义为单个 <source> 元素。 语法遵循以下模式:

<source>
    type oms_omi
    object_name "Processor"
    instance_regex ".*"
    counter_name_regex ".*"
    interval 30s
</source>

下表描述了此元素中的参数。

参数 Description
object_name 集合的对象名称。
instance_regex 定义要收集的实例的 正则表达式 。 该值 .* 指定所有实例。 若要仅收集_Total实例的处理器指标,可以指定 _Total。 若只收集 crond 或 sshd 实例的进程指标,可以指定 (crond\|sshd)
计数器_名称_正则表达式 一个 正则表达式 ,用于定义要收集的计数器(对象)。 若要收集对象的所有计数器,请指定 .*。 例如,若要仅为内存对象收集交换空间计数器,可以指定 .+Swap.+
间隔 采集对象计数器的频率。

下表列出了可以在配置文件中指定的对象和计数器。 某些应用程序可以使用更多计数器。 有关详细信息,请参阅 Azure Monitor 中为 Linux 应用程序收集性能计数器

对象名称 计数器名称
逻辑磁盘 % 免费 Inodes
逻辑磁盘 % 可用空间
逻辑磁盘 已用索引节点百分比
逻辑磁盘 % 已用空间
逻辑磁盘 磁盘读取字节数/秒
逻辑磁盘 磁盘读取数/秒
逻辑磁盘 磁盘传输/秒
逻辑磁盘 磁盘写入字节数/秒
逻辑磁盘 每秒磁盘写入次数
逻辑磁盘 免费兆字节
逻辑磁盘 逻辑磁盘字节数/秒
内存 % 可用内存
内存 % 可用交换空间
内存 % 已用内存
内存 已用交换空间 %
内存 可用兆字节内存
内存 可用 MB 交换内存
内存 每秒页面读取
内存 每秒页面写入次数
内存 每秒页数 (Pages/sec)
内存 已用交换空间(兆字节)
内存 已用内存 MBytes
网络 传输的总字节数
网络 接收的总字节数
网络 总字节数
网络 传输的数据包总数
网络 收到的数据包总数
网络 Rx 错误总数
网络 Tx 错误总数
网络 冲突总数
物理磁盘 Avg. Disk sec/Read
物理磁盘 平均每秒磁盘传输时间
物理磁盘 每写入操作的平均磁盘时间
物理磁盘 物理磁盘字节数/秒
流程 百分比特权时间
流程 用户时间百分比
流程 已用内存 kBytes
流程 虚拟共享内存
处理器 % DPC 时间
处理器 % 空闲时间
处理器 % 中断时间
处理器 % IO 等待时间
处理器 % 美好时光
处理器 % 特权时间
处理器 处理器时间百分比
处理器 % 用户占用时间
System 释放物理内存
System 分页文件中的可用空间
System 释放虚拟内存
System Processes
System 分页文件中存储的大小
System 运行时间
System 用户

以下配置是性能指标的默认值:

<source>
    type oms_omi
    object_name "Physical Disk"
    instance_regex ".*"
    counter_name_regex ".*"
    interval 5m
</source>

<source>
    type oms_omi
    object_name "Logical Disk"
    instance_regex ".*"
    counter_name_regex ".*"
    interval 5m
</source>

<source>
    type oms_omi
    object_name "Processor"
    instance_regex ".*"
    counter_name_regex ".*"
    interval 30s
</source>

<source>
    type oms_omi
    object_name "Memory"
    instance_regex ".*"
    counter_name_regex ".*"
    interval 30s
</source>

数据收集

Azure Monitor 在安装了该计数器的所有代理上按指定示例间隔收集所有指定的性能计数器。 数据没有被聚合。 原始数据在您的 Log Analytics 工作区指定的持续时间内可用,并可以在所有日志查询视图中使用。

性能记录属性

性能记录具有一种类型的 Perf ,并具有下表中列出的属性。

资产 Description
Computer 从中收集事件的计算机。
CounterName 性能计数器的名称。
CounterPath 计数器的完整路径,格式为 \\<Computer>\object(instance)\counter。
CounterValue 计数器的数值。
实例名称 事件实例的名称。 如果没有实例,则为空。
对象名称 性能对象的名称。
SourceSystem 用于收集数据的代理类型:

OpsManager – Windows 代理,直接连接或 SCOM
Linux – 所有 Linux 代理
AzureStorage - Azure 诊断
TimeGenerated 对数据的采样日期和时间。

尺寸估算

粗略估算,以10秒间隔收集一个特定计数器,每个实例每天大约会产生1 MB的数据。 可以使用以下公式估算特定计数器的存储要求:

1 MB x (计数器数) x (代理数) x (实例数)

使用性能记录的日志查询

下表提供了检索性能记录的日志查询的不同示例。

Query Description
性能 所有性能数据
性能 |其中计算机 == “MyComputer” 来自特定计算机的所有性能数据
性能 |where CounterName == “Current Disk Queue Length” 特定计数器的所有性能数据
性能 |where ObjectName == “Processor” and CounterName == “% Processor Time” and InstanceName == “_Total” |summarize AVGCPU = avg(CounterValue) by Computer 所有计算机的平均 CPU 使用率
性能 |where CounterName == “% Processor Time” |summarize AggregatedValue = max(CounterValue) by Computer 所有计算机的最大 CPU 使用率
性能数据 | where ObjectName == “LogicalDisk” and CounterName == “Current Disk Queue Length” and Computer == “MyComputerName” | summarize AggregatedValue = avg(CounterValue) by InstanceName 给定计算机的所有实例的平均当前磁盘队列长度
Perf | where CounterName == "Disk Transfers/sec" | summarize AggregatedValue = percentile(CounterValue, 95) by Computer 所有计算机上的磁盘传输数/秒的第 95 百分位
性能 |where CounterName == “% Processor Time” and InstanceName == “_Total” |summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 1h), Computer 所有计算机的 CPU 使用率每小时平均值
性能 | 其中,Computer == “MyComputer” 和 CounterName startswith_cs "%" 和 InstanceName == "_Total" | summarize AggregatedValue = percentile(CounterValue, 70) by bin(TimeGenerated, 1h), CounterName 特定计算机的每小时百分比计数器的第 70 百分位
性能 | where CounterName == “% Processor Time” and InstanceName == “_Total” and Computer == “MyComputer” | summarize [“min(CounterValue)”] = min(CounterValue), [“avg(CounterValue)”] = avg(CounterValue), [“percentile75(CounterValue)”] = percentile(CounterValue, 75), [“max(CounterValue)”] = max(CounterValue) by bin(TimeGenerated, 1h), Computer 特定计算机的每小时平均值、最小值、最大值和 75% 的 CPU 使用率
Perf | where ObjectName == “MSSQL$INST2:Databases” and InstanceName == “master” 来自名为 SQL Server 实例 INST2 的主数据库的数据库性能对象的所有性能数据

后续步骤

  • 从 Linux 应用程序(包括 MySQL 和 Apache HTTP Server)收集性能计数器。
  • 了解 日志查询 ,以分析从数据源和解决方案收集的数据。
  • 将数据导出到 Power BI ,以便进行更多可视化和分析。