إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة Microsoft Entra
توضح هذه المقالة كيفية إعداد الكتابة عن بعد لإرسال البيانات من خادم Prometheus المدار ذاتيا يعمل في نظام مجموعة Azure Kubernetes Service (AKS) أو مجموعة Kubernetes الممكنة في Azure Arc باستخدام مصادقة Microsoft Entra وحاوية سيارة جانبية يوفرها Azure Monitor. لاحظ أنه يمكنك أيضا تكوين الكتابة عن بعد مباشرة في تكوين Prometheus لنفس الشيء.
إشعار
نوصي بتكوين Prometheus الذي يعمل مباشرة على مجموعة Kubernetes الخاصة بك للكتابة عن بعد في مساحة عمل Azure Monitor. راجع إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة معرف Microsoft Entra لمعرفة المزيد. تستخدم الخطوات أدناه حاوية السيارة الجانبية Azure Monitor.
تكوينات نظام المجموعة
تنطبق هذه المقالة على تكوينات نظام المجموعة التالية:
- نظام مجموعة Azure Kubernetes Service
- أنظمة مجموعة Kubernetes المُمكّنة في Azure Arc
- نظام مجموعة Kubernetes قيد التشغيل في سحابة مختلفة أو محلية
إشعار
بالنسبة لمجموعة AKS أو مجموعة Kubernetes الممكنة في Azure Arc، نوصي باستخدام مصادقة الهوية المدارة. لمزيد من المعلومات، راجع خدمة Azure Monitor المدارة للكتابة عن بعد ل Prometheus للهوية المدارة.
المتطلبات الأساسية
الإصدارات المدعومة
- مطلوب إصدارات Prometheus أكبر من الإصدار 2.48 لمصادقة تطبيق Microsoft Entra ID.
مساحة عمل Azure Monitor
تتناول هذه المقالة إرسال مقاييس Prometheus إلى مساحة عمل Azure Monitor. لإنشاء مساحة عمل Azure monitor، راجع إدارة مساحة عمل Azure Monitor.
الأذونات
مطلوب أذونات المسؤول لنظام المجموعة أو المورد لإكمال الخطوات الواردة في هذه المقالة.
إعداد تطبيق لمعرف Microsoft Entra
تتضمن عملية إعداد الكتابة عن بعد ل Prometheus لتطبيق باستخدام مصادقة Microsoft Entra إكمال المهام التالية:
- تسجيل تطبيق باستخدام معرف Microsoft Entra.
- احصل على معرف العميل لتطبيق Microsoft Entra.
- تعيين دور Monitoring Metrics Publisher في قاعدة تجميع بيانات مساحة العمل إلى التطبيق.
- إنشاء مخزن مفاتيح Azure وإنشاء شهادة.
- إضافة شهادة إلى تطبيق Microsoft Entra.
- أضف برنامج تشغيل CSI والتخزين لنظام المجموعة.
- نشر حاوية sidecar لإعداد الكتابة عن بعد.
يتم وصف المهام في الأقسام التالية.
تسجيل تطبيق باستخدام معرف Microsoft Entra
أكمل الخطوات لتسجيل تطبيق باستخدام معرف Microsoft Entra وإنشاء كيان خدمة.
الحصول على معرف العميل لتطبيق Microsoft Entra
- في مدخل Microsoft Azure، انتقل إلى قائمة معرف Microsoft Entra وحدد تسجيلات التطبيق.
- في قائمة التطبيقات، انسخ قيمة معرف التطبيق (العميل) للتطبيق المسجل.
تعيين دور Monitoring Metrics Publisher في قاعدة تجميع بيانات مساحة العمل للتطبيق
يجب تعيين دور Monitoring Metrics Publisher للتطبيق في قاعدة تجميع البيانات المقترنة بمساحة عمل Azure Monitor.
في قائمة الموارد لمساحة عمل Azure Monitor، حدد Overview. بالنسبة لقاعدة جمع البيانات، حدد الارتباط.
في قائمة الموارد لقاعدة جمع البيانات، حدد Access control (IAM).
حدد Add، ثم حدد Add role assignment.
حدد دور Monitoring Metrics Publisher، ثم حدد Next.
حدد المستخدم أو المجموعة أو كيان الخدمة، ثم اختر تحديد الأعضاء. حدد التطبيق الذي قمت بإنشائه، ثم اختر تحديد.
لإكمال تعيين الدور، حدد Review + assign.
إنشاء مخزن مفاتيح Azure وإنشاء شهادة
- إذا لم يكن لديك مخزن مفاتيح Azure بالفعل، فبادر بإنشاء مخزن.
- إنشاء شهادة باستخدام الإرشادات الواردة في إضافة شهادة إلى Key Vault.
- قم بتنزيل الشهادة بتنسيق CER باستخدام الإرشادات الموجودة في تصدير شهادة من Key Vault.
إضافة شهادة إلى تطبيق Microsoft Entra
في قائمة الموارد لتطبيق Microsoft Entra، حدد الشهادات والأسرار.
في علامة التبويب Certificates ، حدد Upload certificate وحدد الشهادة التي قمت بتنزيلها.
تحذير
الشهادات لها تاريخ انتهاء صلاحية. تقع على عاتق المستخدم مسؤولية الحفاظ على صلاحية الشهادات.
إضافة برنامج تشغيل CSI والتخزين لنظام المجموعة
إشعار
تكوين برنامج تشغيل Azure Key Vault CSI هو واحد فقط من الطرق للحصول على شهادة مثبتة على جراب. تحتاج حاوية الكتابة عن بعد إلى مسار محلي إلى شهادة في الجراب فقط للقيمة <AZURE_CLIENT_CERTIFICATE_PATH>
في الخطوة نشر حاوية sidecar لإعداد الكتابة عن بعد.
هذه الخطوة مطلوبة فقط إذا لم تقم بتشغيل موفر Azure Key Vault لبرنامج تشغيل CSI لمخزن الأسرار عند إنشاء نظام المجموعة الخاص بك.
لتشغيل موفر Azure Key Vault لبرنامج تشغيل CSI لمخزن الأسرار لنظام مجموعتك، قم بتشغيل أمر Azure CLI التالي:
az aks enable-addons --addons azure-keyvault-secrets-provider --name <aks-cluster-name> --resource-group <resource-group-name>
لمنح الهوية حق الوصول إلى خزنة المفاتيح، قم بتشغيل هذه الأوامر:
# show client id of the managed identity of the cluster az aks show -g <resource-group> -n <cluster-name> --query addonProfiles.azureKeyvaultSecretsProvider.identity.clientId -o tsv # set policy to access keys in your key vault az keyvault set-policy -n <keyvault-name> --key-permissions get --spn <identity-client-id> # set policy to access secrets in your key vault az keyvault set-policy -n <keyvault-name> --secret-permissions get --spn <identity-client-id> # set policy to access certs in your key vault az keyvault set-policy -n <keyvault-name> --certificate-permissions get --spn <identity-client-id>
قم بإنشاء
SecretProviderClass
عن طريق حفظ YAML التالي في ملف يسمى secretproviderclass.yml. استبدل قيمuserAssignedIdentityID
keyvaultName
tenantId
الكائنات و لاستردادها من مخزن المفاتيح الخاص بك. للحصول على معلومات حول القيم التي يجب استخدامها، راجع توفير هوية للوصول إلى موفر Azure Key Vault لبرنامج تشغيل CSI لمخزن الأسرار.# This is a SecretProviderClass example using user-assigned identity to access your key vault apiVersion: secrets-store.csi.x-k8s.io/v1 kind: SecretProviderClass metadata: name: azure-kvname-user-msi spec: provider: azure parameters: usePodIdentity: "false" useVMManagedIdentity: "true" # Set to true for using managed identity userAssignedIdentityID: <client-id> # Set the client ID of the user-assigned managed identity to use keyvaultName: <key-vault-name> # Set to the name of your key vault cloudName: "" # [OPTIONAL for Azure] if not provided, the Azure environment defaults to AzurePublicCloud objects: | array: - | objectName: <name-of-cert> objectType: secret # object types: secret, key, or cert objectFormat: pfx objectEncoding: base64 objectVersion: "" tenantId: <tenant-id> # The tenant ID of the key vault
قم بالتطبيق
SecretProviderClass
عن طريق تشغيل الأمر التالي على نظام المجموعة:kubectl apply -f secretproviderclass.yml
نشر حاوية sidecar لإعداد الكتابة عن بعد
انسخ YAML التالي واحفظه في ملف. يستخدم YAML المنفذ 8081 كمنفذ الاستماع. إذا كنت تستخدم منفذا مختلفا، فعدل هذه القيمة في YAML.
prometheus: prometheusSpec: externalLabels: cluster: <CLUSTER-NAME> ## Azure Managed Prometheus currently exports some default mixins in Grafana. ## These mixins are compatible with data scraped by Azure Monitor agent on your ## Azure Kubernetes Service cluster. These mixins aren't compatible with Prometheus ## metrics scraped by the Kube Prometheus stack. ## To make these mixins compatible, uncomment the remote write relabel configuration below: ## writeRelabelConfigs: ## - sourceLabels: [metrics_path] ## regex: /metrics/cadvisor ## targetLabel: job ## replacement: cadvisor ## action: replace ## - sourceLabels: [job] ## regex: 'node-exporter' ## targetLabel: job ## replacement: node ## action: replace ## https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write remoteWrite: - url: 'http://localhost:8081/api/v1/write' # Additional volumes on the output StatefulSet definition. # Required only for Microsoft Entra ID based auth volumes: - name: secrets-store-inline csi: driver: secrets-store.csi.k8s.io readOnly: true volumeAttributes: secretProviderClass: azure-kvname-user-msi containers: - name: prom-remotewrite image: <CONTAINER-IMAGE-VERSION> imagePullPolicy: Always # Required only for Microsoft Entra ID based auth volumeMounts: - name: secrets-store-inline mountPath: /mnt/secrets-store readOnly: true 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: aadApplication - name: AZURE_CLIENT_ID value: '<APP-REGISTRATION-CLIENT-ID>' - name: AZURE_TENANT_ID value: '<TENANT-ID>' - name: AZURE_CLIENT_CERTIFICATE_PATH value: /mnt/secrets-store/<CERT-NAME> - name: CLUSTER value: '<CLUSTER-NAME>'
استبدل القيم التالية في ملف 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. <APP-REGISTRATION -CLIENT-ID>
معرف العميل للتطبيق الخاص بك. <TENANT-ID>
معرف المستأجر لتطبيق Microsoft Entra. <CERT-NAME>
اسم الشهادة. <CLUSTER-NAME>
اسم نظام المجموعة الذي يعمل عليه Prometheus. افتح Azure Cloud Shell وحمل ملف YAML.
استخدم 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.
الخطوات التالية
- جمع مقاييس Prometheus من مجموعة AKS
- تعرف على المزيد حول خدمة Azure Monitor المدارة ل Prometheus
- الكتابة عن بعد في خدمة Azure Monitor المدارة ل Prometheus
- إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة الهوية المدارة
- إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة هوية حمل عمل Microsoft Entra (معاينة)
- إرسال بيانات Prometheus إلى Azure Monitor باستخدام مصادقة الهوية المدارة بواسطة Microsoft Entra pod (معاينة)
الملاحظات
https://aka.ms/ContentUserFeedback.
قريبًا: خلال عام 2024، سنتخلص تدريجيًا من GitHub Issues بوصفها آلية إرسال ملاحظات للمحتوى ونستبدلها بنظام ملاحظات جديد. لمزيد من المعلومات، راجعإرسال الملاحظات وعرضها المتعلقة بـ