Windows 和 Linux 中的效能計數器可讓您深入瞭解硬體元件、作業系統和應用程式的效能。 Azure 監視器可以頻繁地從 Log Analytics 代理程式收集效能計數器,以進行近乎即時的分析。 Azure 監視器也可以彙總效能資料,以進行長期分析和報告。
這很重要
舊版 Log Analytics 代理程式已於 2024 年 8 月 31 日取代。 Microsoft 將不再提供 Log Analytics 代理程式的任何支援。 如果您使用 Log Analytics 代理程式將資料內嵌至 Azure 監視器,請 立即移轉至 Azure 監視器代理程式。
設定效能計數器
從 Log Analytics 工作區的 舊版代理程式管理功能表 設定效能計數器。
當您第一次為新工作區設定 Windows 或 Linux 效能計數器時,您可以選擇快速建立數個一般計數器。 它們被列出時,每個旁邊都有核取方塊。 請確定已選取您要最初建立的任何計數器,然後選取 [ 新增選取的效能計數器]。
對於 Windows 效能計數器,您可以為每個效能計數器選擇特定執行個體。 對於 Linux 效能計數器,您選擇的每個計數器的執行個體會套用至父計數器的所有子計數器。 下表顯示 Windows 和 Linux 效能計數器可用的常見執行個體。
| 執行個體名稱 | Description |
|---|---|
| _總 | 所有執行個體的總計 |
| * | 所有實例 |
| (/|/var) | 比對名為 / 或 /var 的執行個體 |
Windows 效能計數器
請遵循以下步驟,新增要收集的新 Windows 效能計數器。 不支援 V2 Windows 效能計數器。
選取 [新增效能計數器]。
在格式 object(instance)\counter 的文字方塊中輸入計數器的名稱。 當您開始輸入時,會出現常用計數器的相符清單。 您可以從清單中選取計數器,或輸入您自己的計數器。 您也可以指定 object\counter 來傳回特定計數器的所有實例。
從具名執行個體收集 SQL Server 效能計數器時,所有具名執行個體的計數器都會以 MSSQL$ 開頭,後面接著該執行個體的名稱。 例如,若要從具名 SQL 實例 INST2 的資料庫效能物件收集所有資料庫的 Log Cache 命中率計數器,請指定
MSSQL$INST2:Databases(*)\Log Cache Hit Ratio。當您新增計數器時,它會使用預設值 10 秒作為其 取樣間隔。 如果您想要減少所收集效能資料的儲存需求,請將此預設值變更為最多 1,800 秒 (30 分鐘) 的較高值。
完成新增計數器之後,請選取畫面頂端的 [套用] 以儲存設定。
Linux 效能計數器
請遵循此程序,新增要收集的新 Linux 效能計數器。
- 選取 [新增效能計數器]。
- 在格式 object(instance)\counter 的文字方塊中輸入計數器的名稱。 當您開始輸入時,會出現常用計數器的相符清單。 您可以從清單中選取計數器,或輸入您自己的計數器。
- 物件的所有計數器都會使用相同的 取樣間隔。 預設值是 [10 秒]。 如果您想要減少所收集效能資料的儲存需求,請將此預設值變更為最多 1,800 秒 (30 分鐘) 的較高值。
- 完成新增計數器之後,請選取畫面頂端的 [套用] 以儲存設定。
在組態檔中設定 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)。 |
| counter_name_regex | 定義要收集的計數器 (物件) 的 正規表示式 。 若要收集物件的所有計數器,請指定 .*。 例如,若要只收集記憶體物件的交換空間計數器,您可以指定 .+Swap.+ |
| 間隔 | 收集物件計數器的頻率。 |
下表列出您可以在組態檔中指定的物件和計數器。 某些應用程式可以使用更多計數器。 如需詳細資訊,請參閱 在 Azure 監視器中收集 Linux 應用程式的效能計數器。
| 物件名稱 | 計數器名稱 |
|---|---|
| 邏輯磁碟 | 未使用的 inode % |
| 邏輯磁碟 | % 可用空間 |
| 邏輯磁碟 | % 已使用的 i節點 |
| 邏輯磁碟 | % 已使用空間 |
| 邏輯磁碟 | 磁碟讀取位元組/秒 |
| 邏輯磁碟 | 磁碟讀取次數/秒 |
| 邏輯磁碟 | 磁碟傳輸/秒 |
| 邏輯磁碟 | 磁碟寫入位元組(每秒) |
| 邏輯磁碟 | 磁碟寫入/秒 |
| 邏輯磁碟 | 免費兆位元組 |
| 邏輯磁碟 | 邏輯磁碟位元組/秒 |
| Memory | % 可用記憶體 |
| Memory | % 可用交換空間 |
| Memory | % 已用記憶體 |
| Memory | % 已使用交換空間 |
| Memory | 可用的記憶體容量 (以 MBytes 計算) |
| Memory | 可用的 MB 記憶體交換區 |
| Memory | 頁面閱讀次數/秒 |
| Memory | 頁面寫入次數/秒 |
| Memory | 頁數/秒 |
| Memory | 已使用百萬位元組交換空間 |
| Memory | 已用記憶體 MBytes |
| 網路 | 傳輸的位元組總數 |
| 網路 | 接收的位元組總數 |
| 網路 | 總位元組數 |
| 網路 | 傳輸的封包總數 |
| 網路 | 收到的封包總數 |
| 網路 | 接收資料錯誤總數 |
| 網路 | 總 Tx 錯誤 |
| 網路 | 碰撞總數 |
| 實體磁碟 | 平均磁碟讀取秒數 |
| 實體磁碟 | 平均磁碟時間/每次傳輸 |
| 實體磁碟 | 平均磁碟秒/寫入 |
| 實體磁碟 | 實體磁碟位元組/秒 |
| 流程 | Pct 特權時間 |
| 流程 | Pct 使用者時間 |
| 流程 | 已用記憶體 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 監視器會在已安裝該計數器的所有代理程式上,以指定的取樣間隔收集所有指定的效能計數器。 資料不會彙總。 原始資料可在 Log Analytics 工作區指定的持續時間內在所有記錄查詢檢視中使用。
效能記錄屬性
效能記錄的類型為 Perf ,並具有下表所列的屬性。
| 房產 | Description |
|---|---|
| Computer | 事件是從哪台電腦收集的。 |
| 計數器名稱 | 效能計數器的名稱。 |
| CounterPath | 計數器的完整路徑,格式為 \\<Computer\object>(instance)\counter。 |
| 計數值 | 計數器的數值。 |
| 實例名稱 | 事件實例的名稱。 如果沒有實例,則為空。 |
| 物件名稱 | 效能物件的名稱。 |
| SourceSystem | 從中收集資料的代理程式類型: OpsManager – Windows 代理軟體,可以直接連線或透過 SCOM 連線 Linux — 所有 Linux 代理程式 AzureStorage – Azure 診斷 |
| TimeGenerated | 取樣資料的日期和時間。 |
尺寸估計
以 10 秒間隔收集特定計數器的粗略估計值是每個實例每天約 1 MB。 您可以使用下列公式來估計特定計數器的儲存需求:
1 MB x (計數器數目) x (代理程式數目) x (執行個體數目)
使用效能記錄來記錄查詢日志
下表提供擷取效能記錄的記錄查詢的不同範例。
| Query | Description |
|---|---|
| Perf | 所有效能資料 |
| 效能 | 電腦 == "我的電腦" | 來自特定電腦的所有效能資料 |
| 效能 | where CounterName == "目前磁碟佇列長度" | 特定計數器的所有效能資料 |
| 性能數據 |其中 ObjectName == “處理器” 和 CounterName == “% 處理器使用時間” 和 InstanceName == “_Total” |按電腦彙總 AVGCPU = avg(CounterValue) | 所有電腦的平均 CPU 使用率 |
| 效能 |其中 CounterName == “% 處理器時間” |依電腦彙總最大值 AggregatedValue = max(CounterValue) | 所有電腦的最大 CPU 使用率 |
| Perf | 過濾條件是 ObjectName == "LogicalDisk" 和 CounterName == "目前磁碟佇列長度" 和 Computer == "MyComputerName" | 按照 InstanceName 彙總 AggregatedValue = avg(CounterValue) | 指定電腦的目前平均磁碟佇列長度(適用於所有執行個體) |
| 效能 | 當 CounterName == "磁碟傳輸/秒" | 統計 AggregatedValue = percentile(CounterValue, 95) 按電腦彙總 | 所有電腦上磁碟傳輸/秒的第 95 個百分位數 |
| 效能 | 其中 CounterName == "% 處理器時間" 和 InstanceName == "_Total" | 彙總 AggregatedValue = avg(CounterValue) by bin(TimeGenerated, 1h), Computer | 所有電腦的每小時平均 CPU 使用率 |
| 性能資料 | 其中 Computer == "MyComputer" 且 CounterName 開頭為 "%"(區分大小寫)且 InstanceName == "_Total" | 摘要 聚合值 = 百分位(CounterValue,70)按 時間生成(每1小時)進行分組,CounterName | 特定電腦的每個百分比計數器的每小時第70百分位數 |
| Perf | where CounterName == "% 處理器時間" 且 InstanceName == "_Total" 且 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 使用率 |
| 性能 |其中 ObjectName == “MSSQL$INST2:Databases” 和 InstanceName == “master” | 來自具名 SQL Server 实例 INST2 的主資料庫資料庫效能對象的所有效能資料 |
後續步驟
- 從 Linux 應用程式收集效能計數器,包括 MySQL 和 Apache HTTP Server。
- 瞭解 記錄查詢 ,以分析從資料來源和解決方案收集的資料。
- 將收集的資料匯出至 Power BI ,以取得更多視覺效果和分析。