Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Azure IoT Einsatz-Einblick bietet Einsicht in jede Ebene Ihrer Konfiguration und gibt Ihnen Erkenntnisse über das tatsächliche Verhalten von Problemen, wodurch die Effektivität der Sitezuverlässigkeits-Entwicklung erhöht wird. Azure IoT Einsatz bietet Einblick durch benutzerdefinierte kuratierte Grafana-Dashboards, die in Azure gehostet werden, unterstützt vom verwalteter Azure Monitor-Dienst für Prometheus und Container Insights.
In diesem Artikel erfahren Sie, wie Sie Einblicksressourcen von Azure IoT Einsatz bereitstellen, Azure Managed Prometheus und Grafana einrichten und eine umfassende Überwachung für Ihren Azure Arc-Cluster ermöglichen. Sie können alle Observability-Ressourcen mithilfe eines automatisierten Skripts bereitstellen oder die manuellen Schritte für ein angepasstes Setup ausführen.
Voraussetzungen
- Arc-fähiger Kubernetes-Cluster.
- Azure CLI auf Ihrem Clustercomputer installiert. Die erforderlichen Anweisungen finden Sie unter Installieren der Azure CLI.
- Helm auf Ihrem Clustercomputer installiert. Anleitungen finden Sie unter Installation von Helm.
- Kubectl auf Ihrem Clustercomputer installiert. Anleitungen finden Sie unter Installation von Kubernetes-Tools.
Die Azure CLI Beispiele in diesem Artikel verwenden Umgebungsvariablen, sodass Sie jeden Wert einmal festlegen und dann die Befehle as-iskopieren und einfügen können. Wenn Sie die Azure IoT Einsatz Codespaces-Umgebung aus dem Quickstart verwenden, sind diese Variablen bereits für Sie festgelegt und Sie können diesen Schritt überspringen. Ansonsten setze die folgenden Umgebungsvariablen in deiner Shell, bevor du die Befehle ausführst.
Die folgenden Skripte legen die am häufigsten verwendeten Umweltvariablen fest:
| Umgebungsvariable | Description |
|---|---|
SUBSCRIPTION_ID |
Die ID des Abonnements, das Ihre Azure IoT Einsatz-Instanz enthält. |
RESOURCE_GROUP |
Der Name der Ressourcengruppe, die Ihre Azure IoT Einsatz-Instanz enthält. |
AIO_INSTANCE_NAME |
Der Name Ihrer Azure IoT Einsatz Instanz. Um deine Instanzen aufzulisten, führe az iot ops list -o table. |
CLUSTER_NAME |
Der Name des Azure Arc-fähigen Kubernetes-Clusters, der deine Instanz hostet. |
LOCATION |
Die Azure-Region zur Nutzung für neue Ressourcen, zum Beispiel eastus. |
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>
Du musst nur die Variablen festlegen, die dieser Artikel verwendet. Dieser Artikel könnte zusätzliche Umgebungsvariablen für die von Ihnen gewählten Ressourcennamen verwenden. Der Artikel erklärt, wie man sie dort platziert, wo sie eingeführt werden.
Bereitstellen mit dem automatisierten Skript
Um alle Observability-Ressourcen in einem einzigen Schritt einzurichten, verwenden Sie das automatisierte deploy-observability-resources.sh Skript. Das Skript automatisiert die Schritte in diesem Artikel, von der Erstellung von Azure-Ressourcen über die Einrichtung der Observability-Konfiguration. Sie können das Skript mehrmals sicher ausführen. Es überspringt Ressourcen, die bereits vorhanden sind, und aktualisiert Ressourcen, die Änderungen benötigen.
Laden Sie das Skript herunter:
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.shLegen Sie die erforderlichen Umgebungsvariablen fest, und führen Sie das Skript aus:
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.shSetze
LOCATIONauf die Azure-Region für die Bereitstellung neuer Ressourcen. Wenn alle Ressourcen bereits vorhanden sind, istLOCATIONoptional.Variable Description RESOURCE_GROUPAzure-Ressourcengruppe für Ihre Azure IoT-Vorgänge und Überwachungsressourcen. CLUSTER_NAMEName des Arc-fähigen Kubernetes-Clusters, in dem Azure IoT Einsatz bereitgestellt wird. INSTANCE_NAMEName der zu konfigurierenden Azure IoT Einsatz-Instanz. WORKSPACE_NAMEName für den Azure Monitor-Arbeitsbereich (erstellt, wenn er nicht vorhanden ist). GRAFANA_NAMEName für die Azure Managed Grafana-Instanz (erstellt, wenn sie nicht vorhanden ist). LOGS_WORKSPACE_NAMEName für den Log Analytics-Arbeitsbereich (erstellt, wenn er nicht vorhanden ist). LOCATIONAzure-Region für neue Ressourcen. Optional, wenn alle Ressourcen bereits vorhanden sind.
Fahren Sie nach Abschluss des Skripts mit der Bereitstellung von Dashboards für Grafana fort, um die kuratierten Dashboards zu importieren.
Note
Wenn Sie mehr Kontrolle über einzelne Schritte benötigen, z. B. um die OpenTelemetry Collector-Konfiguration anzupassen oder vorhandene Überwachungsressourcen wiederzuverwenden, führen Sie die manuellen Schritte im restlichen Artikel aus, anstatt das Skript zu verwenden.
Erstellen von Ressourcen in Azure
Registrieren Sie Anbieter für das Abonnement, in dem sich Ihr Cluster befindet.
Note
Führen Sie diesen Schritt nur einmal pro Abonnement aus. Zum Registrieren von Ressourcenanbietern benötigen Sie die Berechtigung zum Ausführen des
/register/actionVorgangs, der in den Rollen " Mitwirkender" und "Besitzer" des Abonnements enthalten ist. Weitere Informationen finden Sie unter Azure Ressourcenanbieter und -typen.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.OperationalInsightsInstallieren sie Azure CLI-Erweiterungen für die Metriksammlung für Azure Arc-fähige Cluster und azure Managed Grafana:
az extension add --upgrade --name k8s-extension az extension add --upgrade --name amgErstellen Sie einen Azure Monitor-Arbeitsbereich, um die Metriksammlung für Ihren Azure Arc-fähigen Kubernetes-Cluster zu aktivieren:
AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create --name $WORKSPACE_NAME --resource-group $RESOURCE_GROUP --location $LOCATION --query id -o tsv)Der Befehl speichert die Azure Monitor Workspace ID in
AZURE_MONITOR_WORKSPACE_ID. Sie verwenden die ID, wenn Sie im nächsten Abschnitt die Metrikerfassung aktivieren.Erstellen Sie eine Azure Managed Grafana-Instanz, um Ihre Prometheus-Metriken zu visualisieren:
GRAFANA_ID=$(az grafana create --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query id -o tsv)Der Befehl speichert die Grafana-ID in
GRAFANA_ID. Sie verwenden die ID, wenn Sie im nächsten Abschnitt die Metrikerfassung aktivieren.Erstellen eines Log Analytics-Arbeitsbereichs für Containereinblicke:
LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace create -g $RESOURCE_GROUP -n $LOGS_WORKSPACE_NAME --query id -o tsv)Der Befehl speichert die Log Analytics-Arbeitsbereichs-ID in
LOG_ANALYTICS_WORKSPACE_ID. Du verwendest die ID, wenn du im nächsten Abschnitt die Logsammlung aktivierst.
Aktivieren Sie die Metrikerfassung für den Cluster
Aktualisieren Sie den Azure Arc-Cluster, um Metriken zu sammeln und sie an den Azure Monitor-Arbeitsbereich zu senden, den Sie erstellt haben. Sie verknüpfen diesen Arbeitsbereich auch mit der Grafana-Instanz:
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
Container Insights-Protokolle zur Protokollerfassung aktivieren
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
Nachdem diese Schritte abgeschlossen sind, haben Sie sowohl Azure Monitor als auch Grafana eingerichtet und mit Ihrem Cluster für Einblicke und Metrikerfassung verknüpft.
Bereitstellen eines OpenTelemetry Collector
Definieren und implementieren Sie einen OpenTelemetry (OTel)-Collector in Ihrem Arc-fähigen Kubernetes-Cluster.
Erstellen Sie eine Datei namens
otel-collector-values.yaml, und fügen Sie den folgenden Code ein, um einen OpenTelemetry Collector zu definieren: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: TCPNotieren Sie sich die folgenden Werte der Datei
otel-collector-values.yaml, die Sie im Befehlaz iot ops createbeim Bereitstellen von Azure IoT Einsatz im Cluster verwenden:fullnameOverridegrpc.endpointcheck_interval
Speichern und schließen Sie die Datei.
Stellen Sie den Collector bereit, indem Sie die folgenden Befehle ausführen:
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
Konfigurieren der Prometheus-Metriksammlung
Konfigurieren Sie die Prometheus-Metriksammlung auf Ihrem Cluster.
Erstellen Sie eine Datei namens
ama-metrics-prometheus-config.yaml, und fügen Sie die folgende Konfiguration ein: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-systemWenden Sie die Konfigurationsdatei an, indem Sie den folgenden Befehl ausführen:
kubectl apply -f ama-metrics-prometheus-config.yaml
Einrichten der Einblickskonfiguration
Sie können die Einblickskonfiguration Ihrer Azure IoT Einsatz-Bereitstellung jederzeit einrichten. Nachdem Observability-Ressourcen konfiguriert wurden, können Sie die Observability-Konfiguration aktualisieren, indem Sie den az iot ops upgrade Befehl mit dem --ops-config Parameter ausführen, um die neuen Konfigurationswerte anzugeben:
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.exportInternalSeconds=60
| Parameter | Wert | Description |
|---|---|---|
--ops-config |
observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> |
Geben Sie die OpenTelemetry-Collectoradresse (OTel) an, die Sie in der Datei „otel-collector-values.yaml“ konfiguriert haben. Die Anweisungen in diesem Artikel verwenden die Beispielwerte fullnameOverride=aio-otel-collector und grpc.endpoint=4317. |
--ops-config |
observability.metrics.exportInternalSeconds=<CHECK_INTERVAL> |
Geben Sie den check_interval Wert an, den Sie in der Datei "otel-collector-values.yaml" konfiguriert haben.Die Anweisungen in diesem Artikel verwenden den Beispielwert check_interval=60. |
Note
In Vorschauversionen funktioniert der az iot ops upgrade-Befehl nicht für das Upgrade auf eine Vorschauversion, funktioniert aber für die Konfiguration von Azure IoT Einsatz für Einblick.
Bereitstellen von Dashboards in Grafana
Azure IoT Einsatz bietet ein Beispieldashboard, das Ihnen viele der Visualisierungen bietet, die Sie benötigen, um die Integrität und Leistung Ihrer Azure IoT Einsatz-Bereitstellung zu verstehen.
Führen Sie die folgenden Schritte aus, um die von Azure IoT Einsatz kuratierten Grafana-Dashboards zu installieren:
Klonen Sie oder laden Sie das Repository explore-iot-operations herunter, um die JSON-Datei des Grafana-Dashboards lokal herunterzuladen: https://github.com/Azure-Samples/explore-iot-operations.
Melden Sie sich bei der Grafana-Konsole an. Sie können über das Azure-Portal auf die Konsole zugreifen oder den Befehl
az grafana showverwenden, um die URL abzurufen.az grafana show --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query url -o tsvWählen Sie auf der Grafana-Startseite die Kachel Erstes Dashboard erstellen aus.
Wählen Sie Dashboard importieren aus.
Navigieren Sie zu dem Beispiel-Dashboardverzeichnis in Ihrer lokalen Kopie des Azure IoT Einsatz-Repositorys, explore-iot-operations >-Beispiele > Einblick > grafana-dashboard, und wählen Sie dann die aio-observability.json-Dashboarddatei aus.
Wenn die Anwendung dazu auffordert, wählen Sie Ihre verwaltete Prometheus-Datenquelle aus.
Klicken Sie auf Importieren.
Note
Stellen Sie in der aio-observability.json sicher, dass Sie sowohl die Prometheus- als auch die Azure Monitor-Datenquelle konfigurieren und die subscriptionId Variable für Abfrageprotokolle auf Ihre Azure-Abonnement-ID festlegen.
Nächste Schritte
- Aktivieren Sie sichere Einstellungen zum Einrichten von geheimen Verwaltungs- und verwalteten Identitäten.
- Verwalten von Zertifikaten für externe Kommunikation.