إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة هوية حمل عمل Microsoft Entra
توضح هذه المقالة كيفية إعداد الكتابة عن بعد لإرسال البيانات من مجموعة Prometheus المدارة من Azure Monitor باستخدام مصادقة هوية حمل عمل Microsoft Entra.
المتطلبات الأساسية
- مطلوب إصدارات Prometheus أكبر من الإصدار 2.48 لمصادقة تطبيق Microsoft Entra ID.
- Prometheus قيد التشغيل في نظام المجموعة. تفترض هذه المقالة أنه تم إعداد مجموعة Prometheus باستخدام مكدس kube-prometheus، ولكن يمكنك إعداد Prometheus باستخدام أساليب أخرى.
إعداد الكتابة عن بعد باستخدام هوية حمل عمل Microsoft Entra
تتضمن عملية إعداد الكتابة عن بعد في Prometheus باستخدام مصادقة هوية حمل عمل Microsoft Entra إكمال المهام التالية:
- قم بتمكين OpenID Connect ولاحظ عنوان URL المصدر.
- إعداد إخطار على الويب الخاص بالدخول المتحور.
- إعداد هوية حمل العمل.
- إنشاء تطبيق Microsoft Entra أو الهوية المدارة المعينة من قبل المستخدم ومنح الأذونات.
- تعيين دور Monitoring Metrics Publisher في قاعدة تجميع بيانات مساحة العمل إلى التطبيق.
- إنشاء أو تحديث حساب خدمة Kubernetes الخاص بك Prometheus pod.
- إنشاء بيانات اعتماد الهوية الموحدة بين الهوية ومصدر حساب الخدمة والموضوع.
- نشر حاوية sidecar لإعداد الكتابة عن بعد.
يتم وصف المهام في الأقسام التالية.
تمكين OpenID Connect والاستعلام عن المصدر
لتمكين OpenID Connect (OIDC) على نظام مجموعة AKS، اتبع الإرشادات الواردة في إنشاء موفر OpenID Connect على AKS.
بمجرد التمكين، قم بتدوين SERVICE_ACCOUNT_ISSUER الذي هو في الأساس عنوان URL لمصدر OIDC. للحصول على عنوان URL لمصدر OIDC، قم بتشغيل الأمر az aks show . استبدل القيم الافتراضية لاسم نظام المجموعة واسم مجموعة الموارد.
az aks show --name myAKScluster --resource-group myResourceGroup --query "oidcIssuerProfile.issuerUrl" -o tsv
بشكل افتراضي، يتم تعيين المصدر لاستخدام عنوان URL https://{region}.oic.prod-aks.azure.com
الأساسي ، حيث تطابق قيمة الموقع {region}
الذي يتم نشر نظام مجموعة AKS فيه.
بالنسبة للمجموعات المدارة الأخرى (Amazon Elastic Kubernetes Service وGoogle Kubernetes Engine)، راجع المجموعات المدارة - هوية حمل عمل Microsoft Entra. بالنسبة للمجموعات المدارة ذاتيا، راجع أنظمة المجموعات المدارة ذاتيا - هوية حمل عمل Microsoft Entra.
إعداد إخطار على الويب الخاص بالدخول المتحور
قم بإعداد إخطار على الويب الخاص بالدخول المتغير للحفاظ على بيانات الاعتماد الموحدة محدثة. راجع تحور إخطار على الويب للقبول - هوية حمل عمل Microsoft Entra لإعداده.
إعداد هوية حمل العمل
لإعداد هوية حمل العمل، قم بتصدير متغيرات البيئة التالية:
# [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>"
بالنسبة SERVICE_ACCOUNT_NAME
إلى ، تحقق لمعرفة ما إذا كان حساب خدمة (منفصل عن حساب الخدمة الافتراضي ) مقترنا بالفعل بجراب Prometheus. ابحث عن قيمة serviceaccountName
أو serviceAccount
(مهملة) في spec
جراب Prometheus الخاص بك. استخدم هذه القيمة إذا كانت موجودة. للعثور على حساب الخدمة المقترن بجراب Prometheus، قم بتشغيل الأمر kubectl أدناه:
kubectl get pods/<Promethuespodname> -o yaml
serviceAccount
إذا serviceaccountName
لم يكن موجودا، أدخل اسم حساب الخدمة الذي تريد إقرانه بجراب Prometheus الخاص بك.
إنشاء تطبيق Microsoft Entra أو الهوية المدارة المعينة من قبل المستخدم ومنح الأذونات
إنشاء تطبيق Microsoft Entra أو هوية مدارة يعينها المستخدم ومنح الإذن لنشر المقاييس إلى مساحة عمل 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}"
تعيين دور Monitoring Metrics Publisher في قاعدة تجميع بيانات مساحة العمل للتطبيق أو الهوية المدارة
للحصول على معلومات حول تعيين الدور، راجع تعيين دور Monitoring Metrics Publisher على قاعدة تجميع بيانات مساحة العمل إلى الهوية المدارة.
إنشاء أو تحديث حساب خدمة Kubernetes الخاص بك Prometheus pod
غالبا ما يتم إنشاء حساب خدمة Kubernetes وربطه بالجراب الذي يقوم بتشغيل حاوية Prometheus. إذا كنت تستخدم مكدس kube-prometheus، فإن التعليمات البرمجية تنشئ تلقائيا حساب خدمة prometheus-kube-prometheus-prometheus.
إذا لم يكن هناك حساب خدمة Kubernetes باستثناء حساب الخدمة الافتراضي مقترن ب Prometheus، قم بإنشاء حساب خدمة جديد خصيصا للحجيرة التي تقوم بتشغيل Prometheus.
لإنشاء حساب الخدمة، قم بتشغيل الأمر 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
إذا كان حساب خدمة Kubernetes غير حساب الخدمة الافتراضي مقترنا بالجراب الخاص بك، أضف التعليق التوضيحي التالي إلى حساب الخدمة الخاص بك:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/client-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_CLIENT_ID}" –overwrite
إذا لم يكن تطبيق Microsoft Entra أو الهوية المدارة المعينة من قبل المستخدم في نفس المستأجر مثل نظام المجموعة الخاص بك، أضف التعليق التوضيحي التالي إلى حساب الخدمة الخاص بك:
kubectl annotate sa ${SERVICE_ACCOUNT_NAME} -n ${SERVICE_ACCOUNT_NAMESPACE} azure.workload.identity/tenant-id="${APPLICATION_OR_USER_ASSIGNED_IDENTITY_TENANT_ID}" –overwrite
إنشاء بيانات اعتماد الهوية الموحدة بين الهوية ومصدر حساب الخدمة والموضوع
إنشاء بيانات اعتماد موحدة باستخدام Azure CLI.
الهوية المُدارة التي يعيّنها المُستخدم
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
# 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 لإعداد الكتابة عن بعد
هام
يجب أن تحتوي جراب Prometheus على التسمية التالية: azure.workload.identity/use: "true"
تتطلب حاوية sidecar للكتابة عن بعد قيم البيئة التالية:
INGESTION_URL
: نقطة نهاية استيعاب المقاييس المعروضة في صفحة نظرة عامة لمساحة عمل Azure MonitorLISTENING_PORT
:8081
(أي منفذ مدعوم)IDENTITY_TYPE
:workloadIdentity
انسخ YAML التالي واحفظه في ملف. يستخدم YAML المنفذ 8081 كمنفذ الاستماع. إذا كنت تستخدم منفذا مختلفا، فعدل هذه القيمة في 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
استبدل القيم التالية في YAML:
قيمة الوصف <CLUSTER-NAME>
اسم نظام مجموعة AKS الخاص بك. <CONTAINER-IMAGE-VERSION>
mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
إصدار صورة حاوية الكتابة عن بعد.<INGESTION-URL>
قيمة نقطة نهاية استيعاب المقاييس من صفحة نظرة عامة لمساحة عمل Azure Monitor. استخدم Helm لتطبيق ملف YAML وتحديث تكوين 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>
التحقق واستكشاف الأخطاء وإصلاحها
للحصول على معلومات التحقق واستكشاف الأخطاء وإصلاحها، راجع استكشاف أخطاء الكتابة عن بعد وإصلاحها والخدمة المدارة من Azure Monitor للكتابة عن بعد في Prometheus.
الخطوات التالية
- جمع مقاييس Prometheus من مجموعة AKS
- تعرف على المزيد حول خدمة Azure Monitor المدارة ل Prometheus
- الكتابة عن بعد في خدمة Azure Monitor المدارة ل Prometheus
- إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة Microsoft Entra
- إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة الهوية المدارة
- إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة الهوية المدارة بواسطة Microsoft Entra pod (معاينة)