性能計數器提供虛擬硬體元件、作系統和工作負載效能的深入解析。 使用 數據收集規則 (DCR) 搭配 性能計數器 數據源,從 Windows 和 Linux 虛擬機收集計數器。
如需建立 DCR 的詳細數據,請參閱 使用 Azure 監視器從 VM 用戶端收集數據。 本文提供性能計數器數據源類型的其他詳細數據。
已為 OpenTelemetry 效能計數器新增資料來源,支援 Azure 監視器工作區作為目的地。 閱讀有關使用此新數據源的好處的更多信息 請點擊這裡.
備註
若要直接使用 DCR 定義,或使用 ARM 範本等其他方法進行部署,請參閱 Azure 監視器中的數據收集規則 (DCR) 範例。
設定 OpenTelemetry 效能計數器資料來源 (預覽版)
使用 Azure 監視器中的從虛擬機用戶端收集數據程式建立 DCR。 在 DCR 的 [ 收集和傳遞 ] 索引標籤上,從 [資料來源類型 ] 下拉式清單中選取 [ OpenTelemetry 效能計數器]。 從預先定義的物件集中選取要收集的物件及其取樣率。 取樣率越低,收集值的頻率就越高。
選取 [自訂] 以更精細地選取 OpenTelemetry 效能計數器。
設定效能計數器資料來源
使用 Azure 監視器中的從虛擬機用戶端收集數據程式建立 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 監視器工作區,以便透過 PromQl 進行查詢。 這是所有使用者建議的資料目的地,因為 Container Insights、Application Insights 和 VM Insights 都會移至 Azure 監視器工作區作為計量的來源,而不是 Log Analytics 工作區。
效能計數器仍可傳送至 Log Analytics 工作區,儲存在 Perf 資料表和/或 Azure 監視器計量 (預覽) 中,可在 計量總管中使用。 新增 Azure 監視器記錄 類型的目的地,然後選取 Log Analytics 工作區。 雖然您可以新增多個工作區,但請注意,這會將重複的數據傳送至每個工作區,這會導致額外的成本。 Azure 監控指標(預覽) 不需要進一步的詳細資訊,因為這會儲存在受監視資源的訂閱層級。
確認資料收集
若要確認是否正在 Azure 監視器工作區中收集 OpenTelemetry 效能計數器,您可以先將查詢範圍限定於被選作 DCR 目的地的 AMW,並檢查任何 System. 計量是否如預期般順利收集。
如果 AMW 已設定為 資源內容存取模式,您也可以瀏覽至入口網站中的 [VM 計量] 刀鋒視窗,然後選擇 [使用編輯器新增] 下拉式清單,或選擇 [計量命名空間] 底下的 [在編輯器中檢視 AMW 計量] 下拉式清單,以確認範圍限定為 VM 本身時,相同的查詢是否如預期般運作。
這兩個進入點都應該會產生 PromQl 編輯器,其查詢範圍現在限定為 VM 資源,其中相同的查詢將與以前一樣運作,但不需要篩選 VM microsoft.resourceid 維度。
若要確認是否在 Log Analytics 工作區中收集舊版效能計數器資料來源,請檢查 Perf 資料表中的記錄。 從虛擬機或 Azure 入口網站中的 Log Analytics 工作區,選取 [ 記錄 ],然後按兩下 [ 資料表] 按鈕。 在 [虛擬機器] 類別下,點選 [執行] 按鈕,在 [Perf] 旁。
若要確認是否正在 Azure 監視器效能計量中收集舊版效能計數器資料來源,請從 Azure 入口網站的虛擬機器中選取 [計量]。 選取命名空間的 虛擬機客體 (Windows) 或 azure.vm.linux.guestmetrics ,然後選取要新增至檢視的計量。
效能計數器
下列性能計數器可供適用於 Windows 和 Linux 的 Azure 監視器代理程式收集。 建立或更新資料收集規則時,可以變更取樣頻率。
| OTel 效能計數器 | 類型 | 單位 | Aggregation | 單調 | 尺寸 | Description |
|---|---|---|---|---|---|---|
| 系統.CPU.利用率 | 量測計 | 1 | N/A | FALSE |
cpu:從0開始的邏輯CPU數(值:Any Str) state:按類型劃分的 CPU 使用率明細(值:idle、interrupt、nice、softirq、steal、system、user、wait) |
自上次測量後,將每個邏輯 CPU 的 system.cpu.time 差異除以所經過的時間(範圍為 0 至 1)。 |
| system.cpu.time | 總和 | s | 累積 | TRUE |
cpu:從0開始的邏輯CPU數(值:Any Str) state:按類型劃分的 CPU 使用率明細(值:idle、interrupt、nice、softirq、steal、system、user、wait) |
每個邏輯 CPU 在每個模式上花費的總秒數。 |
| system.cpu.physical.count | 總和 | {中央處理器} | 累積 | FALSE | (無) | 可用的實體 CPU 數目。 |
| 系統. CPU. 邏輯處理器. 數量 | 總和 | {中央處理器} | 累積 | FALSE | cpu:從0開始的邏輯CPU數(值:Any Str) | 可用的邏輯 CPU 數目。 |
| system.cpu.load_average.5m | 量測計 | {thread} | N/A | FALSE | (無) | 超過 5 分鐘的平均 CPU 負載。 |
| system.cpu.load_average.1m | 量測計 | {thread} | N/A | FALSE | (無) | 超過 1 分鐘的平均 CPU 負載。 |
| system.cpu.load_average.15m | 量測計 | {thread} | N/A | FALSE | (無) | 超過 15 分鐘的平均 CPU 負載。 |
| system.cpu.frequency | 量測計 | 赫茲 | N/A | FALSE | (無) | CPU 核心的目前頻率,以 Hz 為單位。 |
| process.uptime | 量測計 | s | N/A | FALSE | (無) | 程序執行的時間。 |
| process.threads | 總和 | {線程} | 累積 | FALSE | (無) | 進程執行緒數量。 |
| process.signals_pending | 總和 | {信號} | 累積 | FALSE | (無) | 處理程序的擱置訊號數目 (僅限 Linux)。 |
| process.paging.faults | 總和 | {錯誤} | 累積 | TRUE | type:故障類型(值:主要、次要) | 進程所犯的頁面錯誤數目 (僅限 Linux)。 |
| process.open_file_descriptors | 總和 | {count} | 累積 | FALSE | (無) | 處理程序正在使用的檔案描述子數目。 |
| 處理程序.記憶體.虛擬 | 總和 | 依據 | 累積 | FALSE | (無) | 虛擬記憶體大小。 |
| 進程記憶體使用率 | 量測計 | 1 | N/A | FALSE | (無) | 進程所使用的實體記憶體總計百分比。 |
| 進程.記憶體.用量 | 總和 | 依據 | 累積 | FALSE | (無) | 使用中的實體記憶體數量。 |
| system.disk.weighted_io_time | 總和 | s | 累積 | FALSE | device:磁碟名稱(值:Any Str) | 啟動耗費的時間磁碟乘以佇列長度。 |
| system.disk.pending_operations | 總和 | {操作} | 累積 | FALSE | device:磁碟名稱(值:Any Str) | 待處理 I/O 作業的佇列大小。 |
| 系統.磁碟作業 | 總和 | {操作} | 累積 | TRUE |
device:磁碟名稱(值:Any Str) direction:流動方向(值:讀取、寫入) |
磁碟作業次數。 |
| 系統.磁碟.操作時間 | 總和 | s | 累積 | TRUE |
device:磁碟名稱(值:Any Str) direction:流動方向(值:讀取、寫入) |
磁碟讀寫作業時間。 |
| 系統.磁碟.已合併 | 總和 | {操作} | 累積 | TRUE |
device:磁碟名稱(值:Any Str) direction:流動方向(值:讀取、寫入) |
磁碟讀取/寫入合併為單一實體作業。 |
| system.disk.io_time | 總和 | s | 累積 | TRUE | device:磁碟名稱(值:Any Str) | 啟用磁碟所花費的時間。 |
| system.disk.io | 總和 | 依據 | 累積 | TRUE |
device:磁碟名稱(值:Any Str) direction:流動方向(值:讀取、寫入) |
傳輸的磁碟位元組。 |
| process.handles | 總和 | {count} | 累積 | FALSE | (無) | 開啟控制代碼數目 (僅限 Windows)。 |
| process.disk.operations | 總和 | {操作} | 累積 | TRUE | direction:流動方向(值:讀取、寫入) | 進程所執行的磁碟作業。 |
| process.disk.io | 總和 | 依據 | 累積 | TRUE | direction:流動方向(值:讀取、寫入) | 傳輸的磁碟位元組。 |
| 處理程序 CPU 使用率 | 量測計 | 1 | N/A | FALSE | state:CPU 使用率明細(值:system、user、wait) | 自上次抓取後,程序使用的總 CPU 時間百分比 (0-1)。 |
| process.cpu.時間 | 總和 | s | 累積 | TRUE | state:CPU 使用率明細(值:system、user、wait) | 按狀態細分的 CPU 總秒數。 |
| process.context_switches | 總和 | {count} | 累積 | TRUE | type:上下文開關的類型(值:任何 Str) | 處理程序已切換內容的次數(僅限 Linux)。 |
| 系統記憶體使用率 | 量測計 | 1 | N/A | FALSE | state:記憶體使用明細(值:緩衝、快取、非作用中、可用、slab_reclaimable、slab_unreclaimable、已使用) | 使用中的記憶體位元組百分比。 |
| 系統.記憶體.使用 | 總和 | 依據 | 累積 | FALSE | state:記憶體使用明細(值:緩衝、快取、非作用中、可用、slab_reclaimable、slab_unreclaimable、已使用) | 使用中的記憶體位元組數。 |
| system.memory.page_size | 量測計 | 依據 | N/A | FALSE | (無) | 系統設定的頁面大小。 |
| 系統內存限制 | 總和 | 依據 | 累積 | FALSE | (無) | 可用的記憶體位元組總數。 |
| system.linux.memory.dirty | 總和 | 依據 | 累積 | FALSE | (無) | 髒記憶體量 (/proc/meminfo)。 |
| system.linux.memory.available(系統.linux.記憶體.可用) | 總和 | 依據 | 累積 | FALSE | (無) | 可用記憶體的估計值 (僅限 Linux)。 |
| 系統.網路.封包 | 總和 | 封包 | 累積 | TRUE |
裝置:網路介面名稱(值:任何 Str) direction:流動方向(值:接收、發送) |
傳輸的封包數。 |
| system.network.io | 總和 | 依據 | 累積 | TRUE | (無) | 傳輸和接收的位元組數。 |
| 系統.網路錯誤 | 總和 | {錯誤} | 累積 | FALSE |
裝置:網路介面名稱(值:任何 Str) direction:流動方向(值:接收、發送) |
遇到的錯誤數目。 |
| system.network.dropped | 總和 | 封包 | 累積 | TRUE |
裝置:網路介面名稱(值:任何 Str) direction:流動方向(值:接收、發送) |
捨棄的封包數目。 |
| system.network.conntrack.max | 總和 | {條目} | 累積 | FALSE | (無) | conntrack 表中的條目限制。 |
| system.network.conntrack.count | 總和 | {條目} | 累積 | FALSE | (無) | conntrack 表中的條目計數。 |
| 系統.網路連線 | 總和 | {連接} | 累積 | FALSE |
protocol:網路協定(值:tcp) state:連線狀態(值:Any Str) |
連線數。 |
| 系統正常運行時間 | 量測計 | s | N/A | FALSE | (無) | 系統運行的時間。 |
| system.processes.created | 總和 | {進程} | 累積 | TRUE | (無) | 已建立的處理程序總數。 |
| system.processes.count | 總和 | {進程} | 累積 | FALSE | 狀態:程序狀態 (值:blocked、daemon、detached、idle、locked、orphan、paging、running、sleeping、stopped、system、unknown、zombies) | 每個狀態中的進程總數。 |
| 系統分頁利用率 | 量測計 | 1 | N/A | FALSE |
device:頁面檔案名稱(值:Any Str) state:分頁使用類型(值:快取、免費、已使用) |
交換 (Unix) 或分頁檔 (Windows) 使用率。 |
| system.paging.usage | 總和 | 依據 | 累積 | FALSE |
device:頁面檔案名稱(值:Any Str) state:分頁使用類型(值:快取、免費、已使用) |
交換 (Unix) 或分頁檔 (Windows) 使用量。 |
| system.paging.operations | 總和 | {操作} | 累積 | TRUE |
direction:頁面流程(值:page_in、page_out) type:故障類型(值:major、minor) |
分頁作業。 |
| 系統分頁錯誤 | 總和 | {錯誤} | (無) | TRUE | type:故障類型(值:major、minor) | 頁面錯誤數。 |
| system.filesystem.utilization (系統檔案系統使用率) | 量測計 | 1 | N/A | FALSE |
device:檔案系統識別碼 mode:掛載模式(值:ro、rw) mountpoint:路徑 type:檔案系統類型(值:ext4、tmpfs等) |
檔案系統儲存空間使用率。 |
| system.filesystem.usage(系統檔案系統使用情況) | 總和 | 依據 | 累積 | FALSE |
device:檔案系統識別碼 mode:掛載模式 mountpoint:路徑 type:檔案系統類型 state:使用類型(值:free、reserved、used) |
使用的檔案系統位元組。 |
| system.filesystem.inodes.usage | 總和 | {inode} | 累積 | FALSE |
device:檔案系統識別碼 mode:掛載模式 mountpoint:路徑 type:檔案系統類型 state:使用類型(值:free、reserved、used) |
使用的檔案系統 Inode。 |
後續步驟
- 深入瞭解 OpenTelemetry 效能計數器
- 深入了解 Azure 監視器代理程式。
- 深入了解資料收集規則。