Prise en main : Configurer l’observabilité avec un script dans la préversion d’Opération Azure IoT
Important
Opérations Azure IoT Préversion avec Azure Arc est actuellement en préversion. Vous ne devez pas utiliser ce logiciel en préversion dans des environnements de production.
Lorsqu’une version en disponibilité générale sera publiée, vous devrez déployer une nouvelle installation d’Opérations Azure IoT. Vous ne pourrez pas mettre à niveau une installation en préversion.
Pour connaître les conditions juridiques qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou plus généralement non encore en disponibilité générale, consultez l’Avenant aux conditions d’utilisation des préversions de Microsoft Azure.
L’observabilité offre une visibilité sur chaque couche de votre configuration Opérations Azure IoT. Elle vous donne un aperçu du comportement réel des problèmes, ce qui augmente l’efficacité de l’ingénierie de fiabilité du site. Opérations Azure IoT offre une observabilité via des tableaux de bord Grafana organisés personnalisés hébergés dans Azure. Ces tableaux de bord sont alimentés par le service géré Azure Monitor pour Prometheus et par Container Insights. Cet article explique comment configurer les services dont vous avez besoin pour l’observabilité.
Prérequis
- Un cluster Kubernetes avec Arc.
- Helm doit être installé sur votre ordinateur de développement. Pour obtenir plus d’instructions, consultez Installer Helm.
- Kubectl doit être installé sur votre ordinateur de développement. Pour obtenir plus d’instructions, consultez Installer les outils Kubernetes.
- Azure CLI installé sur votre ordinateur de développement. Si vous souhaitez en savoir plus, veuillez consulter la rubrique Installation de l’interface de ligne de commande Azure.
Configurer votre abonnement
Exécutez le code suivant pour inscrire les fournisseurs dans l’abonnement où se trouve votre cluster.
Remarque
Cette étape doit être exécutée une seule fois par abonnement. Pour inscrire des fournisseurs de ressources, vous devez disposer de l’autorisation d’effectuer l’opération /register/action
qui est incluse dans les rôles Contributeur et Propriétaire de l’abonnement. Pour plus d’informations, consultez Fournisseurs et types de ressources Azure.
az account set -s <subscription-id>
az provider register -n "Microsoft.Insights"
az provider register -n "Microsoft.AlertsManagement"
Installer des composants d’observabilité
Les étapes décrites dans cette section déploient un collecteur OpenTelemetry (OTel), puis installent les ressources de supervision partagée et configurent votre cluster avec Arc pour qu’il émette des signaux d’observabilité vers ces ressources. Les ressources de supervision partagée incluent Azure Managed Grafana, Azure Monitor Workspace, Azure Managed Prometheus, Azure Log Analytics et Container Insights.
Déployer le collecteur OpenTelemetry
Clonez ou téléchargez le référentiel Opérations Azure IoT sur votre ordinateur local : azure-iot-operations.git.
Remarque
Le dépôt contient la définition de déploiement d’Opérations Azure IoT ainsi que des exemples qui incluent les exemples de tableaux de bord utilisés dans cet article.
Parcourez le chemin suivant dans votre copie locale du référentiel :
azure-iot-operations\tools\setup-3p-obs-infra
Créez un fichier appelé
otel-collector-values.yaml
et collez le code suivant pour définir un collecteur 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
Dans le fichier
otel-collector-values.yaml
, notez les valeurs suivantes que vous utilisez dans la commandeaz iot ops init
lorsque vous déployez Opérations Azure IoT sur le cluster :- fullnameOverride
- grpc.endpoint
- check_interval
Enregistrez et fermez le fichier.
Déployez le collecteur en exécutant les commandes suivantes :
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
Déployer des composants d’observabilité
Déployez les composants d’observabilité en exécutant l’une des commandes suivantes. Utilisez l’ID d’abonnement et le groupe de ressources du cluster avec Arc que vous souhaitez surveiller.
Remarque
Pour découvrir d’autres paramètres facultatifs à définir, consultez le fichier bicep. Les paramètres facultatifs peuvent spécifier des éléments tels que d’autres emplacements pour les ressources de cluster.
La commande suivante accorde l’accès administrateur pour l’instance Grafana nouvellement créée à l’utilisateur :
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 cet accès n’est pas ce que vous souhaitez, la commande suivante ne configure pas les autorisations. Configurez alors les autorisations manuellement à l’aide d’attributions de rôles avant que quelqu’un puisse accéder à l’instance Grafana. Attribuez l’un des rôles Grafana (Administrateur Grafana, Éditeur Grafana, Viewer Grafana) en fonction du niveau d’accès souhaité.
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 le déploiement réussit, quelques informations sont imprimées à la fin de la sortie de commande. Les informations incluent l’URL Grafana et les ID de ressource pour les ressources Log Analytics et Azure Monitor qui ont été créées. L’URL Grafana vous permet d’accéder à l’instance Grafana que vous avez configurée dans Déployer des tableaux de bord dans Grafana. Les deux ID de ressource vous permettent de configurer d’autres clusters avec Arc en suivant les étapes décrites dans Ajouter un cluster avec Arc à une infrastructure d’observabilité existante.
Configurer la collection de métriques Prometheus
Copiez et collez la configuration suivante dans un nouveau fichier nommé
ama-metrics-prometheus-config.yaml
, puis enregistrez le fichier :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
Appliquez le fichier de configuration en exécutant la commande suivante :
kubectl apply -f ama-metrics-prometheus-config.yaml
Déployer des tableaux de bord sur Grafana
Opérations Azure IoT fournit une collection de tableaux de bord conçus pour vous donner de nombreuses visualisations dont vous avez besoin pour comprendre l’intégrité et les performances de votre déploiement Azure IoT Operations.
Effectuez les étapes suivantes pour installer les tableaux de bord Grafana organisés par Opérations Azure IoT.
Connectez-vous à la console Grafana, puis dans la zone supérieure droite de l’application Grafana, sélectionnez l’icône +
Sélectionnez Importer un tableau de bord, suivez les invites pour accéder au chemin samples\grafana-dashboards dans votre copie clonée locale du dépôt, puis sélectionnez un fichier de tableau de bord JSON.
Lorsque l’application vous y invite, sélectionnez votre source de données Prometheus managée
Sélectionnez Importer