إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة الهوية المدارة بواسطة Microsoft Entra pod (معاينة)

توضح هذه المقالة كيفية إعداد الكتابة عن بعد لخدمة Azure Monitor المدارة ل Prometheus باستخدام مصادقة الهوية المدارة بواسطة Microsoft Entra pod (معاينة).

إشعار

يجب إعداد حاوية sidecar للكتابة عن بعد الموضحة في هذه المقالة فقط باستخدام الخطوات التالية، وفقط إذا كان نظام مجموعة Azure Kubernetes Service (AKS) قد تم تمكين Microsoft Entra pod بالفعل. تم إهمال الهويات المدارة بواسطة Microsoft Entra pod لاستبدالها هوية حمل عمل Microsoft Entra. نوصي باستخدام مصادقة هوية حمل عمل Microsoft Entra.

المتطلبات الأساسية

الإصدارات المدعومة

مطلوب إصدارات Prometheus أكبر من الإصدار 2.45 لمصادقة الهوية المدارة.

مساحة عمل Azure Monitor

تتناول هذه المقالة إرسال مقاييس Prometheus إلى مساحة عمل Azure Monitor. لإنشاء مساحة عمل Azure monitor، راجع إدارة مساحة عمل Azure Monitor.

الأذونات

مطلوب أذونات المسؤول لنظام المجموعة أو المورد لإكمال الخطوات الواردة في هذه المقالة.

إعداد تطبيق للهوية المدارة بواسطة Microsoft Entra pod

تتضمن عملية إعداد الكتابة عن بعد ل Prometheus لتطبيق باستخدام مصادقة الهوية المدارة بواسطة Microsoft Entra pod إكمال المهام التالية:

  1. تسجيل هوية مدارة معينة من قبل المستخدم باستخدام معرف Microsoft Entra.
  2. تعيين أدوار عامل تشغيل الهوية المدارة والمساهم في الجهاز الظاهري إلى الهوية المدارة.
  3. تعيين دور Monitoring Metrics Publisher للهوية المدارة المعينة من قبل المستخدم.
  4. إنشاء ربط هوية Azure.
  5. أضف تسمية aadpodidbinding إلى جراب Prometheus.
  6. نشر حاوية sidecar لإعداد الكتابة عن بعد.

يتم وصف المهام في الأقسام التالية.

تسجيل هوية مدارة باستخدام معرف Microsoft Entra

إنشاء هوية مدارة معينة من قبل المستخدم أو تسجيل هوية مدارة حالية يعينها المستخدم.

للحصول على معلومات حول إنشاء هوية مدارة، راجع إعداد الكتابة عن بعد لخدمة Azure Monitor المدارة ل Prometheus باستخدام مصادقة الهوية المدارة.

تعيين أدوار عامل تشغيل الهوية المدارة والمساهم في الجهاز الظاهري إلى الهوية المدارة

az role assignment create --role "Managed Identity Operator" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 
          
az role assignment create --role "Virtual Machine Contributor" --assignee <managed identity clientID> --scope <Node ResourceGroup Id> 

تحتوي مجموعة موارد العقدة لمجموعة AKS على الموارد التي تستخدمها في خطوات أخرى في هذه العملية. تحتوي مجموعة الموارد هذه على الاسم MC_<AKS-RESOURCE-GROUP>_<AKS-CLUSTER-NAME>_<REGION>. يمكنك العثور على اسم مجموعة الموارد باستخدام قائمة Resource groups في مدخل Microsoft Azure.

تعيين دور Monitoring Metrics Publisher إلى الهوية المدارة

az role assignment create --role "Monitoring Metrics Publisher" --assignee <managed identity clientID> --scope <NodeResourceGroupResourceId> 

إنشاء ربط هوية Azure

تتطلب الهوية المدارة المعينة من قبل المستخدم ربط هوية للهوية لاستخدامها كهوية مدارة بواسطة pod.

انسخ YAML التالي إلى ملف aadpodidentitybinding.yaml :


apiVersion: "aadpodidentity.k8s.io/v1" 

kind: AzureIdentityBinding 
metadata: 
name: demo1-azure-identity-binding 
spec: 
AzureIdentity: “<AzureIdentityName>” 
Selector: “<AzureIdentityBindingSelector>” 

شغّل الأمر التالي:

kubectl create -f aadpodidentitybinding.yaml 

إضافة تسمية aadpodidbinding إلى جراب Prometheus

aadpodidbinding يجب إضافة التسمية إلى جراب Prometheus حتى تصبح الهوية المدارة بواسطة pod سارية المفعول. يمكنك إضافة التسمية عن طريق تحديث ملف deployment.yaml أو عن طريق إدخال التسميات عند نشر حاوية sidecar كما هو موضح في القسم التالي.

نشر حاوية sidecar لإعداد الكتابة عن بعد

  1. انسخ YAML التالي واحفظه في ملف. يستخدم YAML المنفذ 8081 كمنفذ الاستماع. إذا كنت تستخدم منفذا مختلفا، فعدل هذه القيمة في YAML.

    prometheus: 
      prometheusSpec: 
        podMetadata: 
          labels: 
            aadpodidbinding: <AzureIdentityBindingSelector> 
        externalLabels: 
          cluster: <AKS-CLUSTER-NAME> 
        remoteWrite: 
        - url: 'http://localhost:8081/api/v1/write' 
        containers: 
        - name: prom-remotewrite 
          image: <CONTAINER-IMAGE-VERSION> 
          imagePullPolicy: Always 
          ports: 
            - name: rw-port 
          containerPort: 8081 
          livenessProbe: 
            httpGet: 
              path: /health
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
          readinessProbe: 
             httpGet: 
              path: /ready
              port: rw-port
              initialDelaySeconds: 10 
              timeoutSeconds: 10 
        env: 
          - name: INGESTION_URL 
            value: <INGESTION_URL> 
          - name: LISTENING_PORT 
            value: '8081' 
          - name: IDENTITY_TYPE 
            value: userAssigned 
          - name: AZURE_CLIENT_ID 
            value: <MANAGED-IDENTITY-CLIENT-ID> 
          # Optional parameter 
          - name: CLUSTER 
            value: <CLUSTER-NAME>         
    
  2. استبدل القيم التالية في YAML:

    قيمة ‏‏الوصف
    <AKS-CLUSTER-NAME> اسم نظام مجموعة AKS الخاص بك.
    <CONTAINER-IMAGE-VERSION> mcr.microsoft.com/azuremonitor/containerinsights/ciprod/prometheus-remote-write/images:prom-remotewrite-20240617.1
    إصدار صورة حاوية الكتابة عن بعد.
    <INGESTION-URL> قيمة نقطة نهاية استيعاب المقاييس من صفحة نظرة عامة لمساحة عمل Azure Monitor.
    <MANAGED-IDENTITY-CLIENT-ID> قيمة معرف العميل من صفحة نظرة عامة للهوية المدارة.
    <CLUSTER-NAME> اسم نظام المجموعة الذي يعمل عليه Prometheus.

    هام

    بالنسبة إلى سحابة Azure Government، أضف متغيرات البيئة التالية في env قسم من ملف YAML:

    - name: INGESTION_AAD_AUDIENCE value: https://monitor.azure.us/

  3. استخدم Helm لتطبيق ملف YAML وتحديث تكوين Prometheus الخاص بك:

    # set the 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.

الخطوات التالية