مشاركة عبر


توزيع موارد إمكانية المراقبة وإعداد السجلات

توفر إمكانية مراقبة Azure IoT Operations رؤية لكل طبقة من طبقات التكوين الخاص بك وتمنحك نظرة ثاقبة للسلوك الفعلي للمشكلات، مما يزيد من فعالية هندسة موثوقية الموقع. توفر Azure IoT Operations إمكانية الملاحظة من خلال لوحات معلومات Grafana المخصصة المنسقة المستضافة في Azure، المدعومة من خدمة Azure Monitor المدارة ل Prometheus وContainer Insights.

توضح لك هذه المقالة كيفية نشر موارد مراقبة Azure IoT Operations، وإعداد Azure Managed Prometheus وGrafana، وتمكين المراقبة الشاملة لمجموعة Azure Arc.

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

  • مجموعة Kubernetes الممكنة بواسطة Arc.
  • تم تثبيت Azure CLI على جهاز نظام المجموعة. للحصول على الإرشادات، راجع كيفية تثبيت Azure CLI.
  • Helm مثبت على جهاز نظام المجموعة الخاص بك. للحصول على الإرشادات، راجع تثبيت Helm.
  • Kubectl مثبت على جهاز نظام المجموعة الخاص بك. للحصول على الإرشادات، راجع تثبيت أدوات Kubernetes.

إنشاء الموارد في Azure

  1. تسجيل الموفرين مع الاشتراك حيث يوجد نظام المجموعة الخاص بك.

    إشعار

    قم بتشغيل هذه الخطوة مرة واحدة فقط لكل اشتراك. لتسجيل مزودي الموارد، تحتاج إلى إذن لتنفيذ العملية /register/action ، وهو مشمول في أدوار المساهموالمالك للاشتراك. لمزيد من المعلومات، راجع موفري موارد Azure وأنواعها.

    az account set -s <SUBSCRIPTION_ID>
    az provider register --namespace Microsoft.AlertsManagement
    az provider register --namespace Microsoft.Monitor
    az provider register --namespace Microsoft.Dashboard
    az provider register --namespace Microsoft.Insights
    az provider register --namespace Microsoft.OperationalInsights
    
  2. تثبيت Azure CLI extensions for Metrics collection for Azure Arc-enabled clusters و Azure Managed Grafana:

    az extension add --upgrade --name k8s-extension
    az extension add --upgrade --name amg
    
  3. إنشاء مساحة عمل Azure Monitor لتمكين مجموعة المتريات لعنقود Kubernetes الفعال في Azure Arc:

    az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
    

    احفظ معرف مساحة عمل Azure Monitor من إخراج هذا الأمر. يمكنك استخدام المعرف عند تمكين مجموعة المقاييس في القسم التالي.

  4. Create a Azure Managed Grafana instance to visualize your Prometheus metrics:

    az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
    

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

  5. أنشئ مساحة عمل تحليلات سجلات لرؤى الحاويات:

    az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
    

    احفظ معرف مساحة عمل Log Analytics من إخراج هذا الأمر. يمكنك استخدام المعرف عند تمكين مجموعة المقاييس في القسم التالي.

تمكين مجموعة المقاييس للمجموعة

قم بتحديث نظام مجموعة Azure Arc لجمع المقاييس وإرسالها إلى مساحة عمل Azure Monitor التي قمت بإنشائها. كما تربط هذه مساحة العمل بنسخة Grafana:

az k8s-extension create --name azuremonitor-metrics --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers.Metrics --configuration-settings azure-monitor-workspace-resource-id=<AZURE_MONITOR_WORKSPACE_ID> grafana-resource-id=<GRAFANA_ID>

تمكين سجلات Container Insights لجمع السجلات:

az k8s-extension create --name azuremonitor-containers --cluster-name <CLUSTER_NAME> --resource-group <RESOURCE_GROUP> --cluster-type connectedClusters --extension-type Microsoft.AzureMonitor.Containers --configuration-settings logAnalyticsWorkspaceResourceID=<LOG_ANALYTICS_WORKSPACE_ID>

بعد إكمال هذه الخطوات، يمكنك إعداد كل من Azure Monitor وGrafana وربطهما بنظام المجموعة الخاص بك لإمكانية الملاحظة وجمع المقاييس.

نشر OpenTelemetry Collector

تعريف ونشر OpenTelemetry (OTel) Collector إلى مجموعة Kubernetes التي تدعم Arc.

  1. إنشاء ملف يسمى otel-collector-values.yaml ولصق التعليمات البرمجية التالية فيه لتعريف OpenTelemetry Collector:

    mode: deployment
    fullnameOverride: aio-otel-collector
    image:
      repository: otel/opentelemetry-collector
      tag: 0.107.0
    config:
      processors:
        memory_limiter:
          limit_percentage: 80
          spike_limit_percentage: 10
          check_interval: '60s'
      receivers:
        jaeger: null
        prometheus: null
        zipkin: null
        otlp:
          protocols:
            grpc:
              endpoint: ':4317'
            http:
              endpoint: ':4318'
      exporters:
        prometheus:
          endpoint: ':8889'
          resource_to_telemetry_conversion:
            enabled: true
          add_metric_suffixes: false
      service:
        extensions:
          - health_check
        pipelines:
          metrics:
            receivers:
              - otlp
            exporters:
              - prometheus
          logs: null
          traces: null
        telemetry: null
      extensions:
        memory_ballast:
          size_mib: 0
    resources:
      limits:
        cpu: '100m'
        memory: '512Mi'
    ports:
      metrics:
        enabled: true
        containerPort: 8889
        servicePort: 8889
        protocol: 'TCP'
      jaeger-compact:
        enabled: false
      jaeger-grpc:
        enabled: false
      jaeger-thrift:
        enabled: false
      zipkin:
        enabled: false
    
  2. في otel-collector-values.yaml الملف، دون القيم التالية التي تستخدمها في az iot ops create الأمر عند نشر عمليات Azure IoT على نظام المجموعة:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. احفظ الملف وأغلقه.

  4. انشر المجمع عن طريق تشغيل الأوامر التالية:

    kubectl get namespace azure-iot-operations || kubectl create namespace azure-iot-operations
    helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
    
    helm repo update
    helm upgrade --install aio-observability open-telemetry/opentelemetry-collector -f otel-collector-values.yaml --namespace azure-iot-operations
    

تكوين مجموعة مقاييس Prometheus

تكوين مجموعة مقاييس Prometheus على مجموعتك.

  1. إنشاء ملف باسم ama-metrics-prometheus-config.yaml ولصق التكوين التالي:

    apiVersion: v1
    data:
      prometheus-config: |2-
        scrape_configs:
          - job_name: otel
            scrape_interval: 1m
            static_configs:
              - targets:
                - aio-otel-collector.azure-iot-operations.svc.cluster.local:8889
          - job_name: aio-annotated-pod-metrics
            kubernetes_sd_configs:
              - role: pod
            relabel_configs:
              - action: drop
                regex: true
                source_labels:
                  - __meta_kubernetes_pod_container_init
              - action: keep
                regex: true
                source_labels:
                  - __meta_kubernetes_pod_annotation_prometheus_io_scrape
              - action: replace
                regex: ([^:]+)(?::\\d+)?;(\\d+)
                replacement: $1:$2
                source_labels:
                  - __address__
                  - __meta_kubernetes_pod_annotation_prometheus_io_port
                target_label: __address__
              - action: replace
                source_labels:
                  - __meta_kubernetes_namespace
                target_label: kubernetes_namespace
              - action: keep
                regex: 'azure-iot-operations'
                source_labels:
                  - kubernetes_namespace
            scrape_interval: 1m
    kind: ConfigMap
    metadata:
      name: ama-metrics-prometheus-config
      namespace: kube-system
    
  2. تطبيق ملف التكوين عن طريق تشغيل الأمر التالي:

    kubectl apply -f ama-metrics-prometheus-config.yaml
    

إعداد تكوين إمكانية الملاحظة

يمكنك إعداد تكوين قابلية الملاحظة لتوزيع Azure IoT Operations في أي وقت. بمجرد تكوين موارد الملاحظة، يمكنك ترقية تكوين قابلية الملاحظة عن طريق تشغيل az iot ops upgrade الأمر مع المعامل --ops-config لتحديد قيم التكوين الجديدة:

az iot ops upgrade --resource-group <rg name> -n <instance name> --ops-config observability.metrics.openTelemetryCollectorAddress=<>
المعلمة قيمة الوصف
--ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> قم بتوفير عنوان مجمع OpenTelemetry (OTel) الذي قمت بتكوينه في ملف otel-collector-values.yaml.

تستخدم التعليمات في هذا المقال قيم fullnameOverride=aio-otel-collector العينة و grpc.endpoint=4317.
--ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> قدم القيمة التي قمت بتكوينها check_interval في ملف otel-collector-values.yaml.

تستخدم التعليمات في هذا المقال قيمة check_interval=60العينة .

إشعار

في إصدارات المعاينة، az iot ops upgrade لا يعمل الأمر للترقية إلى إصدار معاينة، ولكنه يعمل على تكوين Azure IoT Operations لإمكانية المراقبة.

نشر لوحات المعلومات إلى Grafana

توفر عمليات Azure IoT لوحة معلومات نموذجية مصممة لمنحك العديد من المرئيات التي تحتاجها لفهم صحة وأداء توزيع عمليات Azure IoT.

أكمل الخطوات التالية لتثبيت لوحات تحكم Grafana المنسقة من Azure IoT Operations:

  1. استنساخ أو تنزيل مستودع azure-iot-operations للحصول على نموذج ملف json للوحة معلومات Grafana محليا: https://github.com/Azure/azure-iot-operations.

  2. سجل الدخول إلى وحدة تحكم Grafana. يمكنك الوصول إلى وحدة التحكم من خلال مدخل Microsoft Azure أو استخدام az grafana show الأمر لاسترداد عنوان URL.

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. في الصفحة المنتقل إليها في Grafana، حدد إنشاء لوحة المعلومات الأولى .

  4. حدد استيراد لوحة المعلومات.

  5. تصفح إلى دليل لوحة البيانات النموذجي في النسخة المحلية الخاصة بك من مستودع Azure IoT Operations, azure-iot-operations > samples > grafana-dashboard، ثم اختر ملف aio.sample.json dashboard.

  6. عندما يطالب التطبيق، حدد مصدر بيانات Prometheus المدار.

  7. حدد استيراد.

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