Bereitstellen von Einblickressourcen und Einrichten von Protokollen

Azure IoT Einsatz-Einblick bietet Einsicht in jede Ebene Ihrer Konfiguration und gibt Ihnen Erkenntnisse über das tatsächliche Verhalten von Problemen, wodurch die Effektivität der Sitezuverlässigkeits-Entwicklung erhöht wird. Azure IoT Einsatz bietet Einblick durch benutzerdefinierte kuratierte Grafana-Dashboards, die in Azure gehostet werden, unterstützt vom verwalteter Azure Monitor-Dienst für Prometheus und Container Insights.

In diesem Artikel erfahren Sie, wie Sie Einblicksressourcen von Azure IoT Einsatz bereitstellen, Azure Managed Prometheus und Grafana einrichten und eine umfassende Überwachung für Ihren Azure Arc-Cluster ermöglichen. Sie können alle Observability-Ressourcen mithilfe eines automatisierten Skripts bereitstellen oder die manuellen Schritte für ein angepasstes Setup ausführen.

Voraussetzungen

Die Azure CLI Beispiele in diesem Artikel verwenden Umgebungsvariablen, sodass Sie jeden Wert einmal festlegen und dann die Befehle as-iskopieren und einfügen können. Wenn Sie die Azure IoT Einsatz Codespaces-Umgebung aus dem Quickstart verwenden, sind diese Variablen bereits für Sie festgelegt und Sie können diesen Schritt überspringen. Ansonsten setze die folgenden Umgebungsvariablen in deiner Shell, bevor du die Befehle ausführst.

Die folgenden Skripte legen die am häufigsten verwendeten Umweltvariablen fest:

Umgebungsvariable Description
SUBSCRIPTION_ID Die ID des Abonnements, das Ihre Azure IoT Einsatz-Instanz enthält.
RESOURCE_GROUP Der Name der Ressourcengruppe, die Ihre Azure IoT Einsatz-Instanz enthält.
AIO_INSTANCE_NAME Der Name Ihrer Azure IoT Einsatz Instanz. Um deine Instanzen aufzulisten, führe az iot ops list -o table.
CLUSTER_NAME Der Name des Azure Arc-fähigen Kubernetes-Clusters, der deine Instanz hostet.
LOCATION Die Azure-Region zur Nutzung für neue Ressourcen, zum Beispiel eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Du musst nur die Variablen festlegen, die dieser Artikel verwendet. Dieser Artikel könnte zusätzliche Umgebungsvariablen für die von Ihnen gewählten Ressourcennamen verwenden. Der Artikel erklärt, wie man sie dort platziert, wo sie eingeführt werden.

Bereitstellen mit dem automatisierten Skript

Um alle Observability-Ressourcen in einem einzigen Schritt einzurichten, verwenden Sie das automatisierte deploy-observability-resources.sh Skript. Das Skript automatisiert die Schritte in diesem Artikel, von der Erstellung von Azure-Ressourcen über die Einrichtung der Observability-Konfiguration. Sie können das Skript mehrmals sicher ausführen. Es überspringt Ressourcen, die bereits vorhanden sind, und aktualisiert Ressourcen, die Änderungen benötigen.

  1. Laden Sie das Skript herunter:

    curl -fsSL -o deploy-observability-resources.sh \
      https://raw.githubusercontent.com/Azure/azure-iot-operations/main/scripts/observability/deploy-observability-resources.sh
    chmod +x deploy-observability-resources.sh
    
  2. Legen Sie die erforderlichen Umgebungsvariablen fest, und führen Sie das Skript aus:

    export RESOURCE_GROUP=<RESOURCE_GROUP>
    export CLUSTER_NAME=<CLUSTER_NAME>
    export INSTANCE_NAME=<INSTANCE_NAME>
    export WORKSPACE_NAME=<WORKSPACE_NAME>
    export GRAFANA_NAME=<GRAFANA_NAME>
    export LOGS_WORKSPACE_NAME=<LOGS_WORKSPACE_NAME>
    export LOCATION=<LOCATION>
    
    ./deploy-observability-resources.sh
    

    Setze LOCATION auf die Azure-Region für die Bereitstellung neuer Ressourcen. Wenn alle Ressourcen bereits vorhanden sind, ist LOCATION optional.

    Variable Description
    RESOURCE_GROUP Azure-Ressourcengruppe für Ihre Azure IoT-Vorgänge und Überwachungsressourcen.
    CLUSTER_NAME Name des Arc-fähigen Kubernetes-Clusters, in dem Azure IoT Einsatz bereitgestellt wird.
    INSTANCE_NAME Name der zu konfigurierenden Azure IoT Einsatz-Instanz.
    WORKSPACE_NAME Name für den Azure Monitor-Arbeitsbereich (erstellt, wenn er nicht vorhanden ist).
    GRAFANA_NAME Name für die Azure Managed Grafana-Instanz (erstellt, wenn sie nicht vorhanden ist).
    LOGS_WORKSPACE_NAME Name für den Log Analytics-Arbeitsbereich (erstellt, wenn er nicht vorhanden ist).
    LOCATION Azure-Region für neue Ressourcen. Optional, wenn alle Ressourcen bereits vorhanden sind.

Fahren Sie nach Abschluss des Skripts mit der Bereitstellung von Dashboards für Grafana fort, um die kuratierten Dashboards zu importieren.

Note

Wenn Sie mehr Kontrolle über einzelne Schritte benötigen, z. B. um die OpenTelemetry Collector-Konfiguration anzupassen oder vorhandene Überwachungsressourcen wiederzuverwenden, führen Sie die manuellen Schritte im restlichen Artikel aus, anstatt das Skript zu verwenden.

Erstellen von Ressourcen in Azure

  1. Registrieren Sie Anbieter für das Abonnement, in dem sich Ihr Cluster befindet.

    Note

    Führen Sie diesen Schritt nur einmal pro Abonnement aus. Zum Registrieren von Ressourcenanbietern benötigen Sie die Berechtigung zum Ausführen des /register/action Vorgangs, der in den Rollen " Mitwirkender" und "Besitzer" des Abonnements enthalten ist. Weitere Informationen finden Sie unter Azure Ressourcenanbieter und -typen.

    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. Installieren sie Azure CLI-Erweiterungen für die Metriksammlung für Azure Arc-fähige Cluster und azure Managed Grafana:

    az extension add --upgrade --name k8s-extension
    az extension add --upgrade --name amg
    
  3. Erstellen Sie einen Azure Monitor-Arbeitsbereich, um die Metriksammlung für Ihren Azure Arc-fähigen Kubernetes-Cluster zu aktivieren:

    AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create --name $WORKSPACE_NAME --resource-group $RESOURCE_GROUP --location $LOCATION --query id -o tsv)
    

    Der Befehl speichert die Azure Monitor Workspace ID in AZURE_MONITOR_WORKSPACE_ID. Sie verwenden die ID, wenn Sie im nächsten Abschnitt die Metrikerfassung aktivieren.

  4. Erstellen Sie eine Azure Managed Grafana-Instanz, um Ihre Prometheus-Metriken zu visualisieren:

    GRAFANA_ID=$(az grafana create --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query id -o tsv)
    

    Der Befehl speichert die Grafana-ID in GRAFANA_ID. Sie verwenden die ID, wenn Sie im nächsten Abschnitt die Metrikerfassung aktivieren.

  5. Erstellen eines Log Analytics-Arbeitsbereichs für Containereinblicke:

    LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace create -g $RESOURCE_GROUP -n $LOGS_WORKSPACE_NAME --query id -o tsv)
    

    Der Befehl speichert die Log Analytics-Arbeitsbereichs-ID in LOG_ANALYTICS_WORKSPACE_ID. Du verwendest die ID, wenn du im nächsten Abschnitt die Logsammlung aktivierst.

Aktivieren Sie die Metrikerfassung für den Cluster

Aktualisieren Sie den Azure Arc-Cluster, um Metriken zu sammeln und sie an den Azure Monitor-Arbeitsbereich zu senden, den Sie erstellt haben. Sie verknüpfen diesen Arbeitsbereich auch mit der Grafana-Instanz:

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-Protokolle zur Protokollerfassung aktivieren

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

Nachdem diese Schritte abgeschlossen sind, haben Sie sowohl Azure Monitor als auch Grafana eingerichtet und mit Ihrem Cluster für Einblicke und Metrikerfassung verknüpft.

Bereitstellen eines OpenTelemetry Collector

Definieren und implementieren Sie einen OpenTelemetry (OTel)-Collector in Ihrem Arc-fähigen Kubernetes-Cluster.

  1. Erstellen Sie eine Datei namens otel-collector-values.yaml, und fügen Sie den folgenden Code ein, um einen OpenTelemetry Collector zu definieren:

    mode: deployment
    fullnameOverride: aio-otel-collector
    image:
      repository: otel/opentelemetry-collector
      tag: 0.143.0
    
    config:
      processors:
        memory_limiter:
          limit_percentage: 80
          spike_limit_percentage: 10
          check_interval: 60s
    
      receivers:
        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
    
        telemetry:
          metrics:
            level: none
    
        pipelines:
          metrics:
            receivers:
              - otlp
            exporters:
              - prometheus
    
    resources:
      limits:
        cpu: "100m"
        memory: "512Mi"
    
    ports:
      metrics:
        enabled: true
        containerPort: 8889
        servicePort: 8889
        protocol: TCP
    
  2. Notieren Sie sich die folgenden Werte der Datei otel-collector-values.yaml, die Sie im Befehl az iot ops create beim Bereitstellen von Azure IoT Einsatz im Cluster verwenden:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. Speichern und schließen Sie die Datei.

  4. Stellen Sie den Collector bereit, indem Sie die folgenden Befehle ausführen:

    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
    

Konfigurieren der Prometheus-Metriksammlung

Konfigurieren Sie die Prometheus-Metriksammlung auf Ihrem Cluster.

  1. Erstellen Sie eine Datei namens ama-metrics-prometheus-config.yaml, und fügen Sie die folgende Konfiguration ein:

    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. Wenden Sie die Konfigurationsdatei an, indem Sie den folgenden Befehl ausführen:

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

Einrichten der Einblickskonfiguration

Sie können die Einblickskonfiguration Ihrer Azure IoT Einsatz-Bereitstellung jederzeit einrichten. Nachdem Observability-Ressourcen konfiguriert wurden, können Sie die Observability-Konfiguration aktualisieren, indem Sie den az iot ops upgrade Befehl mit dem --ops-config Parameter ausführen, um die neuen Konfigurationswerte anzugeben:

az iot ops upgrade --resource-group $RESOURCE_GROUP --name $AIO_INSTANCE_NAME --ops-config observability.metrics.openTelemetryCollectorAddress=aio-otel-collector.azure-iot-operations.svc.cluster.local:4317 observability.metrics.exportInternalSeconds=60
Parameter Wert Description
--ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> Geben Sie die OpenTelemetry-Collectoradresse (OTel) an, die Sie in der Datei „otel-collector-values.yaml“ konfiguriert haben.

Die Anweisungen in diesem Artikel verwenden die Beispielwerte fullnameOverride=aio-otel-collector und grpc.endpoint=4317.
--ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> Geben Sie den check_interval Wert an, den Sie in der Datei "otel-collector-values.yaml" konfiguriert haben.

Die Anweisungen in diesem Artikel verwenden den Beispielwert check_interval=60.

Note

In Vorschauversionen funktioniert der az iot ops upgrade-Befehl nicht für das Upgrade auf eine Vorschauversion, funktioniert aber für die Konfiguration von Azure IoT Einsatz für Einblick.

Bereitstellen von Dashboards in Grafana

Azure IoT Einsatz bietet ein Beispieldashboard, das Ihnen viele der Visualisierungen bietet, die Sie benötigen, um die Integrität und Leistung Ihrer Azure IoT Einsatz-Bereitstellung zu verstehen.

Führen Sie die folgenden Schritte aus, um die von Azure IoT Einsatz kuratierten Grafana-Dashboards zu installieren:

  1. Klonen Sie oder laden Sie das Repository explore-iot-operations herunter, um die JSON-Datei des Grafana-Dashboards lokal herunterzuladen: https://github.com/Azure-Samples/explore-iot-operations.

  2. Melden Sie sich bei der Grafana-Konsole an. Sie können über das Azure-Portal auf die Konsole zugreifen oder den Befehl az grafana show verwenden, um die URL abzurufen.

    az grafana show --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query url -o tsv
    
  3. Wählen Sie auf der Grafana-Startseite die Kachel Erstes Dashboard erstellen aus.

  4. Wählen Sie Dashboard importieren aus.

  5. Navigieren Sie zu dem Beispiel-Dashboardverzeichnis in Ihrer lokalen Kopie des Azure IoT Einsatz-Repositorys, explore-iot-operations >-Beispiele > Einblick > grafana-dashboard, und wählen Sie dann die aio-observability.json-Dashboarddatei aus.

  6. Wenn die Anwendung dazu auffordert, wählen Sie Ihre verwaltete Prometheus-Datenquelle aus.

  7. Klicken Sie auf Importieren.

Note

Stellen Sie in der aio-observability.json sicher, dass Sie sowohl die Prometheus- als auch die Azure Monitor-Datenquelle konfigurieren und die subscriptionId Variable für Abfrageprotokolle auf Ihre Azure-Abonnement-ID festlegen.

Nächste Schritte