使用 Log Analytics 代理程式收集 Windows 和 Linux 效能資料來源

Windows 和 Linux 的效能計數器可讓您深入了解硬體元件、作業系統及應用程式的效能。 Azure 監視器可以經常從 Log Analytics 代理程式收集效能計數器,以進行近乎即時的分析。 Azure 監視器也可以彙總效能資料,以進行長期分析和報告。

重要

舊版 Log Analytics 代理程式將於 2024 年 8 月被取代。 在此日期之後,Microsoft 將不再提供 Log Analytics 代理程式的任何支援。 在 2024 年 8 月之前移轉至 Azure 監視器代理程式,才能繼續擷取資料。

Screenshot that shows performance counters.

設定效能計數器

從 Log Analytics 工作區的舊版代理程式管理功能表設定效能計數器。

當您第一次為新的工作區設定 Windows 或 Linux 效能計數器時,系統會提供選項,讓您快速建立數個常用的計數器。 這些計數器旁邊皆會列出核取方塊。 確認已核取所有想一開始就建立的計數器,然後選取 [加入選取的效能計數器]

對於 Windows 效能計數器,您可以為每個效能計數器選擇特定執行個體。 對於 Linux 效能計數器,您選擇的每個計數器的執行個體會套用至父計數器的所有子計數器。 下表顯示可用於 Windows 和 Linux 效能計數器的常見執行個體。

執行個體名稱 描述
_Total 所有執行個體的總數
* 所有執行個體
(/|/var) 比對名為 / 或 /var 的執行個體

Windows 效能計數器

Screenshot that shows configuring Windows performance counters.

請遵循此程序以加入要收集的新 Windows 效能計數器。 不支援 V2 Windows 效能計數器。

  1. 選取 [新增效能計數器]

  2. 在文字方塊中輸入計數器名稱,格式為 object(instance)\counter。 開始輸入時,會出現符合的常用計數器清單。 您可以從清單中選取計數器,或自行輸入。 您也可以指定 object\counter,以傳回特定計數器的所有執行個體。

    從具名執行個體收集 SQL Server 效能計數器時,所有具名執行個體的計數器會以 MSSQL$ 作為開頭,後面接著執行個體的名稱。 例如,若要從具名 SQL 執行個體 INST2 的資料庫效能物件收集所有資料庫的「記錄快取命中率」計數器,請指定 MSSQL$INST2:Databases(*)\Log Cache Hit Ratio

  3. 新增計數器時,它會以 10 秒作為 [取樣間隔時間] 的預設值。 如果您想要降低所收集之效能資料的儲存空間需求,請將此預設值變更為最多 1800 秒 (30 分鐘)。

  4. 完成新增計數器後,選取畫面頂端的 [套用] 以儲存設定。

Linux 效能計數器

Screenshot that shows configuring Linux performance counters.

請遵循此程序以加入要收集的新 Linux 效能計數器。

  1. 選取 [新增效能計數器]
  2. 在文字方塊中輸入計數器名稱,格式為 object(instance)\counter。 開始輸入時,會出現符合的常用計數器清單。 您可以從清單中選取計數器,或自行輸入。
  3. 物件的所有計數器都會使用相同的 [取樣間隔時間] 。 預設值是 [10 秒]。 如果您想要降低所收集之效能資料的儲存空間需求,請將此預設值變更為最多 1800 秒 (30 分鐘)。
  4. 完成新增計數器後,選取畫面頂端的 [套用] 以儲存設定。

在組態檔中設定 Linux 效能計數器

除了透過使用 Azure 入口網站設定 Linux 效能計數器,您還可以選擇在 Linux 代理程式上編輯組態檔。 要收集的效能計量是由 /etc/opt/microsoft/omsagent/<工作區識別碼>/conf/omsagent.conf 中的組態所控制。

要收集之效能計量的每個物件或類別都應該當成單一 <source> 元素定義於組態檔中。 語法遵循此處的模式:

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

下表說明此元素中的參數。

參數 描述
object_name 收集的物件名稱。
instance_regex 此「規則運算式」會定義要收集的執行個體。 值 .* 指定所有執行個體。 若只要收集 _Total 執行個體的處理器計量,您可以指定 _Total。 若只要收集 crond 或 sshd 執行個體的程序計量,您可以指定 (crond\|sshd)
counter_name_regex 此「規則運算式」會定義要收集的計數器 (針對物件)。 若要收集物件的所有計數器,請指定 .*。 若只要收集記憶體物件的交換空間計數器,舉例來說,您可以指定 .+Swap.+
interval 物件計數器的收集頻率。

下表列出您可以在組態檔中指定的物件和計數器。 某些應用程式有更多計數器可供使用。 如需更多資訊,請參閱在 Azure 監視器中收集 Linux 應用程式的效能計數器

物件名稱 計數器名稱
Logical Disk % Free Inodes
Logical Disk 可用空間 %
Logical Disk % Used Inodes
Logical Disk % Used Space
Logical Disk 磁碟讀取位元組/秒
Logical Disk 磁碟讀取/秒
Logical Disk 磁碟傳輸量/秒
Logical Disk 磁碟寫入位元組/秒
Logical Disk Disk Writes/sec
Logical Disk Free Megabytes
Logical Disk Logical Disk Bytes/sec
記憶體 % Available Memory
記憶體 可用的交換空間 %
記憶體 % Used Memory
記憶體 使用的交換空間 %
記憶體 Available MBytes Memory
記憶體 可用的 MB 數交換
記憶體 Page Reads/sec
記憶體 頁面寫入數/秒
記憶體 Pages/sec
記憶體 使用的 MB 交換空間
記憶體 Used Memory MBytes
網路 傳輸的位元組總數
網路 接收的位元組總數
網路 位元組總數
網路 Total Packets Transmitted
網路 Total Packets Received
網路 Total Rx Errors
網路 Total Tx Errors
網路 Total Collisions
實體磁碟 平均磁碟秒數/讀取
實體磁碟 Avg.Disk sec/Transfer
實體磁碟 Avg.Disk sec/Write
實體磁碟 實體磁碟位元組數/秒
處理 Pct Privileged Time
處理 Pct User Time
處理 Used Memory kBytes
處理 Virtual Shared Memory
處理器 % DPC Time
處理器 % Idle Time
處理器 % Interrupt Time
處理器 % IO Wait Time
處理器 % Nice Time
處理器 授權的時間 %
處理器 % Processor Time
處理器 % User Time
系統 Free Physical Memory
系統 Free Space in Paging Files
系統 Free Virtual Memory
系統 程序
系統 Size Stored In Paging Files
系統 上線時間
系統 使用者

下列設定是效能計量的預設組態:

<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 監視器就會依照其指定的取樣間隔時間,收集全部代理程式上所有指定的效能計數器。 資料不會彙總。 在 Log Analytics 工作區所指定的期間,所有記錄查詢檢視中都會提供未經處理資料。

效能記錄屬性

效能記錄都具有 Perf 類型以及列於下表的屬性。

屬性 說明
電腦 收集事件的來源電腦。
CounterName 效能計數器的名稱。
CounterPath 計數器的完整路徑,格式為 \\<Computer>\object(instance)\counter。
CounterValue 計數器的數值。
InstanceName 事件執行個體的名稱。 如果沒有執行個體即為空白。
ObjectName 效能物件的名稱。
SourceSystem 收集資料的來源代理程式類型:

OpsManager – Windows 代理程式,直接連接或 SCOM
Linux – 所有的 Linux 代理程式
AzureStorage – Azure 診斷
TimeGenerated 資料取樣的日期和時間。

大小估計值

特定計數器集合的約略估計是依照每個執行個體 10 秒間隔,每天約 1 MB。 您可以使用下列公式,評估特定計數器的儲存需求:

1 MB x (計數器數目) x (代理程式數目) x (執行個體數目)

記錄查詢與效能記錄

下表提供擷取效能記錄的不同記錄查詢範例。

查詢 描述
效能 所有效能資料
Perf | where Computer == "MyComputer" 來自特定電腦的所有效能資料
Perf | where CounterName == "Current Disk Queue Length" 來自特定計數器的所有效能資料
Perf | where ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" | summarize AVGCPU = avg(CounterValue) by Computer 所有電腦的平均 CPU 使用率
Perf | where CounterName == "% Processor Time" | summarize AggregatedValue = max(CounterValue) by Computer 所有電腦的最大 CPU 使用率
Perf | 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 個百分位數的 Disk Transfers/Sec
Perf | where CounterName == "% Processor Time" and InstanceName == "_Total" | summarize AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 1h), Computer 所有電腦每小時平均 CPU 使用率
Perf | where Computer == "MyComputer" and CounterName startswith_cs "%" and InstanceName == "_Total" | summarize AggregatedValue = percentile(CounterValue, 70) by bin(TimeGenerated, 1h), CounterName 特定電腦每小時每個百分比計數器的 70 個百分位數
Perf | 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 的 master 資料庫

下一步