Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La observabilidad de operaciones de IoT de Azure proporciona visibilidad sobre cada capa de la configuración y proporciona información sobre el comportamiento real de los problemas, lo que aumenta la eficacia de la ingeniería de confiabilidad del sitio. Operaciones de IoT de Azure ofrece observabilidad a través de paneles de Grafana curados y personalizados, alojados en Azure, respaldados por el servicio administrado Azure Monitor para Prometheus y Container Insights.
En este artículo se muestra cómo implementar recursos de observabilidad de operaciones de Azure IoT, configurar Azure Managed Prometheus y Grafana, y habilitar una supervisión completa para el clúster de Azure Arc. Puede implementar todos los recursos de observabilidad mediante un script automatizado o seguir los pasos manuales para una configuración personalizada.
Prerequisites
- Un clúster de Kubernetes habilitado para Arc.
- La CLI de Azure instalada en la máquina del clúster. Para obtener instrucciones, consulte Instalación de la CLI de Azure.
- Helm instalado en la máquina del clúster. Para obtener instrucciones, consulte Instalación de Helm.
- Kubectl instalado en la máquina del clúster. Para obtener instrucciones, consulte Instalación de herramientas de Kubernetes.
Los CLI de Azure ejemplos de este artículo usan variables de entorno para que puedas establecer cada valor una vez y luego copiar y pegar los comandos as-is. Si usas el entorno Operaciones de IoT de Azure Codespaces del quickstart, estas variables ya están configuradas para ti y puedes saltarte este paso. De lo contrario, configura las siguientes variables de entorno en tu shell antes de ejecutar los comandos.
Los siguientes scripts establecen las variables de entorno más usadas:
| Variable del entorno | Description |
|---|---|
SUBSCRIPTION_ID |
El ID de la suscripción que contiene tu instancia de Operaciones de IoT de Azure. |
RESOURCE_GROUP |
El nombre del grupo de recursos que contiene tu instancia de Operaciones de IoT de Azure. |
AIO_INSTANCE_NAME |
El nombre de tu instancia de Operaciones de IoT de Azure. Para listar tus instancias, ejecuta az iot ops list -o table. |
CLUSTER_NAME |
El nombre del clúster Kubernetes habilitado para Azure Arc que aloja tu instancia. |
LOCATION |
La región de Azure que se usará para los nuevos recursos, por ejemplo eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Solo necesitas establecer las variables que utiliza este artículo. Este artículo podría utilizar variables de entorno adicionales para los nombres de recursos que elijas. El artículo explica cómo situarlos donde se introducen.
Implementación con el script automatizado
Para configurar todos los recursos de observabilidad en un solo paso, use el script de deploy-observability-resources.sh automatizado. El script automatiza los pasos descritos en este artículo, desde la creación de recursos de Azure mediante la configuración de observabilidad. Puede ejecutar el script varias veces de forma segura. Omite los recursos que ya existen y actualiza los recursos que necesitan cambios.
Descargue el script:
curl -fsSL -o deploy-observability-resources.sh \ https://raw.githubusercontent.com/Azure/azure-iot-operations/main/scripts/observability/deploy-observability-resources.sh chmod +x deploy-observability-resources.shEstablezca las variables de entorno necesarias y ejecute el script:
export RESOURCE_GROUP=<RESOURCE_GROUP> export CLUSTER_NAME=<CLUSTER_NAME> export INSTANCE_NAME=<INSTANCE_NAME> export WORKSPACE_NAME=<WORKSPACE_NAME> export GRAFANA_NAME=<GRAFANA_NAME> export LOGS_WORKSPACE_NAME=<LOGS_WORKSPACE_NAME> export LOCATION=<LOCATION> ./deploy-observability-resources.shConfigure
LOCATIONen la región de Azure para el aprovisionamiento de nuevos recursos. Si ya existen todos los recursos,LOCATIONes opcional.Variable Description RESOURCE_GROUPGrupo de recursos de Azure para los recursos de supervisión y operaciones de Azure IoT. CLUSTER_NAMENombre del clúster de Kubernetes habilitado para Arc donde se implementa Operaciones de IoT de Azure. INSTANCE_NAMENombre de la instancia de Operaciones de IoT de Azure que se va a configurar. WORKSPACE_NAMENombre del área de trabajo de Azure Monitor (creada si no existe). GRAFANA_NAMENombre de la instancia de Grafana administrada de Azure (creada si no existe). LOGS_WORKSPACE_NAMENombre del área de trabajo de Log Analytics (creada si no existe). LOCATIONRegión de Azure para nuevos recursos. Opcional si ya existen todos los recursos.
Una vez completado el script, continúe con Implementar paneles en Grafana para importar los paneles mantenidos.
Note
Si necesita más control sobre los pasos individuales, por ejemplo, para personalizar la configuración del recopilador de OpenTelemetry o reutilizar los recursos de supervisión existentes, siga los pasos manuales del resto de este artículo en lugar de usar el script.
Creación de recursos en Azure
Registre proveedores con la suscripción donde se encuentra el clúster.
Note
Ejecute este paso solo una vez por suscripción. Para registrar proveedores de recursos, necesita permiso para realizar la
/register/actionoperación, que se incluye en los roles Colaborador y Propietario de la suscripción. Para obtener más información, consulte proveedores y tipos 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.OperationalInsightsInstale 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 --upgrade --name k8s-extension az extension add --upgrade --name amgCree 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:
AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create --name $WORKSPACE_NAME --resource-group $RESOURCE_GROUP --location $LOCATION --query id -o tsv)El comando guarda el ID del espacio de trabajo de Azure Monitor en
AZURE_MONITOR_WORKSPACE_ID. 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:
GRAFANA_ID=$(az grafana create --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query id -o tsv)El comando guarda el ID de Grafana en
GRAFANA_ID. 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:
LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace create -g $RESOURCE_GROUP -n $LOGS_WORKSPACE_NAME --query id -o tsv)El comando guarda el ID del espacio de trabajo de Log Analytics en
LOG_ANALYTICS_WORKSPACE_ID. Usas el ID cuando activas la recogida de registros en la siguiente sección.
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 que creó. También vincula esta área de trabajo a la instancia 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 logs 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
Después de completar 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.yamly 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.143.0 config: processors: memory_limiter: limit_percentage: 80 spike_limit_percentage: 10 check_interval: 60s receivers: 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 telemetry: metrics: level: none pipelines: metrics: receivers: - otlp exporters: - prometheus resources: limits: cpu: "100m" memory: "512Mi" ports: metrics: enabled: true containerPort: 8889 servicePort: 8889 protocol: TCPEn el archivo
otel-collector-values.yaml, anote los siguientes valores que se usan en el comandoaz iot ops createal implementar Operaciones de IoT de Azure en el clúster:fullnameOverridegrpc.endpointcheck_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.yamly 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-systemEjecute el siguiente comando para aplicar el archivo de configuración:
kubectl apply -f ama-metrics-prometheus-config.yaml
Configuración de la observabilidad
Puede establecer la configuración de observabilidad de la implementación de Operaciones de IoT de Azure en cualquier momento. Una vez configurados los recursos de observabilidad, puede actualizar la configuración de observabilidad ejecutando el comando con el az iot ops upgrade--ops-config parámetro para especificar los nuevos valores de configuración:
az iot ops upgrade --resource-group $RESOURCE_GROUP --name $AIO_INSTANCE_NAME --ops-config observability.metrics.openTelemetryCollectorAddress=aio-otel-collector.azure-iot-operations.svc.cluster.local:4317 observability.metrics.exportIntervalSeconds=60
| Parámetro | Value | Description |
|---|---|---|
--ops-config |
observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> |
Proporcione la dirección del recopilador OpenTelemetry (OTel) que configuró en el archivo otel-collector-values.yaml. Las instrucciones de este artículo usan los valores fullnameOverride=aio-otel-collector de ejemplo y grpc.endpoint=4317. |
--ops-config |
observability.metrics.exportIntervalSeconds=<CHECK_INTERVAL> |
Proporciona el check_interval valor que configuraste en el otel-collector-values.yaml archivo.Las instrucciones de este artículo usan el valor de ejemplo check_interval=60. |
Note
En versiones preliminares, el comando az iot ops upgrade no funciona para actualizar a una versión preliminar, pero funciona para configurar las operaciones de IoT de Azure para la observabilidad.
Implementación de paneles en Grafana
Operaciones de IoT de Azure 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 Operaciones de IoT de Azure.
Complete los pasos siguientes para instalar los paneles de Grafana mantenidos por Operaciones de Azure IoT:
Clone o descargue el repositorio explore-iot-operations para obtener localmente el archivo JSON del panel de Grafana de ejemplo: https://github.com/Azure-Samples/explore-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 showpara recuperar la dirección URL.az grafana show --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query url -o tsvEn la página de aterrizaje de Grafana, seleccione el icono Cree su primer panel.
Seleccione Importar panel.
Vaya al directorio del panel de ejemplo en la copia local del repositorio de Operaciones de IoT de Azure, explore-iot-operations > samples > observability > grafana-dashboard, y luego seleccione el archivo aio-observability.json.
Cuando se lo solicite la aplicación, seleccione el origen de datos de Prometheus administrado.
Seleccione Importar.
Note
En el archivo aio-observability.json, asegúrese de configurar los orígenes de datos Prometheus y Azure Monitor, y configure la variable subscriptionId con su identificador de suscripción de Azure para las consultas de registro.
Pasos siguientes
- Habilite la configuración segura para configurar la administración de secretos e identidades administradas.
- Administrar certificados para las comunicaciones externas.