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
- Un clúster de Kubernetes habilitado para Arc.
- CLI de Azure instalada en la máquina de desarrollo. Para obtener instrucciones, consulte Instalación de la CLI de Azure.
- 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.
Creación de recursos en Azure
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
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
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.
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.
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.
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
En el archivo
otel-collector-values.yaml
, anote los siguientes valores que se usan en el comandoaz iot ops create
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
Configuración de la colección de métricas de Prometheus
Configure la recopilación de métricas de Prometheus en el clúster.
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
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.
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.
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
En la aplicación Grafana, seleccione el icono +.
Seleccione Importar panel.
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
.Cuando se lo solicite la aplicación, seleccione el origen de datos de Prometheus administrado.
Seleccione importar.