Implementación de recursos de observabilidad y configuración de registros

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 esta guía se muestra cómo configurar Azure Managed Prometheus y Grafana y habilitar la supervisión del clúster de Azure Arc.

Complete los pasos descritos en este artículo antes de implementar operaciones de Azure IoT en el clúster.

Requisitos previos

Creación de recursos en Azure

  1. Registre 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 --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. Instale extensiones de la CLI de Azure para la recopilación de métricas para clústeres habilitados para Azure Arc y Azure Managed Grafana.

    az extension add --name k8s-extension
    az extension add --name amg
    
  3. Cree un área de trabajo de Azure Monitor para habilitar la recopilación de métricas para el clúster de Kubernetes habilitado para Azure Arc.

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

    Guarde el identificador del área de trabajo de Azure Monitor en la salida de este comando. Use el identificador al habilitar la recopilación de métricas en la sección siguiente.

  4. Cree una instancia de Grafana administrada de Azure para visualizar las métricas de Prometheus.

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

    Guarde el identificador de Grafana en la salida de este comando. Use el identificador al habilitar la recopilación de métricas en la sección siguiente.

  5. Cree un área de trabajo de Log Analytics para Container Insights.

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

    Guarde el identificador del área de trabajo de Log Analytics en la salida de este comando. Use el identificador al habilitar la recopilación de métricas en la sección siguiente.

Habilitación de la recopilación de métricas para el clúster

Actualice el clúster de Azure Arc para recopilar métricas y enviarlos al área de trabajo de Azure Monitor creada anteriormente. También vinculará esta área de trabajo con la instancia de 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>

Habilite los registros de Container Insights para la recopilación de registros.

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>

Una vez completados estos pasos, tiene Azure Monitor y Grafana configurados y vinculados al clúster para la observabilidad y la recopilación de métricas.

Implementación de Collector de OpenTelemetry

Defina e implemente un recopilador de OpenTelemetry (OTel) en el clúster de Kubernetes habilitado para Arc.

  1. 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
          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. En el archivo otel-collector-values.yaml, anote los siguientes valores que se usan en el comando az iot ops create al implementar Operaciones de IoT de Azure en el clúster:

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

  4. 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
    

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

Configure la recopilación de métricas de Prometheus en el clúster.

  1. Cree un archivo denominado ama-metrics-prometheus-config.yaml y pegue la siguiente configuración:

    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. 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

Azure IoT Operations proporciona un panel de ejemplo diseñado para proporcionarle muchas de las visualizaciones que necesita para comprender el estado y el rendimiento de la implementación de Azure IoT Operations.

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

  1. Clone o descargue el repositorio azure-iot-operations para obtener el archivo json del panel de Grafana de ejemplo localmente: https://github.com/Azure/azure-iot-operations.

  2. Inicie sesión en la consola de Grafana. Puede acceder a la consola a través de Azure Portal o usar el comando az grafana show para recuperar la dirección URL.

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. En la aplicación Grafana, seleccione el icono +.

  4. Seleccione Importar panel.

  5. Vaya al directorio del panel de ejemplo en la copia local del repositorio de operaciones de Azure IoT, azure-iot-operations>samples>grafana-dashboard y luego seleccione el archivo del panel aio.sample.json.

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

  7. Seleccione importar.