Amazon EKS での PSA の設定

次のように、Amazon Elastic Kubernetes Service(Amazon EKS)での Web モニタリング PSA および API モニタリング PSA を設定します。既存の Kubernetes クラスタで PSA を設定する場合は、「Kubernetes クラスタの作成」セクションをスキップします。

手動展開自動化スクリプトを使用した展開
  1. Kubernetes クラスタを作成します
  2. Docker イメージのプル
  3. イメージのタグ付けとレジストリへのプッシュ
  4. PSA の手動展開
  5. Kubernetes クラスタのモニタリング
  1. Kubernetes クラスタの作成
  2. 自動化スクリプトを使用した PSA の展開
  3. Kubernetes クラスタのモニタリング
警告: このマニュアルには、AWS CLI のマニュアルへのリンクが記載されています。AWS CLI でそのマニュアルが管理されているため、AppDynamics は AWS CLI のマニュアルの正確さについては責任を負いません。Splunk AppDynamics
注: PSA は、パブリッククラウドまたはプライベートクラウドの既存の Kubernetes クラスタに展開できます。自動化スクリプトでは、Kubernetes クラスタの作成はサポートされていません。
注:
  • 自動化スクリプトを使用する場合は、Kubernetes クラスタとノードを手動で設定し、PSA を展開する前にコンテナレジストリにログインする必要があります。
  • 別のレジストリを使用する場合は、PSA を展開する前に、自動化スクリプトでレジストリを指定します。
    1. install_psa ファイルを開き、push_images_to_docker_registry() 関数に移動します。

    2. この関数の下で、${DOCKER_REGISTRY_URL}/ の後に、sum-chrome-agentsum-api-monitoring-agent、および sum-heimdall のレジストリ名を指定します。
    3. generate_psa_k8s_deployment() 関数の下で、YAML 値のリポジトリ名を更新します。

  • Kubernetes クラスタノードと同じ OS タイプのホストでイメージをビルドする必要があります。

Kubernetes クラスタの作成

Amazon EKS で Kubernetes クラスタを作成するには、次の手順を実行します。

  1. AWS CLI をインストールして設定します。
  2. プラットフォームに応じて、インストール手順に従って https://eksctl.io/installation/ をインストールします。
  3. Kubernetes クラスタを作成するには、次のように入力します。
    EKSCTL_CLUSTER_NAME=eks-heimdall-onprem-cluster
    EKSCTL_NODEGROUP_NAME=eks-heimdall-onprem-worker-nodes
    EKSCTL_KUBERNETES_VERSION=1.x.x
    eksctl create cluster \
    --name ${EKSCTL_CLUSTER_NAME} \
    --version ${EKSCTL_KUBERNETES_VERSION} \
    --region us-west-2 \
    --zones us-west-2a,us-west-2b,us-west-2c \
    --nodegroup-name ${EKSCTL_NODEGROUP_NAME} \
    --node-type t3.2xlarge \
    --nodes 4 \
    --nodes-min 2 \
    --nodes-max 6 \
    --ssh-access \
    --ssh-public-key ~/.ssh/id_rsa.pub \
    --managed \
    --vpc-nat-mode Disable
    注: EKSCTL_KUBERNETES_VERSION を次のいずれかのバージョンに置き換えます。

    EKS Kubernetes バージョン

    .
    注: コードスニペットの node-type、nodes、nodes-min、および nodes-max は、推奨される設定タイプに基づいて選択されます。異なるタイプとノード数で、任意の設定を指定できます。サポートされている SFP および SFP+ モジュールのリストについては、

    EC2 インスタンスタイプ

    .

クラスタへのアクセス

Kubernetes クラスタにアクセスするには、次の手順に従って、クラスタとの対話型ユーティリティである kubectl をインストールします。

クラスタが実行されていることを確認するには、次のように入力します。

kubectl get nodes

(オプション)プロキシサーバーの設定

プロキシサーバーを設定すると、すべてのドメインに適用されます。values.yaml ファイルにプロキシサーバーアドレスを指定して、プロキシサーバーを設定します。「キーと値のペアの設定」を参照してください。

プロキシサーバーからドメインをバイパスするには、次の手順を実行します。

注: バイパスリストの設定は、Web モニタリング PSA でのみサポートされています。
  1. values.yaml を開きます。
  2. bypassList browserMonitoringAgent にドメインURL を追加します。
    browserMonitoringAgent:
    enabled: true
    server: "<proxy server address>"
    bypassList: "<specify the domain URLs that you want to bypass separated by semicolon>"

    たとえば、 bypassList: "*abc.com;*xyz1.com;*xyz2.com" bypassList で指定するドメイン URL はプロキシサーバーにリダイレクトされません。bypassList に任意の数のドメインを追加できます。他のすべての指定されていないドメイン URL は、プロキシサーバーにリダイレクトされます。

Docker イメージのプル

DockerHub から sum-chrome-agent、sum-api-monitoring-agent、sum- heimdall の既成の Docker イメージをプルします。既成イメージには依存ライブラリが含まれているため、インターネットにアクセスできない場合でもこれらのイメージを使用できます。

次のコマンドを実行して、エージェントイメージをプルします。

docker pull appdynamics/heimdall-psa
docker pull appdynamics/chrome-agent-psa
docker pull appdynamics/api-monitoring-agent-psa

または、Splunk AppDynamics Download Center から .tar ファイルをダウンロードすることもできます。このファイルには、sum-chrome-agent、sum-api-monitoring-agent、sum-heimdall、ignite、および依存ライブラリの事前ビルド済み Docker イメージが含まれています。したがって、インターネットや DockerHub にアクセスできない場合にこれらのイメージを使用できます。

.tar ファイルを解凍し、次のコマンドを使用してイメージをロードします。
  • sum-chrome-agent:
    docker load < ${webAgentTag}
  • sum-api-monitoring-agent:
    docker load < ${apiAgentTag}
  • sum-heimdall:
    docker load < ${heimdallTag}
  • ignite:
    docker load < ${igniteTag}
例:
# Load all Docker images
docker load -i heimdall-25.7.3098.tar
docker load -i api-monitoring-agent-1.0-415.tar
docker load -i chrome-agent-1.0-1067.tar
docker load -i ignite-2.16.0-jdk11.tar
すべてのイメージがロードされていることを確認します。
docker images | grep -E "(heimdall|api-monitoring|chrome-agent|ignite)"
イメージが正常にロードされると、次のような出力が表示されます。
```
829771730735.dkr.ecr.us-west-2.amazonaws.com/sum/heimdall                   25.7.3098    abc123def456   2 hours ago     500MB
829771730735.dkr.ecr.us-west-2.amazonaws.com/sum/api-monitoring-agent       1.0-415      def456ghi789   2 hours ago     300MB
829771730735.dkr.ecr.us-west-2.amazonaws.com/sum/chrome-agent               1.0-1067     ghi789jkl012   2 hours ago     800MB
apacheignite/ignite                                                         2.16.0       jkl012mno345   2 hours ago     400MB
```

(オプション)カスタム Python ライブラリの追加

使用可能な標準ライブラリセットに加えて、スクリプト測定で使用するカスタム Python ライブラリをエージェントに追加できます。ベースイメージとしてロードしたイメージに基づいて新しいイメージをビルドします。

注: DockerHub リポジトリから既成のイメージを使用している場合、これらの手順は必要ありません。
  1. Dockerfile を作成し、Python pip を実行する ディレクティブを作成します。たとえば、algorithms ライブラリをインストールするには、次のように Dockerfile を作成します。
    # Use the sum-chrome-agent image you just loaded as the base image
    FROM appdynamics/chrome-agent-psa:<agent-tag>
    USER root
    RUN apk add py3-pip
    USER appdynamics
    # Install algorithm for python3 on top of that
    RUN python3 -m pip install algorithms==0.1.4 --break-system-packages
    注: 任意の数の ディレクティブを作成して、必要なライブラリをインストールできます。
  2. 新しいイメージをビルドするには、次のように入力します。
    docker build -t sum-chrome-agent:<agent-tag> - < Dockerfile
    新しくビルドされたエージェントイメージには、必要なライブラリが含まれています。

Tag and Push Images to the Registry

You must tag and push the images to a registry for the cluster to access it. The Amazon EKS clusters pull the images from Elastic Container Registry (ECR), which is the managed registry provided by AWS.

Tag the Images

docker tag appdynamics/heimdall-psa:<heimdall-tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-heimdall:<heimdall-tag>
docker tag appdynamics/chrome-agent-psa:<agent-tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-chrome-agent:<agent-tag>
docker tag appdynamics/api-monitoring-agent-psa:<agent-tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-api-monitoring-agent:<agent-tag>

You need to replace <aws_account_id> & <region> with your account id and region values.

To create repositories, enter:

aws ecr create-repository --repository-name sum/sum-heimdall
aws ecr create-repository --repository-name sum/sum-chrome-agent
aws ecr create-repository --repository-name sum/sum-api-monitoring-agent

Push the Images

aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-heimdall:<heimdall-tag>
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-chrome-agent:<agent-tag>
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-api-monitoring-agent:<agent-tag>

PSA の手動展開

イメージがレジストリに登録されると、アプリケーションはクラスタに展開されます。Helm チャートを使用して、必要な順序ですべての Kubernetes リソースを展開および作成します。

  1. 次の手順に従って、Helm をインストールします。
  2. Apache Ignite ポッドを実行するための新しい名前空間を作成します。
    警告: 最初に Apache Ignite のコマンドを実行してから、Heimdall のコマンドを実行してください。

    Ignite の新しい名前空間を作成するには、次のように入力します。

    kubectl create namespace measurement

    Apache Ignite を展開する前に、いくつかの設定オプションを設定する必要があります。設定オプションを表示するには、すでにダウンロードした ignite-psa.tgz ファイルに移動し、次のように入力します。

    helm show values ignite-psa.tgz > values-ignite.yaml
  3. (オプション)Apache Ignite の Amazon Elastic File System(Amazon EFS)を有効にします。values-ignite.yaml ファイルを開き、[persistence] で次の詳細を更新します。
    persistence:
    # To turn on persistence, kindly set enabled to true. Do not modify onPremMode value
    enabled: true
    onPremMode: true
    enableEfs: false  # Set to true if you are using efs
    persistenceVolume:
    size: 8Gi
    provisioner: efs.csi.aws.com # Replace with your provisioner value
    provisionerParameters:
    type: efs # Specify that it's for Amazon EFS
    fileSystemId: fs-01285427ea904c120  # Replace with your EFS file system ID
    provisioningMode: efs-ap # Replace with your provisioner mode
    walVolume:
    size: 8Gi
    provisioner: efs.csi.aws.com # Replace with your provisioner value
    provisionerParameters:
    type: efs  # Specify that it's for Amazon EFS
    fileSystemId: fs-01285427ea904c120  # Replace with your EFS file system ID
    provisioningMode: efs-ap # Replace with your provisioner mode
    enableHostPath: false  # Set to true if you are using hostpath
    hostPath:
    persistenceMount: /mnt/ignite/persistence
    walMount: /mnt/ignite/wal
    注: Helm チャートを展開後、次のコマンドを実行して、Persistent Volume(PV)と Persistent Volume Claim(PVC)が実行されているかどうかを確認できます。
    kubectl get pv -n measurement
    kubectl get pvc -n measurement
    PV および PVC のステータスが Bound に変わったら、Amazon EFS 設定が完了したことを示します。
    注: Amazon EFS for Heimdall を有効にするには、values.yaml ファイルの設定を更新します。
  4. 上記の設定を使用して Helm チャートを展開するには、すでにダウンロードした ファイルに移動し、次のように入力します。
    helm install synth ignite-psa.tgz --values values-ignite.yaml --namespace measurement
    すべての Kubernetes リソースがクラスタに作成され、Apache Ignite を使用できます。数秒後、Apache Ignite が初期化され、コントローラに表示されます。
  5. ポッドが実行されているかどうかを確認するには、次のように入力します。
    kubectl get pods --namespace measurement

    Apache Ignite ポッドが正常に実行された後にのみ、次の手順に進みます。

    1 つのコマンドを使用して、展開の詳細を含む Helm チャートを展開できます。エージェントを展開するには、以前にダウンロードした zip ファイルの Helm チャート を使用します。Private Synthetic Agent を展開する前に、いくつかの設定オプションを設定する必要があります。設定オプションを表示するには、すでにダウンロードした sum-psa-heimdall.tgz ファイルに移動し、次のように入力します。

    helm show values sum-psa-heimdall.tgz > values.yaml

    以下は、values.yaml ファイルで編集する必要がある設定キーと値のペアです。

    設定キー
    heimdall > repository<aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-heimdall
    heimdall > tag<heimdall-tag>
    heimdall > pullPolicyAlways
    chromeAgent > repository<aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-chrome-agent
    chromeAgent > tag<agent-tag>
    shepherd > urlシェパード URL
    shepherd > credentialsログイン情報
    shepherd > locationagent location
    永続化

    (オプション)Amazon EFS for Heimdall を有効にする場合は、次の詳細を指定します。

    # To turn on persistence, kindly set enabled to true
    persistence:
    enabled: false
    storageClass:
    provisioner: efs.csi.aws.com # Specify that it's for Amazon EFS
    parameters:
    type: efs  # Specify that it's for Amazon EFS
    fileSystemId: fs-01285427ea904c120   # Replace with your EFS file system ID
    provisioningMode: efs-ap  # Replace with your provisioner mode
    注: Helm チャートを展開後、次のコマンドを実行して PV と PVC が実行されているかどうかを確認できます。
    kubectl get pv -n measurement
    kubectl get pvc -n measurement
    PV および PVC のステータスが Bound に変わったら、Amazon EFS 設定が完了したことを示します。
    measurementPodMetadata(オプション)enableCustomTolerationsenableCustomAffinity、および enableCustomLabels の値を true に変更し、許容、アフィニティ、およびラベルを有効にします。
    measurementPodMetadata:
      enableCustomTolerations: false  # Enable use of custom tolerations from this config
      enableCustomAffinity: false     # Enable use of custom affinity rules from this config
      enableCustomLabels: false      # Enable use of custom labels from this config
      automountServiceAccountToken: false # Automatically mount service account token in pods
      labels: # Custom labels to apply to the Pod metadata
        team: "qa"             # Example: assign pod to QA team
        priority: "high"       # Example: set custom priority level
        app.kubernetes.io/managed-by: "scheduler-service"  # Standard label
      tolerations:
        - key: "dedicated"                      # Tolerate nodes tainted with key=dedicated
          operator: "Equal"                     # Match taint value exactly
          value: "measurement"                  # Accept taint with value=measurement
          effect: "NoSchedule"                  # Allow scheduling on such tainted nodes
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
              - matchExpressions:
                  - key: "kubernetes.io/hostname"  # Node must have this hostname
                    operator: "In"                 # Match exact value
                    values:
                      - "node-1"                   # Only allow node named node-1
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 80                           # Strong preference weight
              preference:
                matchExpressions:
                  - key: "topology.kubernetes.io/zone"  # Prefer node in this zone
                    operator: "In"
                    values:
                      - "us-central1-a"
        podAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"                     # Co-locate with pod having app=frontend
                    operator: "In"
                    values:
                      - "frontend"
              topologyKey: "kubernetes.io/hostname"  # Must be on the same node
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 50                            # Medium preference
              podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: "app"                   # Prefer proximity to app=logger pods
                      operator: "In"
                      values:
                        - "logger"
                topologyKey: "topology.kubernetes.io/zone"  # Prefer same zone
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: "app"                     # Do NOT schedule with app=backend pods
                    operator: "In"
                    values:
                      - "backend"
              topologyKey: "kubernetes.io/hostname"  # Must not be on same node
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 30                            # Low preference to avoid
              podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: "env"                   # Prefer to avoid pods in env=production
                      operator: "In"
                      values:
                        - "production"
                topologyKey: "topology.kubernetes.io/region"  # Prefer different region
    createChromePodServiceAccountWeb モニタリングポッドのサービスアカウントを作成するには、true を指定します。
    createApiPodServiceAccountAPI モニタリングポッドのサービスアカウントを作成するには、true を指定します。

    残りの値はデフォルトのままにすることも、要件に基づいて設定することもできます。シェパード URL、ログイン情報、場所、およびオプションのキーと値のペアの詳細については、「Web モニタリング PSA および API モニタリング PSA の設定」を参照してください。

    注:

    Kubernetes クラスタがロックダウンされていて、クラスタ全体の設定を行うことができない場合は、ポッドレベルの変更を行うことができます。

    たとえば、ポッドレベルの DNS サーバー設定を変更して、DNS 名の解決に内部ネームサーバーを使用する場合は、values.yaml ファイルで次の詳細を指定します。

    設定キー
    agentDNSConfig:
    enabled: true
    dnsConfig:
    nameservers:["4.4.4.4"]
    searches:["svc.cluster.local", "cluster.local"]
  6. 上記の設定を使用して Helm チャートを展開するには、すでにダウンロードした ファイルに移動し、次のように入力します。
    helm install heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement

    すべての Kubernetes リソースがクラスタに作成され、Heimdall を使用できます。数秒後、Heimdall が初期化され、コントローラに表示されます。

  7. ポッドが実行されているかどうかを確認するには、次のように入力します。
    kubectl get pods --namespace measurement

    初期展開後に values.yaml に変更を加えるには、すでにダウンロードした sum-psa-heimdall.tgz ファイルに移動して、次のように入力します。

    helm upgrade heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement
    警告:

    展開を削除するには、次のコマンドを実行します。

    helm uninstall heimdall-onprem --namespace measurement

    これは、必要でない限り推奨されません。

自動化スクリプトを使用した PSA の展開

Splunk AppDynamicsPSA インストール zip ファイルを、Cisco AppDynamics ダウンロードセンターまたはベータアップロードツールからダウンロードします。このファイルには、sum-chrome-agent、sum-api-monitoring-agent、sum-heimdall、Helm チャート、および自動化スクリプトの Docker ファイルが含まれています。sum-chrome-agent、sum-api-monitoring-agent、および sum-heimdall のイメージをビルドする場合は、Docker がインストールされていることを確認します。インストールされていない場合は、ここから Docker をダウンロードしてインストールできます。

以下の手順を実行して、PSA をインストールします。

  1. PSA インストール zip ファイルを解凍します。
  2. 次のコマンドを実行して、EKS で PSA をインストールします。インストールコマンドの例は次のようになります。
    ./install_psa -e kubernetes -l -v -u <Shepherd-URL> -a <EUM-account> -k <EUM-key> -c <location-code> -d <location-description> -t <location-name> -s <location-state> -o <location-country> -i <location-latitude> -g <location-longitude> -p <PSA-tag> -r <heimdall-replica-count> -z <agent-type> -m <chrome-agent_min/max-memory> -n <API-agent_min/max-memory> -x <chrome-agent_min/max-CPU> -y <API-agent_min/max-CPU> -b <heimdall_min/max-memory> -f <heimdall_min/max-CPU> -q <ignite-persistence> -w <heimdall_proxy_server>~<api_monitoring_proxy_server>~<web_monitoring_proxy_server> -B <"bypassURL1;bypassURL2;bypassURL3"> -C true -A <serviceaccount-name> -U <userID> -G <groupID> -N <run_as_a_non-root_user> -F <file_system_groupID> -O <override_the_security_context>

    サンプルのインストールコマンドを次に示します。

    ./install_psa -e kubernetes -u <Shepherd-URL> -a <EUM-account> -k <EUM-key> -c DEL -d Delhi -t Delhi -s DEL -o India -i 28.70 -g 77.10 -p 23.5 -r 1 -z all -m 100Mi/500Mi -n 100Mi/100Mi -x 0.5/1.5 -y 0.1/0.1 -b 2Gi/2Gi -f 2/2 -q true -w 127.0.0.1:8887~127.0.0.1:8888~127.0.0.1:8889 -B "*abc.com;*xyz1.com;*xyz2.com" -C true -A serviceaccount-name -U 9001 -G 9001 -N true -F 9001 -O true
次の表では、コマンドでのフラグの使用について説明します。説明のアスタリスク(*)は、必須パラメータを示しています。
フラグ説明
-e

*環境

たとえば、Docker、Minikube、または Kubernetes などです。

-lMinkube 環境にイメージをロードします。
-vデバッグモード
-u

*シェパード URL

たとえば、https://sum-shadow-master-shepherd.saas.appd-test.com/

シェパード URL のリストについては、「シェパード URL」を参照してください。

-a

*EUM アカウント

たとえば、Ati-23-2-saas-nov2

-k

*EUM キー

たとえば、2d35df4f-92f0-41a8-8709-db54eff7e56c

-c

*ロケーションコード

たとえば、DEL NY

-d

*ロケーションの説明

たとえば、「Delhi, 100001」

-t

*ロケーションの都市

たとえば、Delhi

-s

*ロケーションの州

たとえば、CA

-o

*ロケーションの国

たとえば、India、United States

-i

ロケーションの緯度

たとえば、28.70

-g

ロケーションの経度

たとえば、77.10

-p

*PSA リリースタグ

たとえば、23.12

-r*Heimdall レプリカ数
-z

*エージェントタイプ

たとえば、web、api、または all

-m

*sum-chrome-agent の最小/最大メモリ(Mi/Gi 単位)
-n*sum-api-monitoring-agent の最小/最大メモリ(Mi/Gi 単位)
-x*sum-chrome-agent の最小/最大 CPU
-y*sum-api-monitoring-agent の最小/最大 CPU
-b*sum-heimdall の最小/最大メモリ(Mi/Gi 単位)
-f*sum-heimdall の最小/最大 CPU
-qtrue または false を指定して、Ignite Persistence を有効または無効にします。
-w

Heimdall、API、および Web モニタリング用のプロキシ サーバーをチルダ(~)で区切って指定します。

プロキシサーバーを設定する必要がない場合は、空白のままにすることができます。

-B

プロキシサーバーからバイパスするドメイン URL を指定します。

例:"*abc.com;*xyz1.com;*xyz2.com"

-CChrome ブラウザでのパフォーマンスログを有効にするには true を指定します。デフォルト値は false です。
-A sum-chrome-agent および sum-api-monitoring-agent ポッドのサービスアカウントを指定します。
-Usum-chrome-agent または sum-api-monitoring-agent コンテナを実行するユーザー ID を指定します。
-Gsum-chrome-agent または sum-api-monitoring-agent コンテナを実行するグループ ID を指定します。
-Nsum-chrome-agent または sum-api-monitoring-agent コンテナを非ルートユーザーとして実行するかどうかを指定します。デフォルト値は true です。
-Fsum-chrome-agent または sum-api-monitoring-agent コンテナのファイルシステムグループ ID を指定します。
-OWeb および API モニタリングのセキュリティコンテキストをオーバーライドするには、true を指定します。デフォルト値は false です。

Kubernetes クラスタのモニタリング

ダウンロードした zip 内の Helm チャート により、モニタリングスタックがインストールされます。この Helm チャートは、Private Simple Synthetic Agent をモニタするためのカスタム Grafana ダッシュボードとともに kube-prometheus-stack をインストールします。

注: この展開のモニタリングはオプションです。ただし、クラスタをモニターして正常性を定期的に確認することを強く推奨します。

モニタリングスタックのインストール

  1. 別のモニタリング名前空間を作成するには、以下のように入力します。
    kubectl create namespace monitoring

    設定オプションを確認するには、次のように入力します。

    helm show values sum-psa-monitoring.tgz > values-monitoring.yaml

    これにより、すべての設定オプションを含む values-monitoring ファイルが生成されます。Helm チャートのインストール中に生成された values-monitoring ファイルを変更して渡すには、次のように入力します。

    helm install psa-monitoring sum-psa-monitoring.tgz --values values-monitoring.yaml --namespace monitoring
  2. モニタリングスタックをインストールした後、(クラスタ内で実行される)Grafana を起動してダッシュボードを表示できます。クラスターの外部から Grafana にアクセスするには、ポートフォワーディングを設定するか、Ingress を設定します。ローカルにアクセスするようにポートフォワーディングを設定するには、次のように入力します。
    kubectl port-forward svc/psa-monitoring-grafana 3000:80 --namespace monitoring
  3. ブラウザから localhost:3000 を起動し、デフォルトのログイン情報(ユーザー名:admin、パスワード:prom-operator)を使用してログインします。Private Simple Synthetic Agent という名前のダッシュボードに、Kubernetes クラスタ、Apache Ignite、Heimdall、および実行中の測定に関する詳細が表示されます。

PSA のアンインストール

PSA をアンインストールするには、次のコマンドを実行します。

./uninstall_psa -e kubernetes -p

Amazon Elastic Kubernetes Service の PSA のアップグレード

Docker イメージのプル

DockerHub から sum-chrome-agent、sum-api-monitoring-agent、sum- heimdall の既成の Docker イメージをプルします。既成イメージには依存ライブラリが含まれているため、インターネットにアクセスできない場合でもこれらのイメージを使用できます。

次のコマンドを実行して、エージェントイメージをプルします。

docker pull appdynamics/heimdall-psa
docker pull appdynamics/chrome-agent-psa
docker pull appdynamics/api-monitoring-agent-psa

カスタム Python ライブラリの追加

この手順は任意です。使用可能な標準ライブラリセットに加えて、スクリプト測定で使用するカスタム Python ライブラリをエージェントに追加できます。ベースイメージとしてロードしたイメージに基づいて新しいイメージをビルドします。

  1. Dockerfile を作成し、python pip を実行する RUN ディレクティブを作成します。たとえば、algorithms ライブラリをインストールするには、次のように Dockerfile を作成できます。
    # Use the sum-chrome-agent image you just loaded as the base image
    FROM appdynamics/chrome-agent-psa:<agent-tag>
    USER root
    RUN apk add py3-pip
    USER appdynamics
    # Install algorithm for python3 on top of that
    RUN python3 -m pip install algorithms==0.1.4 --break-system-packages
    注: 任意の数の ディレクティブを作成して、必要なライブラリをインストールできます。
  2. 新しいイメージを作成するには、次のコマンドを実行します。[Web モニタリング PSA ]:
    docker build -t sum-chrome-agent:<agent-tag> - < Dockerfile
    API モニタリング PSA:
    docker build -f Dockerfile-PSA -t sum-api-monitoring-agent:<agent-tag> .
    Kubernetes クラスタノードと同じ OS タイプのホストでイメージをビルドする必要があります。たとえば、イメージを AWS にプッシュする場合は、次のコマンドを実行します。
    docker buildx build -f Dockerfile-PSA --platform=linux/amd64 -t sum-api-monitoring-agent:<api-tag> .
    新しくビルドされたエージェントイメージには、必要なライブラリが含まれています。

イメージのタグ付けとレジストリへのプッシュ

注: EKS や AKS などのマネージド Kubernetes サービスは、イメージをプッシュできるコンテナレジストリを提供します。その他の設定は必要ありません。EKS または AKS 内の Kubernetes クラスタは、これらのイメージにアクセスできます。

クラスタがアクセスできるように、イメージにタグを付けてレジストリにプッシュする必要があります。Amazon EKS クラスタは、AWS が提供するマネージドレジストリである Elastic Container Registry(ECR)からイメージをプルします。

Vanilla K8S は AWS インフラストラクチャで実行されるため、Kubernetes Operations(kops)が適切なロールを作成してクラスタノードに割り当て、それらは ECR に直接アクセスできます。その他の設定は必要ありません。そのため、プロセスは、EC2 を使用する EKS と Vanilla K8S の両方で同じです。

イメージにタグを付けるには、次のように入力します。

docker tag sum-heimdall:<heimdall-tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-heimdall:<heimdall-tag>
docker tag sum-chrome-agent:<agent-tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-chrome-agent:<agent-tag>
docker tag sum-api-monitoring-agent:<agent-tag> <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-api-monitoring-agent:<agent-tag>

をアカウント ID とリージョンの値に置き換える必要があります。

リポジトリを作成するには、次のように入力します。

aws ecr create-repository --repository-name sum/sum-heimdall
aws ecr create-repository --repository-name sum/sum-chrome-agent
aws ecr create-repository --repository-name sum/sum-api-monitoring-agent

イメージをプッシュするには、次のように入力します。

aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.<region>.amazonaws.com
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-heimdall:<heimdall-tag>
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-chrome-agent:<agent-tag>
docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/sum/sum-api-monitoring-agent:<agent-tag>

Helm チャートの更新

次の手順に従って、values.yaml ファイル内の設定キーと値のペアを更新します。

PSA のアップグレード

注: PSA 23.12 以降、Ignite と Heimdall を measurement という名前の単一の名前空間に展開する必要があります。
  1. 新しい Linux ディストリビューション フォルダに移動して、次のコマンドを実行します。
    helm install synth ignite-psa.tgz --values values-ignite.yaml --namespace measurement
  2. Ignite ポッドのステータスが running に変わるまで待ちます。その後、次のコマンドを実行します。
    helm upgrade heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement
  3. 新しい Heimdall ポッドと Ignite ポッドのステータスが running に変更されたら、古い Ignite 名前空間をアンインストールします。
    helm uninstall synth -n ignite