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