Condividi tramite


Distribuire le risorse di osservabilità e configurare i log

L'osservabilità delle operazioni di Azure IoT offre visibilità su ogni livello della configurazione e offre informazioni dettagliate sul comportamento effettivo dei problemi, aumentando così l'efficacia della progettazione dell'affidabilità del sito. Operazioni di Azure IoT offre l'osservabilità tramite dashboard Grafana curati, ospitati in Azure, basati sul servizio gestito per Prometheus di Azure Monitor e Dati analitici sui Contenitori.

Questo articolo illustra come distribuire le risorse di osservabilità delle operazioni IoT di Azure, configurare Prometheus e Grafana gestito di Azure e abilitare il monitoraggio completo per il cluster Azure Arc.

Prerequisiti

Creare risorse in Azure

  1. Registrare i provider con l’abbonamento in cui si trova il cluster.

    Note

    Eseguire questo passaggio una sola volta per ogni sottoscrizione. Per registrare i provider di risorse, è necessaria l'autorizzazione per eseguire l'operazione /register/action , inclusa nei ruoli Collaboratore e Proprietario della sottoscrizione. Per altre informazioni, vedere Provider e tipi di risorse di 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. Installare le estensioni della CLI di Azure per la raccolta delle metriche sui cluster abilitati per Azure Arc e Azure Managed Grafana.

    az extension add --upgrade --name k8s-extension
    az extension add --upgrade --name amg
    
  3. Creare un'area di lavoro di Monitoraggio di Azure per abilitare la raccolta delle metriche per il cluster Kubernetes abilitato per Azure Arc:

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

    Salvare l'ID dell'area di lavoro di Monitoraggio di Azure dall'output di questo comando. L'ID viene usato quando si abilita la raccolta di metriche nella sezione successiva.

  4. Creare un'istanza di Grafana gestita di Azure per visualizzare le metriche di Prometheus:

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

    Salvare l'ID di Grafana dall'output di questo comando. L'ID viene usato quando si abilita la raccolta di metriche nella sezione successiva.

  5. Creare un'area di lavoro Log Analytics per Container Insights:

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

    Salvare l'ID dell'area di lavoro Log Analytics dall'output di questo comando. L'ID viene usato quando si abilita la raccolta di metriche nella sezione successiva.

Abilitare la raccolta delle metriche per il cluster

Aggiornare il cluster Azure Arc per raccogliere le metriche e inviarle all'area di lavoro di Monitoraggio di Azure creata. È anche possibile collegare questa area di lavoro all'istanza di 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>

Abilitare i log di Container Insights per la raccolta dei log:

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>

Dopo aver completato questi passaggi, Azure Monitor e Grafana sono configurati e collegati al cluster per l'osservabilità e la raccolta delle metriche.

Distribuire l'agente di raccolta OpenTelemetry

Definire e distribuire un agente di raccolta OpenTelemetry (OTel) nel cluster Kubernetes abilitato per Arc.

  1. Creare un file denominato otel-collector-values.yaml e incollarvi il codice seguente per definire un agente di raccolta OpenTelemetry:

    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. Nel file otel-collector-values.yaml, prendere nota dei valori seguenti usati nel comando az iot ops create quando si distribuisce Operazioni di Azure IoT nel cluster:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. Salvare e chiudere il file.

  4. Distribuire l'agente di raccolta eseguendo i comandi seguenti:

    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
    

Configurare la raccolta delle metriche di Prometheus

Configurare la raccolta di metriche di Prometheus nel cluster.

  1. Creare un file denominato ama-metrics-prometheus-config.yaml e incollare la configurazione seguente:

    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. Applicare il file di configurazione eseguendo il comando seguente:

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

Impostare la configurazione dell'osservabilità

È possibile impostare la configurazione osservabilità della distribuzione di Operazioni IoT di Azure in qualsiasi momento. Dopo aver configurato le risorse di osservabilità, è possibile aggiornare la configurazione dell'osservabilità eseguendo il az iot ops upgrade comando con il --ops-config parametro per specificare i nuovi valori di configurazione:

az iot ops upgrade --resource-group <rg name> -n <instance name> --ops-config observability.metrics.openTelemetryCollectorAddress=<>
Parametro Valore Descrizione
--ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> Specificare l'indirizzo dell'agente di raccolta OpenTelemetry (OTel) configurato nel file daemon-collector-values.yaml.

Le istruzioni in questo articolo usano i valori fullnameOverride=aio-otel-collector di esempio e grpc.endpoint=4317.
--ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> Specificare il check_interval valore configurato nel file otel-collector-values.yaml.

Le istruzioni in questo articolo usano il valore check_interval=60di esempio .

Note

Nelle versioni di anteprima il comando az iot ops upgrade non funziona per l'aggiornamento a una versione di anteprima, ma funziona per configurare Operazioni di Azure IoT per l'osservabilità.

Distribuire dashboard in Grafana

Operazioni di Azure IoT offre un dashboard di esempio progettato per offrire molte delle visualizzazioni necessarie per comprendere l'integrità e le prestazioni della distribuzione di Operazioni IoT di Azure.

Completare i passaggi seguenti per installare i dashboard di Grafana curati per le operazioni IoT di Azure:

  1. Clonare o scaricare il repository azure-iot-operations per ottenere il file JSON del dashboard Grafana di esempio in locale: https://github.com/Azure/azure-iot-operations.

  2. Accedere alla console di Grafana. È possibile accedere alla console tramite il portale di Azure o usare il comando az grafana show per recuperare l'URL.

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. Nella pagina di destinazione di Grafana, selezionare il riquadro Crea il tuo primo dashboard.

  4. Selezionare Importa dashboard.

  5. Passare alla directory del dashboard di esempio nella copia locale del repository Operazioni di Azure IoT, azure-iot-operations>samples>grafana-dashboard, quindi selezionare il file del dashboard aio.sample.json.

  6. Quando l'applicazione richiede, selezionare l'origine dati Prometheus gestita.

  7. Selezionare Importa.

Passaggi successivi