共用方式為


部署可檢視性資源並設定記錄

重要

已啟用 Azure Arc 的 Azure IoT 操作預覽版目前為預覽狀態。 請勿在生產環境使用此預覽版軟體。

當正式推出的版本可使用時,您必須部署新的 Azure IoT 操作安裝。 您將無法升級預覽安裝。

請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。

可檢視性可讓您查看 Azure IoT 操作每一層的設定。 它可讓您深入解析問題的實際行為,進而提升網站可靠性工程的效益。 Azure IoT 作業可透過裝載在 Azure 中的自訂策展 Grafana 儀錶板來提供可檢視性。 這些儀錶板由適用於 Prometheus 的 Azure 監視器受管理服務和 Container Insights 技術支援。 本指南說明如何設定 Azure Managed Prometheus 和 Grafana,並啟用 Azure Arc 叢集的監視。

請先完成本文 中的步驟,再 將 Azure IoT 作業部署至您的叢集。

必要條件

  • 已啟用 Arc 的 Kubernetes 叢集。
  • 在您的開發電腦上安裝 Azure CLI。 如需指示,請參閱 如何安裝 Azure CLI
  • Helm 安裝在您的開發電腦上。 如需指示,請參閱 安裝 Helm
  • 在開發電腦上安裝 Kubectl。 如需指示,請參閱 安裝 Kubernetes 工具

在 Azure 中建立資源

  1. 向叢集所在的訂用帳戶註冊提供者。

    注意

    每個訂用帳戶只需要執行此步驟一次。 若要註冊資源提供者,您需要 /register/action 作業的執行權限,訂用帳戶參與者和擁有者角色中都包含該權限。 如需詳細資訊,請參閱 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
    
  2. 為已啟用 Azure Arc 的叢集和 Azure 受控 Grafana 安裝適用於計量集合的 Azure CLI 擴充功能。

    az extension add --name k8s-extension
    az extension add --name amg
    
  3. 建立 Azure 監視器工作區,以啟用已啟用 Azure Arc 的 Kubernetes 叢集的計量集合。

    az monitor account create --name <WORKSPACE_NAME> --resource-group <RESOURCE_GROUP> --location <LOCATION> --query id -o tsv
    

    從此命令的輸出儲存 Azure 監視器工作區識別碼。 在下一節中啟用計量集合時,您會使用標識符。

  4. 建立 Azure 受控 Grafana 實例,以可視化您的 Prometheus 計量。

    az grafana create --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv
    

    從此命令的輸出儲存 Grafana 識別符。 在下一節中啟用計量集合時,您會使用標識符。

  5. 建立 Container Insights 的 Log Analytics 工作區。

    az monitor log-analytics workspace create -g <RESOURCE_GROUP> -n <LOGS_WORKSPACE_NAME> --query id -o tsv
    

    從此命令的輸出儲存Log Analytics工作區標識碼。 在下一節中啟用計量集合時,您會使用標識符。

啟用叢集的計量集合

更新 Azure Arc 叢集以收集計量,並將其傳送至先前建立的 Azure 監視器工作區。 您也會連結此工作區與 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>

啟用記錄收集的 Container Insights 記錄。

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>

完成這些步驟之後,您已設定 Azure 監視器和 Grafana 並連結至您的叢集,以取得可觀察性和計量集合。

部署 OpenTelemetry 收集器

定義 OpenTelemetry (OTel) 收集器並將其部署至已啟用 Arc 的 Kubernetes 叢集。

  1. 建立名為 otel-collector-values.yaml 的檔案,並將下列程式代碼貼到其中以定義 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
    
  2. 在 檔案中 otel-collector-values.yaml ,記下您在叢集上部署 Azure IoT 作業時,在 命令中使用的 az iot ops create 下列值:

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  3. 儲存並關閉檔案。

  4. 執行下列命令來部署收集器:

    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
    

設定 Prometheus 計量集合

在叢集上設定 Prometheus 計量集合。

  1. 建立名為 ama-metrics-prometheus-config.yaml 的檔案,並貼上下列組態:

    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. 執行下列命令以套用群組態檔:

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

將儀錶板部署至 Grafana

Azure IoT 作業提供範例 儀錶板 ,其設計目的是讓您瞭解 Azure IoT 作業部署的健康情況和效能所需的許多視覺效果。

完成下列步驟以安裝 Azure IoT 操作策劃的 Grafana 儀錶板。

  1. 複製或下載 azure-iot-operations 存放庫,以在本機取得範例 Grafana 儀錶板 json 檔案: https://github.com/Azure/azure-iot-operations

  2. 登入 Grafana 控制台。 您可以透過 Azure 入口網站 存取控制台,或使用 az grafana show 命令來擷取 URL。

    az grafana show --name <GRAFANA_NAME> --resource-group <RESOURCE_GROUP> --query url -o tsv
    
  3. 在 Grafana 應用程式中,選取 + 圖示。

  4. 選取 [匯入儀表板]

  5. 流覽至 Azure IoT Operations 存放庫本機複本中的範例儀錶板目錄、azure-iot-operations>範例>grafana-dashboard,然後選取aio.sample.json儀錶板檔案。

  6. 當應用程式提示時,請選取受控 Prometheus 資料來源。

  7. 選取匯入