次の方法で共有


概要: Azure IoT Operations プレビューでスクリプトを使用して監視を構成する

重要

Azure Arc によって実現されている Azure IoT Operations プレビューは、現在プレビュー段階です。 運用環境ではこのプレビュー ソフトウェアを使わないでください。

Azure IoT Operations の一般公開リリースが提供されたときには、新規インストールをデプロイすることが必要になります。 プレビュー インストールからのアップグレードはできません。

ベータ版、プレビュー版、または一般提供としてまだリリースされていない Azure の機能に適用される法律条項については、「Microsoft Azure プレビューの追加使用条件」を参照してください。

監視により、Azure IoT Operations Preview 構成のすべてのレイヤーが可視化されます。 これは、問題の実際の動作に関する分析情報を提供し、サイト信頼性エンジニアリングの有効性を高めます。 Azure IoT Operations を使用すると、Azure でホストされているカスタム キュレーションされた Grafana ダッシュボードを通じて、可観測性が提供されます。 これらのダッシュボードは、Prometheus 用の Azure Monitor マネージド サービスと Container Insights を利用しています。 この記事では、監視に必要なサービスを構成する方法を示します。

前提条件

  • Arc 対応 Kubernetes クラスター。
  • 開発用コンピューターにインストールされた Helm。 手順については、Helm のインストールに関するページを参照してください。
  • 開発用コンピューターにインストールされた kubectl。 手順については、Kubernetes ツールのインストールに関するページを参照してください。
  • 開発マシンにインストールされた Azure CLI。 詳細については、Azure CLIのインストール方法に関するページを参照してください。

サブスクリプションの構成

次のコードを実行して、クラスターが配置されているサブスクリプションにプロバイダーを登録します。

Note

この手順は、サブスクリプションごとに 1 回だけ実行する必要があります。 リソース プロバイダーを登録するには、サブスクリプションの共同作成者および所有者のロール内に含まれる、/register/action 操作を行うためのアクセス許可が必要です。 詳細については、「Azure リソース プロバイダーと種類」を参照してください。

az account set -s <subscription-id>
az provider register -n "Microsoft.Insights"
az provider register -n "Microsoft.AlertsManagement"

監視コンポーネントをインストールする

このセクションの手順では、OpenTelemetry (OTel) コレクターをデプロイした後、共有監視リソースをインストールし、これらのリソースに監視信号を出力するように Arc 対応クラスターを構成します。 共有監視リソースには、Azure Managed Grafana、Azure Monitor ワークスペース、Azure Managed Prometheus、Azure Log Analytics、Container Insights が含まれます。

OpenTelemetry (OTel) コレクターをデプロイする

  1. ローカル コンピューターに Azure IoT Operations リポジトリ (azure-iot-operations.git) を複製またはダウンロードします。

    Note

    リポジトリには、Azure IoT Operations のデプロイ定義と、この記事で使用するサンプル ダッシュボードを含むサンプルが含まれています。

  2. リポジトリのローカル コピー内で次のパスを参照します。

    azure-iot-operations\tools\setup-3p-obs-infra

  3. otel-collector-values.yaml という名前のファイルを作成し、それに次のコードを貼り付けて、OpenTelemetry (OTel) コレクターを定義します。

    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
    
  4. otel-collector-values.yaml ファイルの次の値を書き留めておきます。これらの値は、Azure IoT Operations をクラスターにデプロイするときに az iot ops init コマンドで使用します。

    • fullnameOverride
    • grpc.endpoint
    • check_interval
  5. ファイルを保存して閉じます。

  6. 次のコマンドを実行してコレクターをデプロイします。

    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
    

監視コンポーネントをデプロイする

  • 次のいずれかのコマンドを実行して、監視コンポーネントをデプロイします。 監視する Arc 対応クラスターのサブスクリプション ID とリソース グループを使用します。

    Note

    設定できるその他の省略可能なパラメーターについては、bicep ファイルを参照してください。 省略可能なパラメーターでは、クラスター リソースの代替の場所などを指定できます。

    次のコマンドは、新しく作成された Grafana インスタンスの管理者アクセス権をユーザーに付与します。

    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
    

    このアクセス権が必要ない場合は、アクセス許可を構成しない次のコマンドを実行します。 その後、誰でも Grafana インスタンスにアクセスできるようにするために、ロールの割り当てを使用して、アクセス許可を手動で設定します。 必要なアクセス レベルに応じて、いずれかの Grafana ロール (Grafana 管理者、Grafana 編集者、Grafana 閲覧者) を割り当てます。

    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
    

    デプロイが成功すると、コマンド出力の最後にいくつかの情報が出力されます。 この情報には、Grafana URL と、作成された Log Analytics と Azure Monitor の両方のリソースのリソース ID が含まれます。 Grafana URL を使用すると、「ダッシュボードを Grafana にデプロイする」の中で構成した Grafana インスタンスに移動できます。 2 つのリソース ID を使用すると、「@既存の監視インフラストラクチャ に Arc 対応クラスターを追加する」の手順に従って、他の Arc 対応クラスターを構成できます。

Prometheus メトリック コレクションを構成する

  1. 次の構成をコピーし、ama-metrics-prometheus-config.yaml という名前の新しいファイルに貼り付け、そのファイルを保存します。

    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
    
  2. 次のコマンドを実行して、構成を適用します。

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

ダッシュボードを Grafana にデプロイする

Azure IoT Operations には、Azure IoT Operations デプロイの正常性とパフォーマンスを把握するために必要な視覚化の多くを提供するように設計された、ダッシュボードのコレクションが用意されています。

Azure IoT Operations でキュレーションされた Grafana ダッシュボードをインストールするには、次の手順を実行します。

  1. Grafana コンソールにサインインし、Grafana アプリケーションの右上の領域で [+] アイコンを選択します

  2. [ダッシュボードのインポート] を選択し、プロンプトに従って、クローンしたリポジトリのローカル コピーの samples\grafana-dashboards パスを参照し、JSON ダッシュボード ファイルを選びます

  3. アプリケーションのプロンプトが表示されたら、マネージド Prometheus データ ソースを選択します

  4. インポート を選択する