Download PDF
Download page Amazon EC2 を使用したベアメタル K8s での PSA の設定.
Amazon EC2 を使用したベアメタル K8s での PSA の設定
次のように、Amazon EC2 を使用して、ベアメタル K8s での Web モニタリング PSA と API モニタリング PSA を設定します。既存の Kubernetes クラスタで PSA を設定する場合は、「Kubernetes クラスタの作成」セクションをスキップします。
- Kubernetes クラスタを作成します。
- Docker イメージをビルドしてカスタマイズします。
- Minikube の Docker デーモンにイメージを保存します。
- Web モニタリング PSA と API モニタリング PSA を展開します。
- Kubernetes クラスタをモニタします。
ほとんどの手順は、Web モニタリング PSA と API モニタリング PSA の両方に共通です。該当する場合は、手順の違いが強調表示されています。
このマニュアルには、AWS CLI のマニュアルへのリンクが記載されています。AWS CLI でそのマニュアルが管理されているため、AppDynamics は AWS CLI のマニュアルの正確さについては責任を負いません。
Kubernetes クラスタの作成
kops を使用して、AWS で独自の管理型 Kubernetes クラスタを作成できます。別のクラウドまたは独自のデータセンターで自己管理型クラスタを作成する場合は、Kubeadm や Kubespray などの他のツールを使用することを検討してください。展開ツールを使用した Kubernetes のインストールを参照してください。
Bare Metal K8s で Kubernetes クラスタを作成するには、次の手順を実行します。
- AWS CLI をインストールして設定します。
IAM ロールを作成するには、次のように入力します。
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
CODE- 前の手順で取得したアクセスキーと
aws configure
を使用して、AWS CLI ログイン情報を設定します。 プラットフォームに応じて、次の手順に従って kops をインストールします。
S3 バケットを作成するには、次のように入力してバージョン管理を有効にします。
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
CODEクラスタを作成するには、次のように入力します。
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
CODE互換性のあるバージョンのいずれかから
KOPS_KUBERNETES_VERSION
を指定します。上記のコードスニペットの
node-size
とnode-count
は、推奨される設定タイプに従って選択されます。異なるタイプとノード数で、任意の設定を指定できます。「EC2 インスタンスタイプ」を参照してください。クラスタが実行されているかどうかを確認するには(クラスタのセットアップと実行に時間がかかる場合があります)、次のように入力します。
kops validate cluster
CODE
クラスタへのアクセス
Kubernetes クラスタにアクセスするには、次の手順に従って、クラスタとの対話型ユーティリティである kubectl をインストールします。
クラスタが実行されていることを確認するには、次のように入力します。
kubectl get nodes
(オプション)プロキシサーバーの設定
プロキシサーバーの設定は、Web モニタリング PSA でのみサポートされています。
プロキシサーバーを設定すると、すべてのドメインに適用されます。特定のドメインに対してのみプロキシサーバーを設定するには、次の手順を実行します。
sum-chrome-agent/agent
ディレクトリに移動します。chrome.py
ファイルを開きます。次の文字列に移動します。
if self._proxy_server: chrome_options.add_argument('--proxy-server={}'.format(self._proxy_server))
CODE次の詳細を追加します。
bypass_list = ["*abc.com", "*xyz1.com", "*xyz2.com"] chrome_options.add_argument('--proxy-bypass-list=%s' % ";".join(bypass_list))
CODEbypass_list
で指定したドメイン URL は、プロキシサーバーにリダイレクトされません。bypass_list
に任意の数のドメインを追加できます。他のすべての指定されていないドメイン URL は、プロキシサーバーにリダイレクトされます。values.yaml
ファイルでプロキシサーバーのアドレスを指定します。「キーと値のペアの設定」を参照してください。docker イメージのビルド後に
bypass_list
に変更を加えた場合は、docker イメージを再ビルドする必要があります。
Docker イメージのビルドとカスタマイズ
Simple Synth PSA のインストール用の zip ファイルは、Appdynamics ダウンロードポータルまたはベータアップロードツールからダウンロードできます。
このファイルには、エージェントのインストールとモニタリングの設定のための Dockerfile が含まれています。
- Web Monitoring PSA::sum-chrome-agent、sum-heimdall、および Helm チャートの Dockerfile
- API Monitoring PSA: sum-api-monitoring-agent、sum-heimdall、および Helm チャートの Dockerfile
sum-chrome-agent、sum-api-monitoring-agent、および sum-heimdall のイメージをビルドする場合は、Docker がインストールされていることを確認します。インストールされていない場合は、ここから Docker をダウンロードしてインストールできます。
sum-chrome-agent の場合:
- zip ファイルを解凍して、sum-chrome-agent ディレクトリにアクセスします。
ディレクトリに移動して、次のコマンドを実行します。
docker build -f Dockerfile-PSA -t sum-chrome-agent:<agent-tag> .
CODE
sum-api-monitoring-agent の場合:
- zip ファイルを解凍して、sum-api-monitoring-agent ディレクトリにアクセスします。
ディレクトリに移動して、次のコマンドを実行します。
docker build -f Dockerfile-PSA -t sum-api-monitoring-agent:<agent-tag> .
CODE
sum-heimdall の場合:
- zip ファイルを解凍して、sum-heimdall ディレクトリにアクセスします。
このディレクトリに移動して、次のコマンドを実行します。
docker build -f Dockerfile-PSA -t sum-heimdall:<heimdall-tag> .
CODE
<heimdall-tag> および <agent-tag> には、任意の値を使用できます。ただし、以降の手順で同じ値を使用します。
M1 チップを搭載した macOS を使用している場合は、次のコマンドを使用します。
sum-chrome-agent
docker buildx build -f Dockerfile-PSA --platform=linux/amd64 -t sum-chrome-agent:<agent-tag> .
sum-heimdall
docker buildx build -f Dockerfile-PSA --platform=linux/amd64 -t sum-heimdall:<heimdall-tag> .
sum-api-monitoring-agent
docker buildx build -f Dockerfile-PSA --platform=linux/amd64 -t sum-api-monitoring-agent:<api-tag> .
(オプション)カスタム Python ライブラリの追加
このセクションは、Web モニタリング PSA にのみ適用されます。
使用可能な標準ライブラリセットに加えて、スクリプト測定で使用するカスタム Python ライブラリをエージェントに追加できます。ベースイメージとしてロードしたイメージに基づいて新しいイメージをビルドします。
Dockerfile を作成し、Python pip を実行する
RUN
ディレクティブを作成します。たとえば、algorithms
ライブラリをインストールするには、次のように Dockerfile を作成します。# Use the sum-chrome-agent image we just loaded as the base image FROM sum-chrome-agent:<agent-tag> # Install algorithm for python3 on top of that RUN python3 -m pip install algorithms==0.1.4 # We can add more RUN directives for installing more libraries # RUN python3 -m pip install ...
CODE任意の数の
RUN
ディレクティブを作成して、必要なライブラリをインストールできます。新しいイメージをビルドするには、次のように入力します。
docker build -t sum-chrome-agent:<agent-tag> - < Dockerfile
CODE新しくビルドされたエージェントイメージには、必要なライブラリが含まれています。
イメージのタグ付けとレジストリへのプッシュ
クラスタがアクセスできるように、イメージにタグを付けてレジストリにプッシュする必要があります。これは、次の方法で実行できます。
EC2 を使用した Bare Metal K8S
Vanilla K8S は AWS インフラストラクチャで動作します。kops は適切なロールを作成してクラスタノードに割り当てるため、他の設定なしで Elastic Container Registry(ECR)に直接アクセスできます。
イメージにタグを付けるには、次のように入力します。
Web Monitoring PSA:
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:
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:
aws ecr create-repository --repository-name sum/sum-heimdall
aws ecr create-repository --repository-name sum/sum-chrome-agent
API Monitoring PSA:
aws ecr create-repository --repository-name sum/sum-heimdall
aws ecr create-repository --repository-name sum/sum-api-monitoring-agent
イメージをプッシュするには、次のように入力します。
Web Monitoring PSA:
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:
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:
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:
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:
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:
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 リソースを展開および作成します。
次の手順に従って、Helm をインストールします。
Apache Ignite ポッドを実行するための新しい
ignite
名前空間を作成します。最初に Apache Ignite のコマンドを実行してから、Heimdall のコマンドを実行してください。
新しい
ignite
名前空間を作成するには、次のように入力します。kubectl create namespace ignite
CODEApache Ignite を展開する前に、いくつかの設定オプションを設定する必要があります。設定オプションを表示するには、すでにダウンロードした
ignite-psa.tgz
ファイルに移動し、次のように入力します。helm show values ignite-psa.tgz > values-ignite.yaml
CODE永続化を有効にする場合は、
persistence > enabled
を設定します。この設定は、オプションです。上記の設定を使用して Helm チャートを展開するには、すでにダウンロードした
ignite-psa.tgz
ファイルに移動し、次のように入力します。helm install synth ignite-psa.tgz --values values-ignite.yaml --namespace ignite
CODEすべての Kubernetes リソースがクラスタに作成され、Apache Ignite を使用できます。数秒後、Apache Ignite が初期化され、コントローラに表示されます。
ポッドが実行されているかどうかを確認するには、次のように入力します。
kubectl get pods --namespace ignite
CODEApache Ignite ポッドが正常に実行された後にのみ、次の手順に進みます。
Heimdall および測定ポッドを実行する新しい
measurement
名前空間を作成します。新しい
measurement
名前空間を作成するには、次のように入力します。kubectl create namespace measurement
CODE1 つのコマンドを使用して、展開の詳細を含む Helm チャートを展開できます。エージェントを展開するには、以前にダウンロードした zip ファイルの Helm チャート
sum-psa-heimdall.tgz
を使用します。Private Synthetic Agent を展開する前に、いくつかの設定オプションを設定する必要があります。設定オプションを表示するには、すでにダウンロードしたsum-psa-heimdall.tgz
ファイルに移動し、次のように入力します。helm show values sum-psa-heimdall.tgz > values.yaml
CODE以下は、
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
プライベートレジストリを使用して設定した後
レジストリログイン情報を作成するには、次のように入力します。
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
CODEregcred
レジストリログイン情報を使用するように、測定名前空間のデフォルト サービス アカウントにパッチを適用します。kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "regcred"}]}' --namespace measurement
CODE残りの値はデフォルトのままにすることも、要件に基づいて設定することもできます。シェパード 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"]
上記の設定を使用して Helm チャートを展開するには、すでにダウンロードした
sum-psa-heimdall.tgz
ファイルに移動し、次のように入力します。helm install heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement
CODEすべての Kubernetes リソースがクラスタに作成され、Heimdall を使用できます。数秒後、Heimdall が初期化され、コントローラに表示されます。
ポッドが実行されているかどうかを確認するには、次のように入力します。
kubectl get pods --namespace measurement
CODE初期導入後に
values.yaml
に変更を加えるには、すでにダウンロードしたsum-psa-heimdall.tgz
ファイルに移動して、次のように入力します。helm upgrade heimdall-onprem sum-psa-heimdall.tgz --values values.yaml --namespace measurement
CODE展開を削除するには、次のコマンドを実行します。
helm uninstall heimdall-onprem --namespace measurement
CODEこれは、必要でない限り推奨されません。
Kubernetes クラスタのモニタリング
ダウンロードした zip 内の Helm チャート sum-psa-monitoring.tgz
により、モニタリングスタックがインストールされます。この Helm チャートは、Private Simple Synthetic Agent をモニタするためのカスタム Grafana ダッシュボードとともに kube-prometheus-stack をインストールします。
この展開のモニタリングはオプションです。ただし、クラスタをモニターして正常性を定期的に確認することを強く推奨します。
モニタリングスタックのインストール
別の
monitoring
名前空間を作成するには、次のように入力します。kubectl create namespace monitoring
CODE設定オプションを確認するには、次のように入力します。
helm show values sum-psa-monitoring.tgz > values-monitoring.yaml
CODEこれにより、すべての設定オプションを含む
values-monitoring.yaml
ファイルが生成されます。Helm チャートのインストール中に生成されたvalues-monitoring.yaml
ファイルを変更して渡すには、次のように入力します。helm install psa-monitoring sum-psa-monitoring.tgz --values values-monitoring.yaml --namespace monitoring
CODEモニタリングスタックをインストールした後、(クラスタ内で実行される)Grafana を起動してダッシュボードを表示できます。クラスタの外部から Grafana にアクセスするには、ポートフォワーディングを設定するか、Ingress を設定します。ローカルにアクセスするようにポートフォワーディングを設定するには、次のように入力します。
kubectl port-forward svc/psa-monitoring-grafana 3000:80 --namespace monitoring
CODEブラウザから localhost:3000 を起動し、デフォルトのログイン情報(ユーザ名:
admin
、パスワード:prom-operator
)を使用して、ログインします。Private Simple Synthetic Agent という名前のダッシュボードに、Kubernetes クラスタ、Apache Ignite、Heimdall、および実行中の測定に関する詳細が表示されます。