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
- Un clúster de Kubernetes habilitado para Arc.
- Helm instalado en el equipo de desarrollo. Para obtener instrucciones, consulte Instalación de Helm.
- Kubectl instalado en el equipo de desarrollo. Para obtener instrucciones, consulte Instalación de herramientas de Kubernetes.
- CLI de Azure instalada en la máquina de desarrollo. Para obtener más información, consulte Cómo instalar la CLI de Azure.
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
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.
Vaya a la siguiente ruta de acceso en la copia local del repositorio:
azure-iot-operations\tools\setup-3p-obs-infra
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
En el archivo
otel-collector-values.yaml
, anote los siguientes valores que se usan en el comandoaz iot ops init
al implementar Operaciones de IoT de Azure en el clúster:- fullnameOverride
- grpc.endpoint
- check_interval
Guarde y cierre el archivo.
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
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
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.
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 +.
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
Cuando se lo solicite la aplicación, seleccione el origen de datos de Prometheus administrado.
Seleccione Importar