將 Prometheus 計量從虛擬機器、擴展集或 Kubernetes 叢集傳送至 Azure 監視器工作區
本文內容
Prometheus 不限於監視 Kubernetes 叢集。 使用 Prometheus 監視在伺服器上執行的應用程式和服務,無論其在何處執行作業。 例如,您可以監視在虛擬機器、虛擬機器擴展集,甚至是內部部署伺服器上執行的應用程式。 您也可以從自我管理叢集和 Prometheus 伺服器將 Prometheus 計量傳送至 Azure 監視器工作區。 在伺服器上安裝 prometheus,並設定遠端寫入以將計量傳送至 Azure 監視器工作區。
本文說明如何設定遠端寫入以將資料從自我管理 Prometheus 執行個體傳送至 Azure 監視器工作區。
遠端寫入選項
自我管理 Prometheus 可以在 Azure 和非 Azure 環境中執行。 以下是根據 Prometheus 執行環境的遠端寫入 Azure 監視器工作區的驗證選項。
Azure 受控的虛擬機器、虛擬機器擴展集和 Kubernetes 叢集
針對在 Azure 環境中執行自我管理 Prometheus 的服務,使用使用者指派的受控識別驗證。 Azure 受控服務包括:
Azure 虛擬機器
Azure 虛擬機器擴展集
Azure Kubernetes Service (AKS)
若要設定 Azure 受控資源的遠端寫入,請參閱使用使用者指派的受控識別遠端寫入 。
在非 Azure 環境中執行的虛擬機器和 Kubernetes 叢集
如果您在非 Azure 環境中有虛擬機器或 Kubernetes 叢集,或要上線至 Azure Arc,請安裝自我管理 Prometheus,並使用 Microsoft Entra ID 應用程式驗證來設定遠端寫入。 如需詳細資訊,請參閱使用 Microsoft Entra ID 應用程式驗證遠端寫入 。
上線至已啟用 Azure Arc 的服務可讓您在 Azure 中管理和設定非 Azure 虛擬機器。 如需將虛擬機器上線至已啟用 Azure Arc 的伺服器的詳細資訊,請參閱已啟用 Azure Arc 的伺服器 和已啟用 Azure Arc 的 Kubernetes 。 已啟用 Arc 的服務僅支援 Microsoft Entra ID 驗證。
注意
遠端寫入 Azure 監視器工作區不支援系統指派的受控識別。 請使用使用者指派的受控識別或 Microsoft Entra ID 應用程式驗證。
必要條件
支援的版本
受控識別驗證需要大於 v2.45 的 Prometheus 版本。
Microsoft Entra ID 應用程式驗證需要大於 v2.48 的 Prometheus 版本。
Azure 監視器工作區
本文介紹將 Prometheus 計量傳送至 Azure 監視器工作區。 若要建立 Azure 監視器工作區,請參閱管理 Azure 監視器工作區 。
權限
需要叢集或資源的系統管理員權限,才能完成本文中的步驟。
設定遠端寫入的驗證
根據 Prometheus 執行的環境,您可以設定遠端寫入,以使用使用者指派的受控識別或 Microsoft Entra ID 應用程式驗證,將資料傳送至 Azure 監視器工作區。
使用 Azure 入口網站或 CLI 建立使用者指派的受控識別或 Microsoft Entra ID 應用程式。
遠端寫入使用使用者指派的受控識別驗證
使用者指派的受控識別驗證可用於任何 Azure 受控環境。 如果您的 Prometheus 服務是在非 Azure 環境中執行,您可以使用 Microsoft Entra ID 應用程式驗證。
若要設定使用者指派的受控識別以遠端寫入 Azure 監視器工作區,請完成下列步驟。
建立使用者指派的受控識別
若要建立要用於遠端寫入設定的使用者受控識別,請參閱管理使用者指派的受控識別 。
請注意您所建立受控識別的 clientId
的值。 此識別碼用於 Prometheus 遠端寫入設定。
將監視計量發行者角色指派給應用程式
在工作區的資料收集規則上,將 Monitoring Metrics Publisher
角色指派給受控識別。
在 [Azure 監視器工作區概觀] 頁面上,選取 [資料收集規則] 連結。
在資料收集規則頁面上,選取 [存取控制 (IAM)] 。
選取 [新增] 和 [新增角色指派] 。
搜尋並選取 [監視計量發行者] ,然後選取 [下一步] 。
選取 [受控識別]。
選取 [選取成員 ]。
在 [受控實體] 下拉式清單中,使用者指派的受控識別 。
選取您要使用的使用者指派身分識別,然後按一下 [選取] 。
選取 [檢閱 + 指派] ,以完成角色指派。
將受控識別指派給虛擬機器或虛擬機器擴展集
重要
若要完成本節中的步驟,您必須具有虛擬機器或虛擬機器擴展集的擁有者或使用者存取管理員的權限。
在 Azure 入口網站中,前往叢集、虛擬機器或虛擬機器擴展集的頁面。
選取 [身分識別]。
選取 [已指派的使用者] 。
選取 [新增]。
選取您已建立的使用者指派受控識別,然後選取 [新增] 。
為 Azure Kubernetes Service 指派受控識別
針對 Azure Kubernetes 服務 (AKS),受控識別必須指派給虛擬機器擴展集。
AKS 建立包含虛擬機器擴展集的資源群組。 資源群組名稱的格式為 MC_<resource group name>_<AKS cluster name>_<region>
。
針對資源群組中的每個虛擬機器擴展集,請根據上一節中的步驟指派受控識別,將受控識別指派給虛擬機器或虛擬機器擴展集 。
使用 Microsoft Entra ID 應用程式驗證遠端寫入
Microsoft Entra ID 應用程式驗證可用於任何環境中。 如果您的 Prometheus 服務是在 Azure 受控環境中執行,請考慮使用使用者指派的受控識別驗證。
若要使用 Microsoft Entra ID 應用程式設定對 Azure 監視器工作區的遠端寫入,請建立 Microsoft Entra 應用程式。 在 Azure 監視器工作區的資料收集規則上,將 Monitoring Metrics Publisher
角色指派至 Microsoft Entra 應用程式。
注意
您的 Microsoft Entra 應用程式會使用用戶端密碼或密碼。 用戶端密碼有到期日。 確保在到期前建立新的用戶端密碼,以免失去已驗證的存取權。
建立 Microsoft Entra ID 應用程式
若要使用入口網站建立 Microsoft Entra ID 應用程式,請參閱建立可存取諮詢的 Microsoft Entra ID 應用程式和服務主體 。
當您已建立 Microsoft Entra 應用程式時,取得用戶端識別碼並產生用戶端密碼。
在應用程式清單中,複製已註冊應用程式的 [應用程式 (用戶端) 識別碼] 值。 此值在 Prometheus 遠端寫入設定中作為 client_id
的值。
選取 [憑證和祕密]
選取 [用戶端密碼] ,然後選取 [新增用戶端密碼] 以建立新的祕密
輸入描述,設定到期日,然後選取 [新增] 。
以安全的方式複製祕密的值。 該值在 Prometheus 遠端寫入設定中作為 client_secret
的值。 只有在建立且稍後無法擷取時,才會顯示用戶端密碼值。 若遺失,您必須建立新的用戶端密碼。
將監視計量發行者角色指派給應用程式
將工作區資料收集規則的 Monitoring Metrics Publisher
角色指派給應用程式。
在 [Azure 監視器工作區] 概觀頁面上,選取 [資料收集規則] 連結。
在資料收集規則概觀頁面上,選取 [存取控制 (IAM)] 。
選取 [新增],然後選取 [新增角色指派]。
選取 [監視計量發行者] 角色,然後選取 [下一步] 。
選取 [使用者、群組或服務主體] ,然後選擇 [選取成員] 。 選取您建立的應用程式,然後選擇 [選取] 。
若要完成角色指派,請選取 [檢閱 + 指派] 。
使用 CLI 建立使用者指派的識別和 Microsoft Entra ID 應用程式
建立使用者指派的受控識別
使用下列步驟建立使用者指派的受控識別以進行遠端寫入:
建立使用者指派的受控識別
將工作區的資料收集規則中的 Monitoring Metrics Publisher
角色指派給受控識別
將受控識別指派給虛擬機器或虛擬機器擴展集。
請注意您所建立受控識別的 clientId
的值。 此識別碼用於 Prometheus 遠端寫入設定。
使用下列 CLI 命令建立使用者指派的受控識別:
az account set \
--subscription <subscription id>
az identity create \
--name <identity name> \
--resource-group <resource group name>
以下是顯示的輸出範例:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/PromRemoteWriteIdentity",
"location": "eastus",
"name": "PromRemoteWriteIdentity",
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"resourceGroup": "rg-001",
"systemData": null,
"tags": {},
"tenantId": "ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
將工作區的資料收集規則中的 Monitoring Metrics Publisher
角色指派給受控識別。
az role assignment create \
--role "Monitoring Metrics Publisher" \
--assignee <managed identity client ID> \
--scope <data collection rule resource ID>
例如,
az role assignment create \
--role "Monitoring Metrics Publisher" \
--assignee 00001111-aaaa-2222-bbbb-3333cccc4444 \
--scope /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MA_amw-001_eastus_managed/providers/Microsoft.Insights/dataCollectionRules/amw-001
將受控識別指派給虛擬機器或虛擬機器擴展集。
對於虛擬機器:
az vm identity assign \
-g <resource group name> \
-n <virtual machine name> \
--identities <user assigned identity resource ID>
對於虛擬機器擴展集:
az vmss identity assign \
-g <resource group name> \
-n <VSS name> \
--identities <user assigned identity resource ID>
例如,對於虛擬機器擴展集:
az vm identity assign \
-g rg-prom-on-vm \
-n win-vm-prom \
--identities /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/rg-001/providers/Microsoft.ManagedIdentity/userAssignedIdentities/PromRemoteWriteIdentity
如需詳細資訊,請參閱 az 身分識別建立 和 az 角色指派建立 。
建立 Microsoft Entra ID 應用程式
若要使用 CLI 建立 Microsoft Entra ID 應用程式,並指派 Monitoring Metrics Publisher
角色,請執行下列命令:
az ad sp create-for-rbac --name <application name> \
--role "Monitoring Metrics Publisher" \
--scopes <azure monitor workspace data collection rule Id>
例如,
az ad sp create-for-rbac \
--name PromRemoteWriteApp \
--role "Monitoring Metrics Publisher" \
--scopes /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MA_amw-001_eastus_managed/providers/Microsoft.nsights/dataCollectionRules/amw-001
以下是顯示的輸出範例:
{
"appId": "66667777-aaaa-8888-bbbb-9999cccc0000",
"displayName": "PromRemoteWriteApp",
"password": "Aa1Bb~2Cc3.-Dd4Ee5Ff6Gg7Hh8Ii9_Jj0Kk1Ll2",
"tenant": "ffff5f5f-aa6a-bb7b-cc8c-dddddd9d9d9d"
}
輸出包含 appId
和 password
值。 將這些值儲存為 client_id
和 client_secret
的值以在 Prometheus 遠端寫入設定中使用。密碼或用戶端密碼值僅會在建立時顯示,且稍後無法進行擷取。 若遺失,您必須建立新的用戶端密碼。
如需詳細資訊,請參閱 az ad 應用程式建立 和 az ad sp create-for-rbac 。
遠端寫入是在 Prometheus 設定檔 prometheus.yml
或 Prometheus Operator 中所設定。
如需設定遠端寫入的詳細資訊,請參閱 Prometheus.io 文章:設定 。 如需微調遠端寫入設定的詳細資訊,請參閱遠端寫入微調 。
若要將資料傳送至 Azure 監視器工作區,請將下列區段新增至自我管理 Prometheus 執行個體的設定檔 (prometheus.yml)。
remote_write:
- url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
# AzureAD configuration.
# The Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
azuread:
cloud: 'AzurePublic'
managed_identity:
client_id: "<client-id of the managed identity>"
oauth:
client_id: "<client-id from the Entra app>"
client_secret: "<client secret from the Entra app>"
tenant_id: "<Azure subscription tenant Id>"
Prometheus 運算子
如果您位於執行 Prometheus 運算子的 Kubernetes 叢集上,請遵循下列步驟將資料傳送至您的 Azure 監視器工作區。
如果您使用 Microsoft Entra ID 驗證,請使用 base64 編碼轉換該密碼,然後將密碼套用至 Kubernetes 叢集。 將下列程式碼儲存到 yaml 檔案中。 如果您使用受控識別,請略過此步驟。
apiVersion: v1
kind: Secret
metadata:
name: remote-write-secret
namespace: monitoring # Replace with namespace where Prometheus Operator is deployed.
type: Opaque
data:
password: <base64-encoded-secret>
套用祕密。
# set context to your cluster
az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name>
kubectl apply -f <remote-write-secret.yaml>
更新 Prometheus 運算子中遠端寫入區段的值。 複製下列 YAML 並將其儲存為檔案。 如需 Prometheus 運算子中 Azure 監視器工作區遠端寫入規格的詳細資料,請參閱 Prometheus 運算子文件 。
prometheus:
prometheusSpec:
remoteWrite:
- url: "<metrics ingestion endpoint for your Azure Monitor workspace>"
azureAd:
# AzureAD configuration.
# The Azure Cloud. Options are 'AzurePublic', 'AzureChina', or 'AzureGovernment'.
cloud: 'AzurePublic'
managedIdentity:
clientId: "<clientId of the managed identity>"
oauth:
clientId: "<clientId of the Entra app>"
clientSecret:
name: remote-write-secret
key: password
tenantId: "<Azure subscription tenant Id>"
使用 helm,使用上述 yaml 檔案更新遠端寫入設定。
helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack --namespace <namespace where Prometheus Operator is deployed>
url
參數指定 Azure 監視器工作區的計量擷取端點。 它可以在 Azure 入口網站中 Azure 監視器工作區的 [概觀] 頁面上找到。
視您的實作而定,請使用 managed_identity
或 oauth
進行 Microsoft Entra ID 應用程式驗證。 移除您未使用的物件。
使用下列 Azure CLI 命令來尋找受控識別的用戶端識別碼:
az identity list --resource-group <resource group name>
如需詳細資訊,請參閱 az 身分識別清單 。
若要在入口網站中尋找受控識別驗證的用戶端,請前往 Azure 入口網站中 [受控識別] 頁面,然後選取相關的身分識別名稱。 從 [身分識別概觀] 頁面複製 [用戶端識別碼] 的值。
若要尋找 Microsoft Entra ID 應用程式的用戶端識別碼,請使用下列 CLI,或參閱使用 Azure 入口網站建立 Microsoft Entra ID 應用程式 一節中的第一個步驟。
$ az ad app list --display-name < application name>
如需詳細資訊,請參閱 az ad 應用程式清單 。
注意
編輯設定檔之後,請重新啟動 Prometheus 以套用變更。
驗證遠端寫入資料正在流動
使用下列方法確認 Prometheus 資料已傳送至您的 Azure 監視器工作區。
搭配 PromQL 的 Azure 監視器計量瀏覽器
若要檢查計量是否流向 Azure 監視器工作區,請從 Azure 入口網站中的 Azure 監視器工作區選取 [計量] 。 使用計量瀏覽器來查詢您預期從自我管理 Prometheus 環境傳回的計量。 如需詳細資訊,請參閱計量瀏覽器 。
Azure 監視器工作區中的 Prometheus 總管
Prometheus Explorer 提供與 Azure 環境中的 Prometheus 計量互動的便捷方式,讓監視和疑難排解更有效率。 若要使用 Prometheus 總管,請前往 Azure 入口網站中的 Azure 監視器工作區,然後選取 [Prometheus 總管] 以查詢您預期自我管理 Prometheus 環境傳回的計量。
如需詳細資訊,請參閱 Prometheus 總管 。
Grafana
在 Grafana 中使用 PromQL 查詢來驗證結果傳回預期的資料。 若要設定 Grafana,請參閱使用受控的 Prometheus 取得 Grafana 設定
針對遠端寫入進行疑難排解
如果遠端資料未出現在 Azure 監視器工作區中,請參閱針對常見問題和解決方案的遠端寫入進行疑難排解 。
下一步