すべてのプロダクト
Search
ドキュメントセンター

:アプリケーションモニタリングeBPF Editionを使用して、Kubernetes環境のアプリケーションを監視する

最終更新日:Dec 30, 2024

アプリケーションモニタリングeBPF Edition(アプリケーションリアルタイム監視サービス(ARMS)の一部)を使用すると、Kubernetes環境にデプロイされたアプリケーションを非侵入的に監視できます。アプリケーションモニタリングeBPF Editionでは、トポロジー、インターフェースコール、アプリケーションの概要、およびアラートに基づいてアプリケーションを監視できます。このトピックでは、アプリケーションモニタリングeBPF Editionを使用してKubernetes環境のアプリケーションを監視する方法について説明します。

説明

このトピックは、Alibaba Cloud Container Service for Kubernetes(ACK)クラスタには適用されません。ACKクラスタ内のアプリケーションを監視する方法については、アプリケーションをアプリケーションモニタリングeBPF Editionに手動で接続するを参照してください。

前提条件

  • Kubernetesクラスタのバージョンが1.20以降であること。

  • クラスタがインターネット経由でアクセス可能であるか、クラウドエンタープライズネットワーク(CEN)インスタンスを使用して、Alibaba Cloud仮想プライベートクラウド(VPC)とクラスタ間にネットワーク接続が確立されていること。

  • x86アーキテクチャが使用されており、カーネルバージョンが4.19以降であること。その他の環境要件については、アプリケーションモニタリングeBPF Editionのオペレーティングシステムの要件と制限を参照してください。

ステップ1:Helm v3をインストールする

Helm v3のインストール方法については、Helmドキュメントを参照してください。

ステップ2:ack-arms-cmonitorエージェントをインストールする

アプリケーションモニタリングeBPF Editionは、DeploymentおよびStatefulSetタイプのアプリケーションのみを監視できます。DeploymentアプリケーションとStatefulSetアプリケーションの接続には、同じ手順が必要です。アプリケーションモニタリングeBPF EditionでDeploymentアプリケーションを監視するには、次の手順を実行します。

  1. 次のwgetコマンドを実行して、ack-arms-cmonitorインストールパッケージをダウンロードします。

    wget 'https://aliacs-app-catalog.oss-cn-hangzhou.aliyuncs.com/charts-incubator/ack-arms-cmonitor-4.1.2.tgz'
  2. 次のコマンドを実行して、ack-arms-cmonitorインストールパッケージを解凍します。

    tar xvf ack-arms-cmonitor-4.1.2.tgz
  3. otel-collector-deployment.yamlファイルの環境変数IS_PUBLICpublicに変更します。

  4. インストールパッケージ内のvalues.yamlファイルを編集します。ビジネス要件に基づいて次のパラメータを変更し、ファイルを保存します。

    registry: registry-__ACK_REGION_ID__-vpc.ack.aliyuncs.com
    cluster_id: __ACK_CLUSTER_ID__
    accessKey: __ACCESSKEY__
    accessKeySecret: __ACCESSKEY_SECRET__
    uid: "__ACK_UID__"
    region_id: __ACK_REGION_ID__
    • registry:イメージアドレス。

      説明

      上記の例では、仮想プライベートクラウド(VPC)のイメージアドレスが使用されています。アプリケーションがインターネット上にデプロイされている場合は、次のイメージアドレスを使用してください。

      registry-__ACK_REGION_ID__.ack.aliyuncs.com
    • __ACK_REGION_ID__:リージョンID。アプリケーションモニタリングeBPF Editionがサポートするリージョンについては、サポートされているリージョンを参照してください。

    • __ACK_CLUSTER_ID__:Kubernetesクラスタの一意のID。<uid>-<clusterid>形式でこのパラメータを指定することをお勧めします。

    • __ACCESSKEY__および__ACCESSKEY_SECRET__:Alibaba CloudアカウントのAccessKey IDとAccessKeyシークレット。Alibaba CloudアカウントのAccessKey IDとAccessKeyシークレットを取得する方法については、AccessKeyペアを取得するを参照してください。

      重要

      AliyunARMSFullAccessポリシーとAliyunSTSAssumeRoleAccessポリシーがAlibaba Cloudアカウントにアタッチされていることを確認する必要があります。

    • __ACK_UID__:Alibaba CloudアカウントのID。Alibaba CloudアカウントのIDを取得するには、Alibaba Cloud管理コンソールの右上隅にあるプロフィール画像にポインタを移動します。

  5. ack-arms-cmonitorエージェントをインストールします。

    ack-arms-cmonitorインストールパッケージを開かずに、次のコマンドを実行します。

    helm3 upgrade --install ack-arms-cmonitor ack-arms-cmonitor --namespace arms-prom --create-namespace

ステップ3:アプリケーションのYAMLファイルを編集する

  1. 次のコマンドを実行して、DeploymentアプリケーションのYAMLファイルを表示します。

    kubectl get deployment {Deploymentアプリケーション名} -o yaml
    説明

    Deploymentアプリケーションの名前がわからない場合は、次のコマンドを実行してすべてのDeploymentアプリケーションを表示します。結果に必要なDeploymentアプリケーションがあります。次に、アプリケーションのYAMLファイルを表示します。

    kubectl get deployments --all-namespace
  2. 次のコマンドを実行して、DeploymentアプリケーションのYAMLファイルを編集します。

    kubectl edit deployment {Deploymentアプリケーション名} -o yaml
  3. YAMLファイルで、spec.template.metadataパラメータに次のコンテンツを追加します。

    labels:
      armseBPFAutoEnable: "on"
      armseBPFCreateAppName: "<your-deployment-name>" # <your-deployment-name>をアプリケーション名に置き換えます。

    次の例は、Kubernetes環境でDeploymentアプリケーションを作成し、アプリケーションモニタリングeBPF Editionでアプリケーションを監視できるようにするための完全なYAMLファイルを示しています。

    YAMLファイルの詳細を表示

    apiVersion: apps/v1beta1 # 1.8.0より前のバージョンではapps/v1beta1を使用します
    kind: Deployment
    metadata:
      name: arms-springboot-demo
      labels:
        app: arms-springboot-demo
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: arms-springboot-demo
      template:
        metadata:
          labels:
            app: arms-springboot-demo
            armseBPFAutoEnable: "on"
            armseBPFCreateAppName: "arms-k8s-demo"
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-springboot-demo:v0.1
              imagePullPolicy: Always
              name: arms-springboot-demo
              env:
                - name: MYSQL_SERVICE_HOST
                  value: "arms-demo-mysql"
                - name: MYSQL_SERVICE_PORT
                  value: "3306"
    ---
    apiVersion: apps/v1beta1
    kind: Deployment
    metadata:
      name: arms-demo-mysql
      labels:
        app: mysql
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: mysql
      template:
        metadata:
          labels:
            app: mysql
        spec:
          containers:
            - resources:
                limits:
                  cpu: 0.5
              image: registry.cn-hangzhou.aliyuncs.com/arms-docker-repo/arms-demo-mysql:v0.1
              name: mysql
              ports:
                - containerPort: 3306
                  name: mysql
    ---
    apiVersion: v1
    kind: Service
    metadata:
      labels:
        name: mysql
      name: arms-demo-mysql
    spec:
      ports:
        # このサービスが提供するポート
        - name: arms-mysql-svc
          port: 3306
          targetPort: 3306
      # このサービスのトラフィックを受信するために一致する必要があるラベルキーと値
      selector:
        app: mysql
    ---
  4. 上記の設定を保存した後、アプリケーションは自動的に再起動し、設定が有効になります。

    2~5分後、アプリケーションがアプリケーションモニタリングebpf > アプリケーションリストページ(ARMSコンソール内)に表示され、特定の監視データが報告されている場合、アプリケーションはアプリケーションモニタリングeBPFエディションによって監視されています。

参考資料

Kubernetes環境にデプロイされたアプリケーションをアプリケーションモニタリングeBPF Editionに接続すると、アプリケーションのメトリクス、アップストリームとダウンストリームの依存関係、およびトポロジを表示できます。詳細については、アプリケーションの詳細を参照してください。