Amazon EC2 を使用したベアメタル K8s での PSA の設定

次のように、Amazon EC2 を使用して、ベアメタル K8s での Web モニタリング PSA と API モニタリング PSA を設定します。既存の Kubernetes クラスタで PSA を設定する場合は、「Kubernetes クラスタの作成」セクションをスキップします。

  1. Kubernetes クラスタを作成します
  2. Docker イメージをプルします
  3. Minikube の Docker デーモンにイメージを保存します。
  4. Web モニタリング PSA と API モニタリング PSA を展開します。
  5. Kubernetes クラスタをモニターします
注: ほとんどの手順は、Web モニタリング PSA と API モニタリング PSA の両方に共通です。該当する場合は、手順の違いが強調表示されています。
警告: このページには、AWS CLI のマニュアルへのリンクが含まれています。AWS CLI で自身のマニュアルを管理しているため、Splunk AppDynamics では AWS CLI のマニュアルの精度については一切保証しません。

Kubernetes クラスタの作成

注: kops を使用して、AWS で独自の管理型 Kubernetes クラスタを作成できます。別のクラウドまたは独自のデータセンターで自己管理型クラスタを作成する場合は、Kubeadm や Kubespray などの他のツールを使用することを検討してください。「展開ツールを使用した Kubernetes のインストール」を参照してください。

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

  1. AWS CLI をインストールして設定します。
  2. IAM ロールを作成するには、次のように入力します。
    CODE
    aws iam create-group --group-name kops
    aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonEC2FullAccess --group-name kops
    aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonRoute53FullAccess --group-name kops
    aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3FullAccess --group-name kops
    aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/IAMFullAccess --group-name kops
    aws iam attach-group-policy --policy-arn arn:aws:iam::aws:policy/AmazonVPCFullAccess --group-name kops
    aws iam create-user --user-name kops
    aws iam add-user-to-group --user-name kops --group-name kops
    aws iam create-access-key --user-name kops
  3. 前の手順で取得したアクセスキーと aws configure を使用して、AWS CLI ログイン情報を設定します。
  4. プラットフォームに応じて、次の手順に従って kops をインストールします。
  5. S3 バケットを作成するには、次のように入力してバージョン管理を有効にします。
    CODE
    bucket_name=heimdall-onprem-kops-state-store
    aws s3api create-bucket \
    --bucket ${bucket_name} \
    --create-bucket-configuration LocationConstraint=us-west-2
    aws s3api put-bucket-versioning --bucket ${bucket_name} --versioning-configuration Status=Enabled
  6. クラスタを作成するには、次のように入力します。
    JSON
    export KOPS_CLUSTER_NAME=heimdall-onprem.k8s.local
    export KOPS_STATE_STORE=s3://${bucket_name}
    export KOPS_KUBERNETES_VERSION=1.x.x
    kops create cluster \
    --node-count=4 \
    --node-size=t3.2xlarge \
    --zones=us-west-2a \
    --kubernetes-version=${KOPS_KUBERNETES_VERSION} \
    --name=${KOPS_CLUSTER_NAME}
    kops update cluster --name ${KOPS_CLUSTER_NAME} --yes
    注: 互換性のあるバージョンのいずれかから KOPS_KUBERNETES_VERSION を指定します。
    注: 上記のコードスニペットの node-sizenode-count は、推奨される設定タイプに従って選択されます。異なるタイプとノード数で、任意の設定を指定できます。「EC2 インスタンスタイプ」を参照してください。
  7. クラスタが実行されているかどうかを確認するには(クラスタのセットアップと実行に時間がかかる場合があります)、次のように入力します。
    CODE
    kops validate cluster
クラスタへのアクセス

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

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

CODE
kubectl get nodes

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

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

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

注: バイパスリストの設定は、Web モニタリング PSA でのみサポートされています。
  1. values.yaml ファイルを開きます。
  2. [browserMonitoringAgent] の [bypassList] フィールドにドメイン URL を追加します。
    CODE
    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 イメージをプルします。既成イメージには依存ライブラリが含まれているため、インターネットにアクセスできない場合でもこれらのイメージを使用できます。

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

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

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

注: このセクションは、Web モニタリング PSA にのみ適用されます。

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

  1. Dockerfile を作成し、Python pip を実行する RUN ディレクティブを作成します。たとえば、algorithms ライブラリをインストールするには、次のように Dockerfile を作成します。

    CODE
    # 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. 新しいイメージをビルドするには、次のように入力します。

    CODE
    docker build -t sum-chrome-agent:<agent-tag> - < Dockerfile

    新しくビルドされたエージェントイメージには、必要なライブラリが含まれています。

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

クラスタがアクセスできるように、イメージにタグを付けてレジストリにプッシュする必要があります。これは、次の方法で実行できます。

EC2 を使用した Bare Metal K8S

Vanilla K8S は AWS インフラストラクチャで動作します。kops は適切なロールを作成してクラスタノードに割り当てるため、他の設定なしで Elastic Container Registry(ECR)に直接アクセスできます。

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

Web Monitoring PSA:

CODE
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>

API Monitoring PSA:

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

<aws_account_id><region> をアカウントとリージョンの値に置き換えます。

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

Web Monitoring PSA:

CODE
aws ecr create-repository --repository-name sum/sum-heimdall
aws ecr create-repository --repository-name sum/sum-chrome-agent

API Monitoring PSA:

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

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

Web Monitoring PSA:

CODE
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>

API Monitoring PSA:

CODE
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-api-monitoring-agent:<agent-tag>

プライベートレジストリを使用した Bare Metal K8S

注: AWS 上にない独自の Kubernetes クラスタを管理している場合は、独自のレジストリサーバを展開する必要があります。「Deploy a registry server」を参照してください。「レジストリサーバーの展開」を参照してください。

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

Web Monitoring PSA:

CODE
docker tag sum-heimdall:<heimdall-tag> <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall:<heimdall-tag>
docker tag sum-chrome-agent:<agent-tag> <REGISTRY_HOST>:<REGISTRY_PORT>/sum-chrome-agent:<agent-tag>

API Monitoring PSA:

CODE
docker tag sum-heimdall:<heimdall-tag> <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall:<heimdall-tag>
docker tag sum-api-monitoring-agent:<agent-tag> <REGISTRY_HOST>:<REGISTRY_PORT>/sum-api-monitoring-agent:<agent-tag>

<REGISTRY_HOST> および <REGISTRY_PORT> をレジストリの展開時に設定した値に置き換えます。

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

Web Monitoring PSA:

CODE
docker login <REGISTRY_HOST>:<REGISTRY_PORT>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall:<heimdall-tag>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/sum-chrome-agent:<agent-tag>

API Monitoring PSA:

CODE
docker login <REGISTRY_HOST>:<REGISTRY_PORT>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall:<heimdall-tag>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/sum-api-monitoring-agent:<agent-tag>

Web モニタリング PSA と API モニタリング PSA を展開します。

注: Web モニタリング PSA および API モニタリング PSA をインストールするときは、それぞれの該当する一連の手順に必ず従ってください。一部の手順は、両方で共通しています。

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

注: PSA 23.12 リリース以降、Ignite と Heimdall の両方を「measurement」という名前の単一の名前空間に展開する必要があります。

  1. 次の手順に従って、Helm をインストールします。
  2. Apache Ignite ポッドを実行するための新しい名前空間を作成します。
    警告: 最初に Apache Ignite のコマンドを実行してから、Heimdall のコマンドを実行してください。
    新しい measurement 名前空間を作成するには、次のように入力します。
    CODE
    kubectl create namespace measurement
    Apache Ignite を展開する前に、いくつかの設定オプションを設定する必要があります。設定オプションを表示するには、すでにダウンロードした ignite-psa.tgz ファイルに移動し、次のように入力します。
    CODE
    helm show values ignite-psa.tgz > values-ignite.yaml
    注: 永続化を有効にする場合は、persistence > enabled を設定します。この設定は、オプションです。
  3. 上記の設定を使用して Helm チャートを展開するには、すでにダウンロードした ファイルに移動し、次のように入力します。
    CODE
    helm install synth ignite-psa.tgz --values values-ignite.yaml --namespace ignite
    すべての Kubernetes リソースがクラスタに作成され、Apache Ignite を使用できます。数秒後、Apache Ignite が初期化され、コントローラに表示されます。
  4. ポッドが実行されているかどうかを確認するには、次のように入力します。
    CODE
    kubectl get pods --namespace measurement

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

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

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

    Web Monitoring PSA Using EC2:
    設定キー
    heimdall > repository <aws_account_id>.dkr.ecr.<region>. amazonaws.com/sum/sum-heimdall
    heimdall > tag <heimdall-tag>
    heimdall > pullPolicy always
    chromeAgent > repository <aws_account_id>.dkr.ecr.<region>. amazonaws.com/sum/sum-chrome-agent
    chromeAgent > tag <agent-tag>
    shepherd > url Shepherd URL
    shepherd > credentials credentials
    shepherd > location agent location
    API Monitoring PSA Using EC2:
    設定キー
    heimdall > repository <aws_account_id>.dkr.ecr.<region>. amazonaws.com/sum/sum-heimdall
    heimdall > tag <heimdall-tag>
    heimdall > pullPolicy always
    apiMonitoringAgent > repository <aws_account_id>.dkr.ecr.<region>. amazonaws.com/sum/sum-api-monitoring-agent
    apiMonitoringAgent > tag <agent-tag>
    shepherd > url Shepherd URL
    shepherd > credentials credentials
    shepherd > location agent location
    Web Monitoring PSA Using Private Registry:
    設定キー
    heimdall > repository <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall
    heimdall > tag <heimdall-tag>
    heimdall > pullPolicy always
    chromeAgent > repository <REGISTRY_HOST>:<REGISTRY_PORT>/sum-chrome-agent
    chromeAgent > tag <agent-tag>
    privateRegistry true
    shepherd > url Shepherd URL
    shepherd > credentials credentials
    shepherd > location agent location
    API Monitoring PSA Using Private Registry:
    設定キー
    heimdall > repository <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall
    heimdall > tag <heimdall-tag>
    heimdall > pullPolicy always
    apiMonitoringAgent > repository <REGISTRY_HOST>:<REGISTRY_PORT>/sum-api-monitoring-agent
    apiMonitoringAgent > tag <agent-tag>
    privateRegistry true
    shepherd > url Shepherd URL
    shepherd > credentials credentials
    shepherd > location agent location
    注: プライベートレジストリを使用して設定した後

    レジストリログイン情報を作成するには、次のように入力します。

    CODE
    kubectl create secret docker-registry regcred --docker-server=<REGISTRY_HOST>:<REGISTRY_PORT> --docker-username=<your-name> --docker-password=<your-pword> --docker-email=<your-email> --namespace measurement

    regcred レジストリログイン情報を使用するように、測定名前空間のデフォルト サービス アカウントにパッチを適用します。

    JSON
    kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}' --namespace measurement
    残りの値はデフォルトのままにすることも、要件に基づいて設定することもできます。シェパード URL、ログイン情報、場所、およびオプションのキーと値のペアの詳細については、「Web モニタリング PSA および API モニタリング PSA の設定」を参照してください。
    注: <aws_account_id><region> をアカウントとリージョンの値に置き換える必要があります。
    注:

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

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

    設定キー
    agentDNSConfig:
    enabled: true
    dnsConfig:
    nameservers: ["4.4.4.4"]
    searches: ["svc.cluster.local", "cluster.local"]
  6. 上記の設定を使用して Helm チャートを展開するには、すでにダウンロードした sum-psa-heimdall.tgz ファイルに移動し、次のように入力します。
    CODE
    helm install heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement
    すべての Kubernetes リソースがクラスタに作成され、Heimdall を使用できます。数秒後、Heimdall が初期化され、コントローラに表示されます。
  7. ポッドが実行されているかどうかを確認するには、次のように入力します。
    CODE
    kubectl get pods --namespace measurement
    初期導入後に values.yaml に変更を加えるには、すでにダウンロードした sum-psa-heimdall.tgz ファイルに移動して、次のように入力します。
    CODE
    helm upgrade heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement
    警告:

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

    CODE
    helm uninstall heimdall-onprem --namespace measurement

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

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

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

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

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

  1. 別のモニタリングを作成するには、次のように入力します。

    CODE
    kubectl create namespace monitoring
    設定オプションを確認するには、次のように入力します。
    CODE
    helm show values sum-psa-monitoring.tgz > values-monitoring.yaml
    これにより、すべての設定オプションを含む values-monitoring.yaml ファイルが生成されます。Helm チャートのインストール中に生成された values-monitoring.yaml ファイルを変更して渡すには、次のように入力します。
    CODE
    helm install psa-monitoring sum-psa-monitoring.tgz --values values-monitoring.yaml --namespace monitoring
  2. モニタリングスタックをインストールした後、(クラスタ内で実行される)Grafana を起動してダッシュボードを表示できます。クラスタの外部から Grafana にアクセスするには、ポートフォワーディングを設定するか、Ingress を設定します。ローカルにアクセスするようにポートフォワーディングを設定するには、次のように入力します。

    CODE
    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、および実行中の測定に関する詳細が表示されます。

Bare Metal K8s での Private Synthetic Agent のアップグレード

Docker イメージのプル

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

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

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

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

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

  1. Dockerfile を作成してから、pythonpip を実行する RUN ディレクティブを作成します。たとえば、algorithms ライブラリをインストールするには、次のように Dockerfile を作成します。

    CODE
    # 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 Monitoring PSA:
    CODE
    docker build -t sum-chrome-agent:<agent-tag> - < Dockerfile
    API Monitoring PSA
    CODE
    docker build -f Dockerfile-PSA -t sum-api-monitoring-agent:<agent-tag> .
    Kubernetes クラスタノードと同じ OS タイプのホストでイメージをビルドする必要があります。たとえば、イメージを AWS にプッシュする場合は、次のコマンドを実行します。
    CODE
    docker buildx build -f Dockerfile-PSA --platform=linux/amd64 -t sum-api-monitoring-agent:<api-tag> .
    新しくビルドされたエージェントイメージには、必要なライブラリが含まれています。

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

独自の Kubernetes クラスタを管理している場合は、独自のレジストリサーバーを展開する必要があります。詳細については、「レジストリサーバーの展開」を参照してください。レジストリを展開したら、イメージにタグを付けてプッシュします。

注: <REGISTRY_HOST><REGISTRY_PORT> を、レジストリの展開中に使用した値に置き換えます。

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

CODE
docker tag sum-heimdall:<heimdall-tag> <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall:<heimdall-tag>
docker tag sum-chrome-agent:<agent-tag> <REGISTRY_HOST>:<REGISTRY_PORT>/sum-chrome-agent:<agent-tag>
docker tag sum-api-monitoring-agent:<agent-tag> <REGISTRY_HOST>:<REGISTRY_PORT>/sum-api-monitoring-agent:<agent-tag>

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

CODE
docker login <REGISTRY_HOST>:<REGISTRY_PORT> docker push <REGISTRY_HOST>:<REGISTRY_PORT>/sum-heimdall:<heimdall-tag>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/sum-chrome-agent:<agent-tag>
docker push <REGISTRY_HOST>:<REGISTRY_PORT>/sum-api-monitoring-agent:<agent-tag>

Helm チャートの更新

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

PSA のアップグレード

注: PSA 23.12 以降、Ignite と Heimdall を measurement という名前の単一の名前空間に展開する必要があります。
  1. 新しい Linux ディストリビューション フォルダに移動して、次のコマンドを実行します。

    CODE
    helm install synth ignite-psa.tgz --values values-ignite.yaml --namespace measurement
  2. Ignite ポッドのステータスが running に変わるまで待ちます。その後、次のコマンドを実行します。

    CODE
    helm upgrade heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement
  3. 新しい Heimdall ポッドと Ignite ポッドのステータスが runningに変更されたら、古い Ignite 名前空間をアンインストールします。

    CODE
    helm uninstall synth -n ignite