Megosztás a következőn keresztül:


Prometheus-adatok küldése az Azure Monitorba Microsoft Entra Számítási feladat ID hitelesítéssel

Ez a cikk azt ismerteti, hogyan állíthat be távoli írást az adatok Azure Monitor által felügyelt Prometheus-fürtből való küldéséhez Microsoft Entra Számítási feladat ID hitelesítés használatával.

Előfeltételek

  • A Microsoft Entra ID-alkalmazások hitelesítéséhez a 2.48-nál nagyobb Prometheus-verziók szükségesek.
  • A fürtben futó Prometheus. Ez a cikk feltételezi, hogy a Prometheus-fürt a kube-prometheus verem használatával van beállítva, de a Prometheust más módszerekkel is beállíthatja.

Távoli írás beállítása Microsoft Entra Számítási feladat ID

A Prometheus távoli írásának Microsoft Entra Számítási feladat ID hitelesítéssel történő beállításának folyamata a következő feladatokat foglalja magában:

  1. Engedélyezze az OpenID Connectet, és jegyezze fel a kiállító URL-címét.
  2. Állítsa be a beléptetési webhook mutációs beállítását.
  3. Állítsa be a számítási feladat identitását.
  4. Hozzon létre egy Microsoft Entra-alkalmazást vagy felhasználó által hozzárendelt felügyelt identitást, és adjon meg engedélyeket.
  5. Rendelje hozzá a monitorozási metrikák közzétevői szerepkörét a munkaterület adatgyűjtési szabályához az alkalmazáshoz.
  6. Hozza létre vagy frissítse a Kubernetes szolgáltatásfiók Prometheus podját.
  7. Összevont identitás hitelesítő adatainak létrehozása az identitás és a szolgáltatásfiók kiállítója és tárgya között.
  8. Helyezzen üzembe egy oldalkocsis tárolót a távoli írás beállításához.

A feladatokat a következő szakaszok ismertetik.

OpenID Connect engedélyezése és a kiállító lekérdezése

Az OpenID Connect (OIDC) AKS-fürtön való engedélyezéséhez kövesse az OpenID Connect-szolgáltató létrehozása az AKS-en című témakör utasításait.

Ha engedélyezve van, jegyezze fel a SERVICE_ACCOUNT_ISSUER, amely lényegében az OIDC-kiállító URL-címe. Az OIDC-kiállító URL-címének lekéréséhez futtassa az az aks show parancsot. Cserélje le a fürt és az erőforráscsoport nevének alapértelmezett értékeit.

az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv

Alapértelmezés szerint a kiállító az alap URL-címet https://{region}.oic.prod-aks.azure.comhasználja, ahol az érték {region} megegyezik az AKS-fürt üzembe helyezésének helyével.

Más felügyelt fürtök (az Amazon Elastic Kubernetes Service és a Google Kubernetes Engine) esetében lásd: Felügyelt fürtök – Microsoft Entra Számítási feladat ID. Az ön által felügyelt fürtökről az önkiszolgáló fürtök – Microsoft Entra Számítási feladat ID című témakörben olvashat.

A beléptetési webhook mutálásának beállítása

Az összevont hitelesítő adatok naprakészen tartásához állítsa be a beléptetési webhookok mutációs beállítását. Lásd: A beléptetési webhook mutálása – Microsoft Entra Számítási feladat ID beállításához.

A számítási feladat identitásának beállítása

A számítási feladat identitásának beállításához exportálja a következő környezeti változókat:

# [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 where Prometheus pod is running>"
export SERVICE_ACCOUNT_NAME="<name of service account associated with Prometheus pod. See below for more details>"
export SERVICE_ACCOUNT_ISSUER="<your service account (or OIDC) issuer URL>"

Ellenőrizze SERVICE_ACCOUNT_NAME, hogy egy (az alapértelmezett szolgáltatásfióktól eltérő) szolgáltatásfiók már társítva van-e a Prometheus podhoz. Keresse meg a Prometheus-pod értékét serviceaccountName vagy serviceAccount (elavult) spec értékét. Használja ezt az értéket, ha létezik. A Prometheus podhoz társított szolgáltatásfiók megkereséséhez futtassa az alábbi kubectl parancsot:

kubectl get pods/<Promethuespodname> -o yaml

Ha serviceaccountName nem létezik, serviceAccount adja meg a Prometheus-podhoz társítani kívánt szolgáltatásfiók nevét.

Microsoft Entra-alkalmazás vagy felhasználó által hozzárendelt felügyelt identitás létrehozása és engedélyek megadása

Hozzon létre egy Microsoft Entra-alkalmazást vagy egy felhasználó által hozzárendelt felügyelt identitást, és adjon engedélyt metrikák közzétételére az Azure Monitor-munkaterületen:

# 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}"

A monitorozási metrikák közzétevői szerepkörének hozzárendelése a munkaterület adatgyűjtési szabályához az alkalmazáshoz vagy a felügyelt identitáshoz

A szerepkör hozzárendelésével kapcsolatos információkért lásd : A figyelési metrikák közzétevői szerepkörének hozzárendelése a munkaterület adatgyűjtési szabályában a felügyelt identitáshoz.

A Kubernetes szolgáltatásfiók Prometheus pod létrehozása vagy frissítése

Gyakran létrejön egy Kubernetes-szolgáltatásfiók, amely a Prometheus-tárolót futtató podhoz van társítva. Ha a kube-prometheus vermet használja, a kód automatikusan létrehozza a prometheus-kube-prometheus-prometheus szolgáltatásfiókot.

Ha az alapértelmezett szolgáltatásfiók kivételével nincs Kubernetes-szolgáltatásfiók a Prometheushoz társítva, hozzon létre egy új szolgáltatásfiókot kifejezetten a Prometheust futtató podhoz.

A szolgáltatásfiók létrehozásához futtassa a következő kubectl parancsot:

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

Ha az alapértelmezett szolgáltatásfióktól eltérő Kubernetes-szolgáltatásfiók van társítva a podhoz, adja hozzá a következő megjegyzést a szolgáltatásfiókhoz:

kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/client-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_CLIENT_ID}" –overwrite

Ha a Microsoft Entra-alkalmazás vagy a felhasználó által hozzárendelt felügyelt identitás nem ugyanabban a bérlőben van, mint a fürt, adja hozzá a következő megjegyzést a szolgáltatásfiókhoz:

kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/tenant-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_TENANT_ID}" –overwrite

Összevont identitás hitelesítő adatainak létrehozása az identitás és a szolgáltatásfiók kiállítója és tárgya között

Összevont hitelesítő adatok létrehozása az Azure CLI használatával.

Felhasználó által hozzárendelt felügyelt identitás

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}"

Microsoft Entra-alkalmazás

# 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

Sidecar-tároló üzembe helyezése távoli írás beállításához

Fontos

A Prometheus podnak a következő címkével kell rendelkeznie: azure.workload.identity/use: "true"

A távoli írási oldalkocsi tárolóhoz a következő környezeti értékek szükségesek:

  • INGESTION_URL: Az Azure Monitor-munkaterület Áttekintés lapján megjelenő metrikák betöltési végpontja
  • LISTENING_PORT: 8081 (bármely port támogatott)
  • IDENTITY_TYPE: workloadIdentity
  1. Másolja ki a következő YAML-et, és mentse egy fájlba. A YAML a 8081-es portot használja figyelési portként. Ha másik portot használ, módosítsa ezt az értéket a YAML-ben.

    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
    
  2. Cserélje le a következő értékeket a YAML-ben:

    Érték Leírás
    <CLUSTER-NAME> Az AKS-fürt neve.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
    A távoli írási tároló lemezképének verziója.
    <INGESTION-URL> A Metrikák betöltési végpontjának értéke az Azure Monitor-munkaterület Áttekintés lapján.
  3. A Helm használatával alkalmazza a YAML-fájlt, és frissítse a Prometheus-konfigurációt:

    # 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> 
    

Ellenőrzés és hibaelhárítás

Az ellenőrzéssel és hibaelhárítással kapcsolatos információkért tekintse meg a Távoli írás és az Azure Monitor által felügyelt szolgáltatás hibaelhárítását a Prometheus távoli írásához.

Következő lépések