Odesílání dat Prometheus do služby Azure Monitor pomocí ověřování ID úloh Microsoft Entra (Preview)
Tento článek popisuje, jak nastavit vzdálené zápisy pro odesílání dat ze spravovaného clusteru Azure Monitoru pomocí ověřování ID úloh Microsoft Entra.
Požadavky
Pro ověřování aplikace Microsoft Entra ID se vyžadují verze Prometheus větší než verze 2.48.
Cluster s příznaky funkcí, které jsou specifické pro OpenID Připojení (OIDC) a adresu URL vystavitele OIDC:
- Spravované clustery (Azure Kubernetes Service, Amazon Elastic Kubernetes Service a Google Kubernetes Engine) najdete v tématu Spravované clustery – ID úloh Microsoft Entra.
- Informace o samoobslužných clusterech najdete v tématu Samoobslužné clustery – ID úloh Microsoft Entra.
Nainstalovaný webhook pro ztlumení přístupu. Další informace naleznete v tématu Mutating Access Webhook - ID úloh Microsoft Entra.
Prometheus spuštěný v clusteru. Tento článek předpokládá, že cluster Prometheus je nastavený pomocí zásobníku kube-prometheus, ale prometheus můžete nastavit pomocí jiných metod.
Nastavení úlohy pro ID úloh Microsoft Entra
Proces nastavení vzdáleného zápisu Prometheus pro úlohu pomocí ověřování ID úloh Microsoft Entra zahrnuje dokončení následujících úloh:
- Nastavte identitu úlohy.
- Vytvořte aplikaci Microsoft Entra nebo spravovanou identitu přiřazenou uživatelem a udělte oprávnění.
- Přiřaďte aplikaci roli Vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru.
- Vytvořte nebo aktualizujte svůj účet služby Kubernetes Prometheus.
- Vytvořte přihlašovací údaje federované identity mezi identitou a vystavitelem účtu služby a předmětem.
- Nasaďte kontejner sajdkáru pro nastavení vzdáleného zápisu.
Úkoly jsou popsány v následujících částech.
Nastavení identity úlohy
Pokud chcete nastavit identitu úlohy, exportujte následující proměnné prostředí:
# [OPTIONAL] Set this if you're using a Microsoft Entra application
export APPLICATION_NAME="<your application name>"
# [OPTIONAL] Set this only if you're using a user-assigned managed identity
export USER_ASSIGNED_IDENTITY_NAME="<your user-assigned managed identity name>"
# Environment variables for the Kubernetes service account and federated identity credential
export SERVICE_ACCOUNT_NAMESPACE="<namespace of Prometheus pod>"
export SERVICE_ACCOUNT_NAME="<name of service account associated with Prometheus pod>"
export SERVICE_ACCOUNT_ISSUER="<your service account issuer URL>"
Pokud SERVICE_ACCOUNT_NAME
chcete zjistit, jestli je účet služby (oddělený od výchozího účtu služby) již přidružený k podu Prometheus. V podu Prometheus vyhledejte hodnotu serviceaccountName
nebo serviceAccount
(zastaralá spec
). Tuto hodnotu použijte, pokud existuje. Pokud serviceaccountName
a serviceAccount
neexistuje, zadejte název účtu služby, který chcete přidružit k podu Prometheus.
Vytvoření aplikace Microsoft Entra nebo spravované identity přiřazené uživatelem a udělení oprávnění
Vytvořte aplikaci Microsoft Entra nebo spravovanou identitu přiřazenou uživatelem a udělte oprávnění k publikování metrik do pracovního prostoru služby Azure Monitor:
# create a Microsoft Entra application
az ad sp create-for-rbac --name "${APPLICATION_NAME}"
# create a user-assigned managed identity if you use a user-assigned managed identity for this article
az identity create --name "${USER_ASSIGNED_IDENTITY_NAME}" --resource-group "${RESOURCE_GROUP}"
Přiřazení role Vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru k aplikaci nebo spravované identitě
Informace o přiřazování role najdete v tématu Přiřazení role vydavatele metrik monitorování v pravidle shromažďování dat pracovního prostoru spravované identitě.
Vytvoření nebo aktualizace účtu služby Kubernetes Prometheus
Účet služby Kubernetes se často vytvoří a přidružuje k podu, na kterém běží kontejner Prometheus. Pokud používáte zásobník kube-prometheus, kód automaticky vytvoří účet služby prometheus-kube-prometheus-prometheus-prometheus.
Pokud k Prometheus není přidružený žádný účet služby Kubernetes s výjimkou výchozího účtu služby, vytvořte nový účet služby speciálně pro pod, na kterém běží Prometheus.
Pokud chcete vytvořit účet služby, spusťte následující příkaz kubectl:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: service account
metadata:
annotations:
azure.workload.identity/client-id: ${APPLICATION_CLIENT_ID:-$USER_ASSIGNED_IDENTITY_CLIENT_ID}
name: ${SERVICE_ACCOUNT_NAME}
namespace: ${SERVICE_ACCOUNT_NAMESPACE}
EOF
Pokud je k vašemu podu přidružený jiný účet služby Kubernetes, než je výchozí účet služby, přidejte do svého účtu služby následující poznámku:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/client-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_CLIENT_ID}" –overwrite
Pokud vaše aplikace Microsoft Entra nebo spravovaná identita přiřazená uživatelem není ve stejném tenantovi jako váš cluster, přidejte do svého účtu služby následující poznámku:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/tenant-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_TENANT_ID}" –overwrite
Vytvoření přihlašovacích údajů federované identity mezi identitou a vystavitelem účtu služby a předmětem
Vytvoření federovaných přihlašovacích údajů pomocí Azure CLI
Spravovaná identita přiřazená uživatelem
az identity federated-credential create \
--name "kubernetes-federated-credential" \
--identity-name "${USER_ASSIGNED_IDENTITY_NAME}" \
--resource-group "${RESOURCE_GROUP}" \
--issuer "${SERVICE_ACCOUNT_ISSUER}" \
--subject "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}"
Aplikace Microsoft Entra
# Get the ObjectID of the Microsoft Entra app.
export APPLICATION_OBJECT_ID="$(az ad app show --id ${APPLICATION_CLIENT_ID} --query id -otsv)"
# Add a federated identity credential.
cat <<EOF > params.json
{
"name": "kubernetes-federated-credential",
"issuer": "${SERVICE_ACCOUNT_ISSUER}",
"subject": "system:serviceaccount:${SERVICE_ACCOUNT_NAMESPACE}:${SERVICE_ACCOUNT_NAME}",
"description": "Kubernetes service account federated credential",
"audiences": [
"api://AzureADTokenExchange"
]
}
EOF
az ad app federated-credential create --id ${APPLICATION_OBJECT_ID} --parameters @params.json
Nasazení kontejneru sajdkáru pro nastavení vzdáleného zápisu
Důležité
Pod Prometheus musí mít následující popisek: azure.workload.identity/use: "true"
Kontejner vzdáleného zápisu sajdkáře vyžaduje následující hodnoty prostředí:
INGESTION_URL
: Koncový bod příjmu metrik zobrazený na stránce Přehled pracovního prostoru služby Azure MonitorLISTENING_PORT
:8081
(podporuje se jakýkoli port)IDENTITY_TYPE
:workloadIdentity
Zkopírujte následující YAML a uložte ho do souboru. YAML používá jako naslouchající port port 8081. Pokud používáte jiný port, upravte tuto hodnotu v YAML.
prometheus: prometheusSpec: externalLabels: cluster: <AKS-CLUSTER-NAME> podMetadata: labels: azure.workload.identity/use: "true" ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write remoteWrite: - url: 'http://localhost:8081/api/v1/write' containers: - name: prom-remotewrite image: <CONTAINER-IMAGE-VERSION> imagePullPolicy: Always ports: - name: rw-port containerPort: 8081 env: - name: INGESTION_URL value: <INGESTION_URL> - name: LISTENING_PORT value: '8081' - name: IDENTITY_TYPE value: workloadIdentity
Nahraďte v YAML následující hodnoty:
Hodnota Popis <CLUSTER-NAME>
Název clusteru AKS <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/prometheus/promdev/prom-remotewrite:prom-remotewrite-20230906.1
Verze image vzdáleného zápisu kontejneru pro zápis<INGESTION-URL>
Hodnota koncového bodu příjmu metrik ze stránky Přehled pracovního prostoru služby Azure Monitor. Použijte Helm k instalaci souboru YAML a aktualizaci konfigurace Prometheus:
# set a context to your cluster az aks get-credentials -g <aks-rg-name> -n <aks-cluster-name> # use Helm to update your remote write config helm upgrade -f <YAML-FILENAME>.yml prometheus prometheus-community/kube-prometheus-stack -namespace <namespace where Prometheus pod resides>
Ověření a řešení potíží
Informace o ověřování a řešení potíží najdete v tématu Řešení potíží se vzdáleným zápisem a spravovanou službou Azure Monitor pro vzdálený zápis pro Prometheus.
Další kroky
- Shromažďování metrik Promethea z clusteru AKS
- Další informace o spravované službě Azure Monitor pro Prometheus
- Vzdálený zápis ve spravované službě Azure Monitor pro Prometheus
- Odeslání dat Prometheus do služby Azure Monitor pomocí ověřování Microsoft Entra
- Odesílání dat Prometheus do služby Azure Monitor pomocí ověřování spravované identity
- Odeslání dat Prometheus do služby Azure Monitor pomocí ověřování spravované podem Microsoft Entra (Preview)