Compartir vía


Introducción: configuración de la observabilidad con un script en Azure IoT Operations Preview

Importante

Versión preliminar de operaciones de Azure IoT: habilitada por Azure Arc está actualmente en versión preliminar. No se debería usar este software en versión preliminar en entornos de producción.

Deberá implementar una nueva instalación de Azure IoT Operations cuando esté disponible una versión general. No podrá actualizar una instalación de versión preliminar.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

La observabilidad proporciona visibilidad de cada una de las capas de la configuración de Operaciones de IoT de Azure. Proporciona información sobre el comportamiento real de los problemas, lo que aumenta la eficacia de la ingeniería de fiabilidad del sitio. Operaciones de IoT de Azure ofrece observabilidad mediante paneles de Grafana mantenidos personalizados que se hospedan en Azure. Estos paneles se basan en la tecnología del servicio administrado para Prometheus de Azure Monitor y en la de Container Insights. En este artículo se muestra cómo configurar los servicios que necesita para la observabilidad.

Requisitos previos

Configuración de su suscripción

Ejecute el código siguiente para registrar proveedores con la suscripción donde se encuentra el clúster.

Nota:

Este paso solo debe ejecutarse una vez por suscripción. Para registrar proveedores de recursos, necesita permiso para realizar la operación de /register/action, que se incluye en los roles Colaborador y Propietario de la suscripción. Para más información, vea Tipos y proveedores de recursos de Azure.

az account set -s <subscription-id>
az provider register -n "Microsoft.Insights"
az provider register -n "Microsoft.AlertsManagement"

Instalación de componentes de observabilidad

Los pasos de esta sección implementan un Collector de OpenTelemetry (OTel) y, después, instalan recursos de supervisión compartidos y configuran el clúster habilitado para Arc para emitir señales de observabilidad a estos recursos. Entre los recursos de supervisión compartidos se incluyen Azure Managed Grafana, Área de trabajo de Azure Monitor, Azure Managed Prometheus, Azure Log Analytics y Container Insights.

Implementación de Collector de OpenTelemetry

  1. Clone o descargue el repositorio de Operaciones de IoT de Azure en la máquina local: azure-iot-operations.git.

    Nota:

    El repositorio contiene la definición de implementación de Operaciones de IoT de Azure y ejemplos que incluyen los paneles de ejemplo usados en este artículo.

  2. Vaya a la siguiente ruta de acceso en la copia local del repositorio:

    azure-iot-operations\tools\setup-3p-obs-infra

  3. Cree un archivo denominado otel-collector-values.yaml y pegue el código siguiente en él para definir un Collector de 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
      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
    
  4. En el archivo otel-collector-values.yaml, anote los siguientes valores que se usan en el comando az iot ops init al implementar Operaciones de IoT de Azure en el clúster:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  5. Guarde y cierre el archivo.

  6. Implemente el Collector mediante la ejecución de los siguientes comandos:

    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
    

Implementación de componentes de observabilidad

  • Implemente los componentes de observabilidad mediante la ejecución de uno de los siguientes comandos. Use el identificador de suscripción y el grupo de recursos del clúster habilitado para Arc que quiere supervisar.

    Nota:

    Para detectar otros parámetros opcionales que puede establecer, consulte el archivo bicep. Los parámetros opcionales pueden especificar, por ejemplo, ubicaciones alternativas para los recursos del clúster.

    El siguiente comando concede acceso de administrador a la instancia de Grafana recién creada para el usuario.

    az deployment group create \
         --subscription <subscription-id> \
         --resource-group <cluster-resource-group> \
         --template-file observability-full.bicep \
         --parameters grafanaAdminId=$(az ad user show --id $(az account show --query user.name --output tsv) --query=id --output tsv) \
                      clusterName=<cluster-name> \
                      sharedResourceGroup=<shared-resource-group> \
                      sharedResourceLocation=<shared-resource-location> \
         --query=properties.outputs
    

    Si ese acceso no es lo que desea, ejecute el siguiente comando, que no configura los permisos. Después, configure los permisos manualmente mediante asignaciones de roles para que cualquier usuario pueda acceder a la instancia de Grafana. Asigne uno de los roles de Grafana (Administrador de Grafana, Editor de Grafana, Lector de Grafana) en función del nivel de acceso deseado.

    az deployment group create \
         --subscription <subscription-id> \
         --resource-group <cluster-resource-group> \
         --template-file observability-full.bicep \
         --parameters clusterName=<cluster-name> \
                      sharedResourceGroup=<shared-resource-group> \
                      sharedResourceLocation=<shared-resource-location> \
          --query=properties.outputs
    

    Si la implementación se realiza correctamente, se imprimen algunos fragmentos de información al final de la salida del comando. La información incluye la dirección URL de Grafana y los identificadores de los recursos de Log Analytics y Azure Monitor que se han creado. La dirección URL de Grafana le permite ir a la instancia de Grafana que configure en Implementar paneles en Grafana. Ambos identificadores de recursos permiten configurar otros clústeres habilitados para Arc si sigue los pasos que se describen en Incorporación de un clúster habilitado para Arc a la infraestructura de observabilidad existente.

Configuración de la colección de métricas de Prometheus

  1. Copie y pegue la siguiente configuración en un nuevo archivo denominado ama-metrics-prometheus-config.yaml y guarde el archivo:

    apiVersion: v1
    data:
      prometheus-config: |2-
        scrape_configs:
          - job_name: e4k
            scrape_interval: 1m
            static_configs:
              - targets:
                - aio-internal-diagnostics-service.azure-iot-operations.svc.cluster.local:9600
              - job_name: nats
                scrape_interval: 1m
                static_configs:
                - targets:
                  - aio-dp-msg-store-0.aio-dp-msg-store-headless.azure-iot-operations.svc.cluster.local:7777
              - 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. Ejecute el siguiente comando para aplicar el archivo de configuración:

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

Implementación de paneles en Grafana

Operaciones de IoT de Azure ofrece una colección de paneles diseñados para proporcionarle muchas de las visualizaciones que necesita para comprender el estado y el rendimiento de la implementación de Operaciones de IoT de Azure.

Siga estos pasos para instalar los paneles de Grafana mantenidos por Operaciones de IoT de Azure.

  1. Inicie sesión en la consola de Grafana y, a continuación, en la parte superior derecha de la aplicación Grafana, seleccione el icono +.

  2. Seleccione Importar panel, siga las indicaciones para ir a la ruta de acceso samples\grafana-dashboards de la copia clonada local del repositorio y seleccione un archivo de panel JSON

  3. Cuando se lo solicite la aplicación, seleccione el origen de datos de Prometheus administrado.

  4. Seleccione Importar