Distribuire le risorse di osservabilità e configurare i log
L'osservabilità offre visibilità su ogni livello della configurazione delle operazioni di Azure IoT. Offre informazioni dettagliate sul comportamento effettivo dei problemi, aumentando così l'efficacia della progettazione dell'affidabilità del sito. Le operazioni di Azure IoT offrono l'osservabilità tramite dashboard Grafana personalizzati ospitati in Azure. Questi dashboard sono basati sul servizio gestito di Monitoraggio di Azure per Prometheus e da Container Insights. Questa guida illustra come configurare Azure Managed Prometheus e Grafana e abilitare il monitoraggio per il cluster Azure Arc.
Completare i passaggi descritti in questo articolo prima di distribuire le operazioni di Azure IoT nel cluster.
Prerequisiti
- Cluster Kubernetes con abilitazione di Arc.
- Interfaccia della riga di comando di Azure installata nel computer del cluster. Per istruzioni, vedere Come installare l'interfaccia della riga di comando di Azure.
- Helm installato nel computer cluster. Per istruzioni, vedere Installare Helm.
- Kubectl installato nel computer del cluster. Per istruzioni, vedere Installare gli strumenti kubernetes.
Creare risorse in Azure
Registrare i provider con la sottoscrizione in cui si trova il cluster.
Nota
Questo passaggio deve essere eseguito una volta sola per ogni sottoscrizione. Per registrare i provider di risorse, è necessaria l'autorizzazione per eseguire l'operazione
/register/action
, inclusa nei ruoli Collaboratore e Proprietario della sottoscrizione. Per altre informazioni, vedere Provider e tipi di risorse di 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
Installare le estensioni dell'interfaccia della riga di comando di Azure per la raccolta metriche per i cluster abilitati per Azure Arc e Azure Managed Grafana.
az extension add --name k8s-extension az extension add --name amg
Creare un'area di lavoro di Monitoraggio di Azure per abilitare la raccolta delle metriche per il cluster Kubernetes abilitato per Azure Arc.
az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
Salvare l'ID dell'area di lavoro di Monitoraggio di Azure dall'output di questo comando. L'ID viene usato quando si abilita la raccolta di metriche nella sezione successiva.
Creare un'istanza di Grafana gestita di Azure per visualizzare le metriche di Prometheus.
az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
Salvare l'ID Grafana dall'output di questo comando. L'ID viene usato quando si abilita la raccolta di metriche nella sezione successiva.
Creare un'area di lavoro Log Analytics per Container Insights.
az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
Salvare l'ID dell'area di lavoro Log Analytics dall'output di questo comando. L'ID viene usato quando si abilita la raccolta di metriche nella sezione successiva.
Abilitare la raccolta delle metriche per il cluster
Aggiornare il cluster Azure Arc per raccogliere le metriche e inviarle all'area di lavoro di Monitoraggio di Azure creata in precedenza. È anche possibile collegare questa area di lavoro all'istanza di 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>
Abilitare i log di Container Insights per la raccolta dei log.
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>
Al termine di questi passaggi, Monitoraggio di Azure e Grafana sono stati configurati e collegati al cluster per l'osservabilità e la raccolta delle metriche.
Distribuire l'agente di raccolta OpenTelemetry
Definire e distribuire un agente di raccolta OpenTelemetry (OTel) nel cluster Kubernetes abilitato per Arc.
Creare un file denominato
otel-collector-values.yaml
e incollarvi il codice seguente per definire un agente di raccolta 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
otel-collector-values.yaml
Nel file prendere nota dei valori seguenti usati nelaz iot ops create
comando quando si distribuiscono operazioni IoT di Azure nel cluster:- fullnameOverride
- grpc.endpoint
- check_interval
Salva e chiudi il file.
Distribuire l'agente di raccolta eseguendo i comandi seguenti:
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
Configurare la raccolta delle metriche di Prometheus
Configurare la raccolta di metriche di Prometheus nel cluster.
Creare un file denominato
ama-metrics-prometheus-config.yaml
e incollare la configurazione seguente: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
Applicare il file di configurazione eseguendo il comando seguente:
kubectl apply -f ama-metrics-prometheus-config.yaml
Distribuire dashboard in Grafana
Azure IoT Operations offre un dashboard di esempio progettato per offrire molte delle visualizzazioni necessarie per comprendere l'integrità e le prestazioni della distribuzione di Operazioni IoT di Azure.
Completare i passaggi seguenti per installare i dashboard di Grafana curati per le operazioni IoT di Azure.
Clonare o scaricare il repository azure-iot-operations per ottenere il file JSON del dashboard Grafana di esempio in locale: https://github.com/Azure/azure-iot-operations.
Accedere alla console di Grafana. È possibile accedere alla console tramite il portale di Azure o usare il
az grafana show
comando per recuperare l'URL.az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
Nell'applicazione Grafana selezionare l'icona + .
Selezionare Importa dashboard.
Passare alla directory del dashboard di esempio nella copia locale del repository azure IoT Operations, azure-iot-operations>samples>grafana-dashboard e quindi selezionare il file del
aio.sample.json
dashboard.Quando l'applicazione richiede, selezionare l'origine dati Prometheus gestita.
Selezionare Importa.