Dela via


Distribuera observerbarhetsresurser och konfigurera loggar

Azure IoT Operations-observerbarhet ger insyn i varje lager i konfigurationen och ger dig insikt i det faktiska beteendet för problem, vilket ökar effektiviteten i platstillförlitlighetstekniken. Azure IoT Operations erbjuder observerbarhet via anpassade utvalda Grafana-instrumentpaneler i Azure, som drivs av Azure Monitor-hanterad tjänst för Prometheus och Container Insights.

Den här artikeln visar hur du distribuerar azure IoT Operations-observerbarhetsresurser, konfigurerar Azure Managed Prometheus och Grafana och aktiverar omfattande övervakning för ditt Azure Arc-kluster.

Förutsättningar

Skapa resurser i Azure

  1. Registrera leverantörer med prenumerationen där klustret finns.

    Kommentar

    Kör det här steget bara en gång per prenumeration. Om du vill registrera resursprovidrar behöver du behörighet att utföra åtgärden /register/action , som ingår i rollerna deltagare och ägare i prenumerationen. Mer information finns i Azure-resursprovidrar och typer.

    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. Installera Azure CLI-tillägg för insamling av mått för Azure Arc-aktiverade kluster och Azure Managed Grafana.

    az extension add --upgrade --name k8s-extension
    az extension add --upgrade --name amg
    
  3. Skapa en Azure Monitor-arbetsyta för att aktivera måttinsamling för ditt Azure Arc-aktiverade Kubernetes-kluster.

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

    Spara Azure Monitor-arbetsyte-ID:t från utdata från det här kommandot. Du använder ID:t när du aktiverar insamling av mått i nästa avsnitt.

  4. Skapa en Azure Managed Grafana-instans för att visualisera dina Prometheus-mått.

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

    Spara Grafana-ID:t från utdata från det här kommandot. Du använder ID:t när du aktiverar insamling av mått i nästa avsnitt.

  5. Skapa en Log Analytics-arbetsyta för Container Insights.

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

    Spara Log Analytics-arbetsytans ID från utdata från det här kommandot. Du använder ID:t när du aktiverar insamling av mått i nästa avsnitt.

Aktivera insamling av mått för klustret

Uppdatera Azure Arc-klustret för att samla in mått och skicka dem till den Azure Monitor-arbetsyta som du skapade. Du länkar även den här arbetsytan till Grafana-instansen.

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>

Aktivera Container Insights-loggar för logginsamling.

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>

När du har slutfört de här stegen har både Azure Monitor och Grafana konfigurerats och länkats till klustret för observerbarhet och måttinsamling.

Distribuera OpenTelemetry Collector

Definiera och distribuera en OpenTelemetry-insamlare (OTel) till ditt Arc-aktiverade Kubernetes-kluster.

  1. Skapa en fil med namnet otel-collector-values.yaml och klistra in följande kod i den för att definiera en OpenTelemetry-insamlare:

    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 Anteckna följande värden i filen som du använder i az iot ops create kommandot när du distribuerar Azure IoT Operations i klustret:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. Spara och stäng filen.

  4. Distribuera insamlaren genom att köra följande kommandon:

    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
    

Konfigurera Prometheus-måttsamling

Konfigurera Prometheus-måttsamling i klustret.

  1. Skapa en fil med namnet ama-metrics-prometheus-config.yaml och klistra in följande konfiguration:

    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. Använd konfigurationsfilen genom att köra följande kommando:

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

Konfigurera konfiguration av observerbarhet

Du kan konfigurera observerbarhetskonfigurationen för din Azure IoT Operations-distribution när som helst. När observerbarhetsresurser har konfigurerats kan du uppgradera konfigurationen för observerbarhet genom att köra az iot ops upgrade kommandot med parametern --ops-config för att ange de nya konfigurationsvärdena.

az iot ops upgrade --resource-group <rg name> -n <instance name> --ops-config observability.metrics.openTelemetryCollectorAddress=<>
Parameter Värde Beskrivning
--ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> Ange den OpenTelemetry-insamlareadress (OTel) som du konfigurerade i filen otel-collector-values.yaml.

Anvisningarna i den här artikeln använder exempelvärdena fullnameOverride=aio-otel-collector och grpc.endpoint=4317.
--ops-config observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> Ange det check_interval värde som du konfigurerade i filen otel-collector-values.yaml.

Anvisningarna i den här artikeln använder exempelvärdet check_interval=60.

Kommentar

I förhandsversioner az iot ops upgrade fungerar kommandot inte för att uppgradera till en förhandsversion, men det fungerar för att konfigurera Azure IoT-åtgärder för observerbarhet.

Distribuera instrumentpaneler till Grafana

Azure IoT Operations innehåller en exempelinstrumentpanel som är utformad för att ge dig många av de visualiseringar som du behöver för att förstå hälsotillståndet och prestandan för din Azure IoT Operations-distribution.

Utför följande steg för att installera Azure IoT Operations-kurerade Grafana-instrumentpaneler.

  1. Klona eller ladda ned lagringsplatsen azure-iot-operations för att hämta grafana-instrumentpanelens exempel-json-fil lokalt: https://github.com/Azure/azure-iot-operations.

  2. Logga in på Grafana-konsolen. Du kan komma åt konsolen via Azure Portal eller använda az grafana show kommandot för att hämta URL:en.

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. På grafana-landningssidan väljer du panelen Skapa din första instrumentpanel .

  4. Välj Importera instrumentpanel.

  5. Bläddra till exempelkatalogen för instrumentpanelen i din lokala kopia av Azure IoT Operations-lagringsplatsen, azure-iot-operations>samples>grafana-dashboard och välj sedan instrumentpanelsfilen.aio.sample.json

  6. När programmet frågar väljer du din hanterade Prometheus-datakälla.

  7. Välj Importera.