Azure 監視器和 Prometheus
Prometheus 是熱門的開放原始碼監視和警示解決方案,在雲端原生生態系統中廣泛使用。 組織會使用 Prometheus 來監視和警示基礎結構和工作負載的效能。 它通常用於 Kubernetes 環境。
您可以使用 Prometheus 作為 Azure 受控服務或自我管理服務來收集計量。 您可以從 Azure Kubernetes Service (AKS) 叢集、已啟用 Azure Arc 的 Kubernetes 叢集、虛擬機和虛擬機擴展集收集 Prometheus 計量。
Prometheus 計量會儲存在 Azure 監視器工作區中。 您可以使用計量總管搭配 Prometheus 查詢語言 (PromQL) 和 Azure 受控 Grafana,來分析和可視化工作區中的數據。
重要
使用 Azure 監視器來管理及裝載 Prometheus 的目的是儲存客戶機器和應用程式服務健康情況的相關信息。 它不適用於儲存任何個人資料。 強烈建議您不要將任何敏感性資訊(例如使用者名稱和信用卡號碼)傳送至 Azure 監視器裝載的 Prometheus 字段,例如計量名稱、卷標名稱或標籤值。
適用於 Prometheus 的 Azure 監視器受管理服務
適用於 Prometheus 的 Azure 監視器受控服務是 Azure 監視器計量的元件,可為執行 Prometheus 提供完全受控且可調整的環境。 它簡化了 AKS 中 Prometheus 的部署、管理和調整,因此您可以專注於監視應用程式和基礎結構。
作為完全受控的服務,適用於 Prometheus 的 Azure 監視器受控服務會在 AKS 或已啟用 Azure Arc 的 Kubernetes 中自動部署 Prometheus。 此服務提供高可用性、服務等級協定 (SLA) 保證和自動更新。 它提供可高度調整的計量存放區,可保留最多 18 個月的數據。
適用於 Prometheus 的 Azure 監視器受控服務提供預先設定的警示、規則和儀錶板。 透過 Prometheus 社群和原生 Grafana 整合的建議儀錶板,您可以立即完成完整的監視。 適用於 Prometheus 的 Azure 監視器受控服務會與 Azure 受控 Grafana 整合,而且也適用於自我管理的 Grafana。
定價是以擷取和查詢為基礎,不需要額外的記憶體成本。 如需詳細資訊,請參閱 Azure 監視器定價中的 [計量] 索引標籤。
啟用 Azure 監視器適用於 Prometheus 的受管理服務
適用於 Prometheus 的 Azure 監視器受控服務會從 AKS 和已啟用 Azure Arc 的 Kubernetes 收集數據。
若要啟用 Prometheus 的 Azure 監視器受控服務,您必須建立 Azure 監視器工作區 來儲存計量。 然後,您可以將收集 Prometheus 計量的服務上線:
- 若要從 Kubernetes 叢集收集 Prometheus 計量,請參閱 啟用 Prometheus 和 Grafana。
- 若要設定從自我管理 Prometheus 伺服器收集數據的遠端寫入,請參閱 將 Prometheus 計量從虛擬機、擴展集或 Kubernetes 叢集傳送至 Azure 監視器工作區。
若要為 azure 空中Microsoft雲端啟用受控 Prometheus,請連絡支持人員。
Azure 裝載的自我管理 Prometheus
除了 Prometheus 的受控服務之外,您還可以安裝及管理自己的 Prometheus 實例,並使用遠端寫入將計量儲存在 Azure 監視器工作區中。
藉由使用遠端寫入,您可以從在下列環境中執行的自我管理 Prometheus 伺服器收集資料:
- Azure 虛擬機器
- Azure 虛擬機器擴展集
- 已啟用 Azure Arc 的伺服器 (英文)
- 自我管理 Azure 裝載或已啟用 Azure Arc 的 Kubernetes 叢集
自我管理 Kubernetes 服務
從 Kubernetes 叢集上的自我管理 Prometheus 傳送計量。 如需有關 Kubernetes 服務之 Azure 監視器工作區遠端寫入的詳細資訊,請參閱下列文章:
- 使用受控識別驗證將 Prometheus 資料傳送至 Azure 監視器
- 使用 Microsoft Entra 驗證將 Prometheus 資料傳送至 Azure 監視器
- 使用 Microsoft Entra Pod 受控識別 (預覽版) 驗證將 Prometheus 資料傳送至 Azure 監視器
- 使用 Microsoft Entra 工作負載 ID 驗證將 Prometheus 數據傳送至 Azure 監視器
虛擬機器與虛擬機器擴展集
從虛擬機器和虛擬機器擴展集上的自我管理 Prometheus 傳送資料。 虛擬機可以位於 Azure 受控環境或內部部署環境中。 如需詳細資訊,請將 Prometheus 計量從虛擬機器、擴展集或 Kubernetes 叢集傳送至 Azure 監視器工作區。
資料存放區
Prometheus 計量會儲存在 Azure 監視器工作區中。 數據會儲存在可透過 PromQL 查詢的時間序列資料庫中。 您可以將數個 Prometheus 數據來源的數據儲存在單一 Azure 監視器工作區中。 如需詳細資訊,請參閱 Azure 監視器工作區架構。
Azure 監視器工作區會保留 18 個月的數據。
查詢和分析 Prometheus 計量
Prometheus 資料是透過 PromQL 擷取。 您可以撰寫自己的查詢、使用開放原始碼社群的查詢,以及使用包含 PromQL 查詢的 Grafana 儀錶板。 如需詳細資訊,請參閱 Prometheus 網站上的查詢 Prometheus。
下列 Azure 服務支援從 Azure 監視器工作區查詢 Prometheus 計量:
搭配 PromQL 的 Azure 監視器計量瀏覽器
搭配 PromQL 使用計量總管(預覽版)來分析和可視化平臺和 Prometheus 計量。 您可以從儲存 Prometheus 計量的 Azure 監視器工作區中的 [計量] 窗格,取得具有 PromQL 的計量總管。 如需詳細資訊,請參閱 使用 PromQL 的 Azure 監視器計量總管。
Azure 活頁簿
使用 Azure 活頁簿和 PromQL 查詢,為 Prometheus 建立 Azure 監視器受控服務所提供的圖表和儀錶板。 如需詳細資訊,請參閱 使用 Azure 活頁簿查詢 Prometheus 計量。
Grafana 整合
使用 Azure 受控 Grafana 將 Prometheus 計量可視化。 將 Azure 監視器工作區連線到 Grafana 工作區,讓您可以將它當做 Grafana 儀錶板中的數據源使用。 接著,您可以存取使用 Prometheus 計量的多個預先建置儀錶板。 您也可以建立任意數目的自定義儀錶板。 如需詳細資訊,請參閱 連結 Grafana 工作區。
Prometheus 查詢 API
透過 REST API 使用 PromQL 來查詢儲存在 Azure 監視器工作區中的 Prometheus 計量。 如需詳細資訊,請參閱 使用 API 和 PromQL 查詢 Prometheus 計量。
規則和警示
Prometheus 支援使用 PromQL 查詢來記錄規則和警示規則。 適用於 Prometheus 的 Azure 監視器受控服務會自動部署規則和警示。 錄製規則記錄的計量會儲存在 Azure 監視器工作區中。 然後,儀錶板或其他規則可以查詢計量。
您可以使用適用於 Prometheus 規則群組的 Azure 監視器受控服務,來建立和管理警示規則和錄製規則。 針對 AKS 叢集,一組 預先定義的 Prometheus 警示規則 和 錄製規則 可協助您快速開始使用。
警示規則引發的警示可以觸發動作或通知,如針對警示規則設定的 動作群組 中所定義。 您也可以檢視 Azure 入口網站 中引發和解決的 Prometheus 警示,以及其他警示類型。
服務限制與配額
適用於 Prometheus 的 Azure 監視器受控服務具有擷取的預設限制和配額。 當您達到擷取限制時,可能會發生節流。 您可以要求增加這些上限。 如需詳細資訊,請參閱 Azure 監視器服務限制。
若要監視和警示擷取計量,請參閱 監視 Azure 監視器工作區計量擷取。
限制
下列限制適用於 Prometheus 的 Azure 監視器受控服務:
- 擷取和儲存計量的最低頻率為1秒。
- 在節點更新期間,您可能會在叢集層級收集器的某些計量集合中遇到過去 1 到 2 分鐘的差距。 此差距是因為 Azure Kubernetes Service 會進行一般動作以更新叢集中的節點。 此行為不會影響建議的警示規則。
- Windows 節點的 Managed Prometheus 不會自動啟用。 若要開啟叢集中 Windows 節點和 Pod 的監視功能,請參閱 啟用 Windows 計量集合 (預覽) 。
區分大小寫
Prometheus 的 Azure 監視器受控服務不區分大小寫的系統。 如果字串與另一個時間序列不同,則會將字串(例如計量名稱、標籤名稱或標籤)視為相同的時間序列。如果字串大小寫與另一個時間序列不同。
注意
此行為與原生開放原始碼 Prometheus 不同,這是區分大小寫的系統。 在 Azure 虛擬機器、虛擬機擴展集或 Azure Kubernetes Service 叢集中執行的自我管理 Prometheus 實例是區分大小寫的系統。
在 Prometheus 的受控服務中,下列時間序列會視為相同:
diskSize(cluster="eastus", node="node1", filesystem="usr_mnt")
diskSize(cluster="eastus", node="node1", filesystem="usr_MNT")
上述範例是時間序列資料庫中的單一時間序列。 下列考量適用:
- 針對它們擷取的任何樣本,會儲存為針對單一時間序列擷取或擷取樣本。
- 如果上述範例是使用相同的時間戳擷取,則會隨機捨棄其中一個。
- 時間序列資料庫中儲存並由查詢傳回的大小寫無法預測。 相同的時間序列可能會在不同的時間傳回不同的大小寫。
- 查詢中存在的任何計量名稱或標籤名稱/值比對器,都是透過不區分大小寫的比較,從時間序列資料庫擷取。 如果查詢中有區分大小寫的比對器,則會在字串比較中自動視為不區分大小寫的比對器。
最佳做法是使用單一一致的案例來產生或抓取時間序列。
開放原始碼 Prometheus 會將上述範例視為兩個不同的時間序列。 針對它們擷取或擷取的任何樣本會分開儲存。
Prometheus 參考
以下是 Prometheus 檔案的連結: