Distribuire le risorse di osservabilità e configurare i log

Importante

Anteprima di Operazioni di Azure IoT – Abilitata da Azure Arc è attualmente in anteprima. Non è consigliabile usare questo software di anteprima negli ambienti di produzione.

Sarà necessario distribuire una nuova installazione di Operazioni di Azure IoT quando sarà messa a disposizione una versione disponibile a livello generale. Non sarà possibile aggiornare un'installazione di anteprima.

Vedere le condizioni per l'utilizzo supplementari per le anteprime di Microsoft Azure per termini legali aggiuntivi che si applicano a funzionalità di Azure in versione beta, in anteprima o in altro modo non ancora disponibili a livello generale.

L'osservabilità offre visibilità su ogni livello della configurazione delle operazioni di Azure IoT. Offre informazioni dettagliate sul comportamento effettivo dei problemi, aumentando così l'efficacia della progettazione dell'affidabilità del sito. Le operazioni di Azure IoT offrono l'osservabilità tramite dashboard Grafana personalizzati ospitati in Azure. Questi dashboard sono basati sul servizio gestito di Monitoraggio di Azure per Prometheus e da Container Insights. Questa guida illustra come configurare Azure Managed Prometheus e Grafana e abilitare il monitoraggio per il cluster Azure Arc.

Completare i passaggi descritti in questo articolo prima di distribuire le operazioni di Azure IoT nel cluster.

Prerequisiti

Creare risorse in Azure

  1. Registrare i provider con la sottoscrizione in cui si trova il cluster.

    Nota

    Questo passaggio deve essere eseguito una volta sola 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 dell'interfaccia della riga di comando di Azure per la raccolta metriche per i cluster abilitati per Azure Arc e Azure Managed Grafana.

    az extension add --name k8s-extension
    az extension add --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 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 in precedenza. È 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>

Al termine di questi passaggi, Monitoraggio di Azure e Grafana sono stati 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. otel-collector-values.yaml Nel file prendere nota dei valori seguenti usati nel az iot ops create comando quando si distribuiscono operazioni IoT di Azure nel cluster:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. Salva e chiudi 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
    

Distribuire dashboard in Grafana

Azure IoT Operations 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 az grafana show comando per recuperare l'URL.

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. Nell'applicazione Grafana selezionare l'icona + .

  4. Selezionare Importa dashboard.

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

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

  7. Selezionare Importa.