Menyebarkan sumber daya observabilitas dan menyiapkan log

Pengamatan Operasi Azure IoT memberikan visibilitas ke setiap lapisan konfigurasi Anda dan memberi Anda wawasan tentang perilaku masalah aktual, yang meningkatkan efektivitas rekayasa keandalan situs. Operasional Azure IoT menawarkan pengamatan melalui dasbor Grafana yang disusun secara khusus yang dihosting di Azure, didukung oleh layanan terkelola Azure Monitor untuk Prometheus dan Container Insights.

Artikel ini memperlihatkan kepada Anda cara menyebarkan sumber daya pengamatan Operasi Azure IoT, menyiapkan Azure Managed Prometheus dan Grafana, dan mengaktifkan pemantauan komprehensif untuk kluster Azure Arc Anda. Anda dapat menyebarkan semua sumber daya pengamatan menggunakan skrip otomatis, atau mengikuti langkah-langkah manual untuk penyiapan yang disesuaikan.

Prasyarat

  • Kluster Kubernetes dengan dukungan Arc.
  • Azure CLI diinstal pada komputer kluster Anda. Untuk petunjuknya, lihat Cara menginstal Azure CLI.
  • Helm diinstal pada mesin kluster Anda. Untuk petunjuknya, lihat Menginstal Helm.
  • Kubectl diinstal pada komputer kluster Anda. Untuk petunjuknya, lihat Menginstal alat Kubernetes.

Contoh Azure CLI dalam artikel ini menggunakan variabel lingkungan sehingga Anda dapat mengatur setiap nilai sekali lalu menyalin dan menempelkan perintah as-is. Jika Anda menggunakan lingkungan Operasional Azure IoT Codespaces dari quickstart, variabel-variabel ini sudah diatur untuk Anda dan Anda dapat melewati langkah ini. Jika tidak, atur variabel lingkungan berikut dalam shell Anda sebelum menjalankan perintah.

Skrip berikut mengatur variabel lingkungan yang paling umum digunakan:

Variabel Lingkungan Deskripsi
SUBSCRIPTION_ID ID langganan yang berisi instance Operasional Azure IoT Anda.
RESOURCE_GROUP Nama grup sumber daya yang berisi instance Operasional Azure IoT Anda.
AIO_INSTANCE_NAME Nama instance Operasional Azure IoT Anda. Untuk mencantumkan instance Anda, jalankan az iot ops list -o table.
CLUSTER_NAME Nama klaster Kubernetes yang mendukung Azure Arc dan menjadi host instance Anda.
LOCATION Wilayah Azure yang digunakan untuk sumber daya baru, misalnya eastus.
SUBSCRIPTION_ID=<subscription-id>
RESOURCE_GROUP=<resource-group-name>
AIO_INSTANCE_NAME=<instance-name>
CLUSTER_NAME=<cluster-name>
LOCATION=<region>

Anda hanya perlu mengatur variabel yang digunakan artikel ini. Artikel ini mungkin menggunakan variabel lingkungan tambahan untuk nama sumber daya yang Anda pilih. Artikel ini menjelaskan cara menempatkannya di tempat yang diperkenalkan.

Menyebarkan dengan skrip otomatis

Untuk menyiapkan semua sumber daya pengamatan dalam satu langkah, gunakan skrip deploy-observability-resources.sh otomatis. Skrip mengotomatiskan langkah-langkah dalam artikel ini, mulai dari membuat sumber daya Azure hingga menyiapkan konfigurasi pengamatan. Anda dapat menjalankan skrip beberapa kali dengan aman. Ini melewati sumber daya yang sudah ada dan memperbarui sumber daya yang membutuhkan perubahan.

  1. Unduh skrip:

    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.sh
    
  2. Atur variabel lingkungan yang diperlukan dan jalankan skrip:

    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.sh
    

    Atur LOCATION ke wilayah Azure untuk menyediakan sumber daya baru. Jika semua sumber daya sudah ada, LOCATION bersifat opsional.

    Variable Deskripsi
    RESOURCE_GROUP Grup sumber daya Azure untuk Operasi Azure IoT dan sumber daya pemantauan Anda.
    CLUSTER_NAME : Nama kluster Kubernetes yang didukung Arc di mana Operasional Azure IoT diterapkan.
    INSTANCE_NAME Nama instans Operasional Azure IoT untuk dikonfigurasi.
    WORKSPACE_NAME Nama untuk ruang kerja Azure Monitor (dibuat jika tidak ada).
    GRAFANA_NAME Nama untuk instans Azure Managed Grafana (dibuat jika tidak ada).
    LOGS_WORKSPACE_NAME Nama untuk ruang kerja Log Analitik (akan dibuat jika belum ada).
    LOCATION Wilayah Azure untuk sumber daya baru. Opsional jika semua sumber daya sudah ada.

Setelah skrip selesai, lanjutkan ke Menyebarkan dasbor menggunakan Grafana untuk mengimpor dasbor yang telah dipilih.

Note

Jika Anda memerlukan kontrol lebih besar atas langkah-langkah individual, misalnya, untuk menyesuaikan konfigurasi OpenTelemetry Collector atau menggunakan kembali sumber daya pemantauan yang ada, ikuti langkah-langkah manual di sisa artikel ini alih-alih menggunakan skrip.

Buat sumber daya di Azure

  1. Daftarkan penyedia dengan langganan tempat kluster Anda berada.

    Note

    Jalankan langkah ini hanya sekali per langganan. Untuk mendaftarkan penyedia sumber daya, Anda memerlukan izin untuk melakukan operasi /register/action, yang termasuk dalam peran Kontributor dan Pemilik dalam langganan. Untuk informasi selengkapnya, lihat penyedia sumber daya Azure dan jenis-jenisnya.

    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
    
  2. Instal ekstensi Azure CLI untuk koleksi Metrik untuk kluster dengan dukungan Azure Arc dan Azure Managed Grafana:

    az extension add --upgrade --name k8s-extension
    az extension add --upgrade --name amg
    
  3. Buat ruang kerja Azure Monitor untuk mengaktifkan pengumpulan metrik untuk kluster Kubernetes dengan dukungan Azure Arc:

    AZURE_MONITOR_WORKSPACE_ID=$(az monitor account create --name $WORKSPACE_NAME --resource-group $RESOURCE_GROUP --location $LOCATION --query id -o tsv)
    

    Perintah ini menyimpan ID workspace Azure Monitor di AZURE_MONITOR_WORKSPACE_ID. Anda menggunakan ID saat mengaktifkan koleksi metrik di bagian berikutnya.

  4. Buat instans Azure Managed Grafana untuk memvisualisasikan metrik Prometheus Anda:

    GRAFANA_ID=$(az grafana create --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query id -o tsv)
    

    Perintah ini menyimpan ID Grafana di GRAFANA_ID. Anda menggunakan ID saat mengaktifkan koleksi metrik di bagian berikutnya.

  5. Buat ruang kerja Analitik Log untuk Container Insights:

    LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace create -g $RESOURCE_GROUP -n $LOGS_WORKSPACE_NAME --query id -o tsv)
    

    Perintah ini menyimpan ID workspace Log Analytics di LOG_ANALYTICS_WORKSPACE_ID. Anda menggunakan ID tersebut saat mengaktifkan pengumpulan log di bagian berikutnya.

Mengaktifkan pengumpulan metrik untuk kluster

Perbarui kluster Azure Arc untuk mengumpulkan metrik dan mengirimkannya ke ruang kerja Azure Monitor yang Anda buat. Anda juga menautkan ruang kerja ini ke instans 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

Aktifkan Container Insights logs untuk pengumpulan 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

Setelah menyelesaikan langkah-langkah ini, Anda memiliki Azure Monitor dan Grafana yang disiapkan dan ditautkan ke kluster Anda untuk pengamatan dan pengumpulan metrik.

Mengimplementasikan Kolektor OpenTelemetry

Tentukan dan sebarkan Pengumpul OpenTelemetry (OTel) ke kluster Kubernetes yang didukung Arc.

  1. Buat file bernama otel-collector-values.yaml dan tempelkan kode berikut ke dalam file tersebut untuk mendefinisikan Collector 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: TCP
    
  2. Dalam file otel-collector-values.yaml, buat catatan nilai-nilai berikut yang akan Anda gunakan dalam perintah az iot ops create saat menerapkan Operasional Azure IoT pada kluster:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. Simpan dan tutup file.

  4. Sebarkan kolektor dengan menjalankan perintah berikut:

    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
    

Mengonfigurasi koleksi metrik Prometheus

Konfigurasikan pengumpulan metrik Prometheus di kluster Anda.

  1. Buat file bernama ama-metrics-prometheus-config.yaml dan tempel konfigurasi berikut:

    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
    
  2. Terapkan file konfigurasi dengan menjalankan perintah berikut:

    kubectl apply -f ama-metrics-prometheus-config.yaml
    

Menyiapkan konfigurasi pengamatan

Anda dapat menyiapkan konfigurasi pengamatan penyebaran Operasi Azure IoT Anda kapan saja. Setelah sumber daya pengamatan dikonfigurasi, Anda dapat meningkatkan konfigurasi observabilitas dengan menjalankan az iot ops upgrade perintah dengan --ops-config parameter untuk menentukan nilai konfigurasi baru:

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
Parameter Nilai Deskripsi
--ops-config observability.metrics.openTelemetryCollectorAddress=<FULLNAMEOVERRIDE>.azure-iot-operations.svc.cluster.local:<GRPC_ENDPOINT> Berikan alamat kolektor OpenTelemetry (OTel) yang Anda konfigurasikan dalam file otel-collector-values.yaml.

Instruksi dalam artikel ini menggunakan nilai fullnameOverride=aio-otel-collector sampel dan grpc.endpoint=4317.
--ops-config observability.metrics.exportIntervalSeconds=<CHECK_INTERVAL> Masukkan nilai check_interval yang Anda konfigurasi di file otel-collector-values.yaml.

Instruksi dalam artikel ini menggunakan nilai check_interval=60sampel .

Note

Dalam rilis pratinjau, az iot ops upgrade perintah tidak berfungsi untuk meningkatkan ke versi pratinjau, tetapi berfungsi untuk mengonfigurasi Operasi Azure IoT untuk pengamatan.

Mengirim dasbor ke Grafana

Operasi Azure IoT menyediakan dasbor contoh, yang dirancang untuk memberi Anda berbagai visualisasi yang Anda perlukan untuk memahami kesehatan dan kinerja penerapan Operasional Azure IoT Anda.

Selesaikan langkah-langkah berikut untuk menginstal dasbor Grafana yang dikumpulkan Operasional Azure IoT:

  1. Klon atau unduh repositori explore-iot-operations untuk mendapatkan sampel file json Dashboard Grafana secara lokal: https://github.com/Azure-Samples/explore-iot-operations.

  2. Masuk ke konsol Grafana. Anda dapat mengakses konsol melalui portal Azure atau menggunakan az grafana show perintah untuk mengambil URL.

    az grafana show --name $GRAFANA_NAME --resource-group $RESOURCE_GROUP --query url -o tsv
    
  3. Pada halaman arahan Grafana, pilih ubin Buat dasbor pertama Anda.

  4. Pilih Impor Dasbor.

  5. Telusuri ke direktori dasbor contoh dalam salinan lokal repositori Azure IoT Anda, explore-iot-operations > samples > observability > grafana-dashboard, kemudian pilih file dasbor aio-observability.json.

  6. Saat aplikasi meminta, pilih sumber data Prometheus terkelola Anda.

  7. Pilih Import.

Note

Dalam file aio-observability.json , pastikan untuk mengonfigurasi sumber data Prometheus dan Azure Monitor, dan atur subscriptionId variabel ke ID langganan Azure Anda, untuk kueri log.

Langkah berikutnya