cd /opt/appdynamics/lab-artifacts/phantomjs
./start_load.sh
Cleaning up artifacts from previous load...
Starting home-init-01
Waiting for additional JVMs to initialize... 1Waiting for additional JVMs to initialize... 2Waiting for additional JVMs to initialize... 3Waiting for additional JVMs to initialize... 4Waiting for additional JVMs to initialize... 5Waiting for additional JVMs to initialize... 6Waiting for additional JVMs to initialize... 7Waiting for additional JVMs to initialize... 8Waiting for additional JVMs to initialize... 9Waiting for additional JVMs to initialize... 10Waiting for additional JVMs to initialize... 11Waiting for additional JVMs to initialize... 12Waiting for additional JVMs to initialize... 13Waiting for additional JVMs to initialize... 14Waiting for additional JVMs to initialize... 15Waiting for additional JVMs to initialize... 16Waiting for additional JVMs to initialize... 17Waiting for additional JVMs to initialize... 18Waiting for additional JVMs to initialize... 19Waiting for additional JVMs to initialize... 20Starting slow-query-01
Starting slow-query-02
Starting slow-query-03
Starting slow-query-04
Starting sessions-01
Starting sessions-02
Starting sell-car-01
Starting sell-car-02
Starting sessions-03
Starting sessions-04
Starting search-01
Starting request-error-01
Starting mem-leak-insurance
Finished starting load generator scripts 100% 22MB 255.5KB/s 01:26
Controller でのトランザクション負荷の確認
WebブラウザでGetting Started Wizardがまだ開いている場合、エージェントが接続され、Controllerがデータを受信していることが確認できるはずです。
View Dashboard During Health Rule Violation をクリックして、問題発生時のノードメトリクスを確認します。違反とパフォーマンスメトリクスを関連付けることで、診断に役立ちます。
View Dashboard During Health Rule Violation ボタンをクリックすると、デフォルトでNodeダッシュボードの Server タブが開きます。
AppDynamics Server Visibility Monitoringエージェントをまだインストールしていない場合、ノードのホストのリソースメトリクスは表示されません。これらのメトリクスは次のラボで確認できます。AppDynamics Javaエージェントは、JMX経由でJVMからメモリメトリクスを収集します。
Server Visibility Monitoringエージェントは、同じホスト上で実行されているSplunk AppDynamics APMエージェントと自動的に関連付けられます。
Server Visibilityを有効にすると、アプリケーションのコンテキストでサーバーパフォーマンスメトリクスにアクセスできます。さまざまな方法でサーバーとアプリケーションのコンテキストを切り替えることができます。以下のステップに従って、サーバーメインダッシュボードからサーバー上で実行されているNodeの1つに移動します。
Dashboard タブをクリックしてメインのServer Dashboardに戻ります。
APM Correlation リンクをクリックします。
リストされているTierの1つで下矢印をクリックします。
TierのNodeリンクをクリックします。
これで Node Dashboard に移動しました。
Server タブをクリックして関連するホストメトリクスを確認します。
Server Visibility Monitoringエージェントがインストールされている場合、ホストメトリクスは関連するNodeのコンテキスト内で常に利用可能です。
Base Pageダッシュボードの上部には、Controller UIの右上隅にあるタイムフレームドロップダウンで選択された期間全体のEnd User Response Time、Load、Cache Hits、Page Views with JS errorsなどの主要なパフォーマンス指標が表示されます。Cache Hitsは、ソースからではなくCDNなどのキャッシュから取得されたリソースを示します。
Timing Breakdownセクションには、ページロードプロセスの各側面に必要な平均時間を表示するウォーターフォールグラフが表示されます。各メトリクスが何を測定するかについての詳細情報は、左側の名前にカーソルを合わせると定義がポップアップ表示されます。より詳細な情報については、Browser RUM Metricsを参照してください。
以下の手順に従って、localhost:8080/supercar-trader/car.do Base Pageの詳細を確認します。
# Option 1: Fork the repository via GitHub UI# Go to https://github.com/chambear2809/github-actions-lab# Click "Fork" button# Option 2: Clone directly (for testing)git clone https://github.com/chambear2809/github-actions-lab.git
cd github-actions-lab
# Test from runnerssh -i ~/.ssh/test-key.pem ubuntu@172.31.1.243 -o ConnectTimeout=10# Check security group allows SSH from runner# Verify private key matches public key on targets
「Cleanup All Agents」ワークフローは /opt/appdynamics を完全に削除します。この操作は元に戻せません。注意して使用してください。
ワークフローの構造
すべてのバッチ処理ワークフローは、一貫した2ジョブ構成に従います:
ジョブ 1: Prepare
prepare:runs-on:self-hostedoutputs:batches:${{ steps.create-batches.outputs.batches }}steps:- name:Load hosts and create batchesrun:| # Load DEPLOYMENT_HOSTS variable
# Split into batches of N hosts
# Output as JSON array
目的: GitHub Variablesからターゲットホストを読み込み、バッチマトリックスを作成
ジョブ 2: Deploy/Install/Uninstall
deploy:needs:prepareruns-on:self-hostedstrategy:matrix:batch:${{ fromJson(needs.prepare.outputs.batches) }}steps:- name:Setup SSH key- name:Execute operation on all hosts in batch (parallel)
目的: 各バッチに対して並列に実行し、バッチ内のすべてのホストで特定の操作を実行
バッチ処理の動作
仕組み
Prepare ジョブ が DEPLOYMENT_HOSTS を読み込み、バッチに分割
Deploy ジョブ がバッチごとに1つのマトリックスエントリを作成
バッチはシーケンシャルに処理 され、ランナーの過負荷を防止
各バッチ内 では、バックグラウンドプロセスを使用してすべてのホストが並列にデプロイ
設定可能なバッチサイズ
すべてのワークフローは batch_size 入力を受け付けます(デフォルト: 256):
# Via GitHub CLIgh workflow run "Deploy Smart Agent" -f batch_size=128# Via GitHub UIActions → Select workflow → Run workflow → Set batch_size
# Deploy Smart Agent (default batch size)gh workflow run "Deploy Smart Agent" --repo YOUR_USERNAME/github-actions-lab
# Deploy with custom batch sizegh workflow run "Deploy Smart Agent"\
--repo YOUR_USERNAME/github-actions-lab \
-f batch_size=128# Install agentsgh workflow run "Install Node Agent (Batched for Large Scale)"\
--repo YOUR_USERNAME/github-actions-lab
gh workflow run "Install Machine Agent (Batched for Large Scale)"\
--repo YOUR_USERNAME/github-actions-lab
# Uninstall agentsgh workflow run "Uninstall Node Agent (Batched for Large Scale)"\
--repo YOUR_USERNAME/github-actions-lab
# Stop and cleangh workflow run "Stop and Clean Smart Agent (Batched for Large Scale)"\
--repo YOUR_USERNAME/github-actions-lab
# Complete cleanupgh workflow run "Cleanup All Agents"\
--repo YOUR_USERNAME/github-actions-lab
ワークフローの監視
# List recent workflow runsgh run list --repo YOUR_USERNAME/github-actions-lab
# View specific rungh run view RUN_ID --repo YOUR_USERNAME/github-actions-lab
# Watch run in progressgh run watch RUN_ID --repo YOUR_USERNAME/github-actions-lab
# View failed logsgh run view RUN_ID --log-failed --repo YOUR_USERNAME/github-actions-lab
初回デプロイのウォークスルー
完全な初回デプロイの手順を説明します:
ステップ 1: セットアップの確認
ワークフローを実行する前に、以下を確認します:
セルフホストランナーが「Idle」(緑色)と表示されている
SSH_PRIVATE_KEY Secretが設定されている
DEPLOYMENT_HOSTS VariableにターゲットIPが含まれている
ネットワーク接続が確認済み
ステップ 2: Smart Agent のデプロイ
GitHub UI 経由:
Actions タブに移動します
“Deploy Smart Agent” を選択します
“Run workflow” をクリックします
デフォルトのbatch_size(256)を受け入れます
“Run workflow” をクリックします
GitHub CLI 経由:
gh workflow run "Deploy Smart Agent" --repo YOUR_USERNAME/github-actions-lab
ステップ 3: 実行の監視
ワークフローは以下を表示します:
Prepare ジョブ - バッチマトリックスの作成
Deploy ジョブ(バッチごとに1つ)- ホストへのデプロイ
各ジョブをクリックして詳細なログを確認します。
ステップ 4: インストールの確認
ターゲットホストにSSH接続して確認します:
# SSH to targetssh ubuntu@172.31.1.243
# Check Smart Agent statuscd /opt/appdynamics/appdsmartagent
sudo ./smartagentctl status
期待される出力:
Smart Agent is running (PID: 12345)
Service: appdsmartagent.service
Status: active (running)
ステップ 5: 追加エージェントのインストール(オプション)
必要に応じて、特定のエージェントタイプをインストールします:
# Install Machine Agentgh workflow run "Install Machine Agent (Batched for Large Scale)"\
--repo YOUR_USERNAME/github-actions-lab
# Install DB Agentgh workflow run "Install DB Agent (Batched for Large Scale)"\
--repo YOUR_USERNAME/github-actions-lab
# 1. Deploy Smart Agentgh workflow run "Deploy Smart Agent"# 2. Verify deployment# SSH to a host and check status# 3. Install agents as neededgh workflow run "Install Machine Agent (Batched for Large Scale)"gh workflow run "Install DB Agent (Batched for Large Scale)"
シナリオ 2: Smart Agent のアップデート
# 1. Stop and clean current installationgh workflow run "Stop and Clean Smart Agent (Batched for Large Scale)"# 2. Update Smart Agent ZIP in repository# (Push new version to repository)# 3. Deploy new versiongh workflow run "Deploy Smart Agent"# 4. Reinstall agentsgh workflow run "Install Machine Agent (Batched for Large Scale)"
シナリオ 3: 新しいホストの追加
# 1. Update DEPLOYMENT_HOSTS variable in GitHub# Add new IPs# 2. Deploy to all hosts (will skip existing ones with idempotent logic)gh workflow run "Deploy Smart Agent"
シナリオ 4: 完全な削除
# 1. Stop and cleangh workflow run "Stop and Clean Smart Agent (Batched for Large Scale)"# 2. Complete removalgh workflow run "Cleanup All Agents"
細部
「Cleanup All Agents」は /opt/appdynamics を完全に削除します。この操作は元に戻せません。
ワークフロー失敗のトラブルシューティング
ワークフローが「Queued」のまま
症状: ワークフローが開始されない
原因: ランナーが利用できないかオフライン
解決策:
ランナーステータスを確認します: Settings → Actions → Runners
ランナーが「Idle」(緑色)と表示されていることを確認します
必要に応じてランナーを再起動します: sudo ./svc.sh restart
SSH 接続の失敗
症状:「Permission denied」または「Connection refused」エラー
解決策:
SSH を手動でテスト:
# From runner instancessh -i ~/.ssh/test-key.pem ubuntu@172.31.1.243
セキュリティグループを確認:
ランナーからのSSH(22)が許可されていることを確認
ランナーとターゲットが同じセキュリティグループにあることを確認
SSH キーを確認:
SSH_PRIVATE_KEY Secretが実際のキーと一致していることを確認
ターゲットホストに公開鍵があることを確認
部分的なバッチの失敗
症状: 一部のホストが成功し、他が失敗
解決策:
ワークフローログで失敗したホストを特定
失敗したホストにSSH接続して調査
ワークフローを再実行(冪等性 - 成功したホストはスキップ)
バッチジョブエラー
症状:「Error splitting hosts into batches」
解決策:
DEPLOYMENT_HOSTS Variableのフォーマットを確認
1行に1つのIPであることを確認
末尾のスペースや特殊文字がないことを確認
Unix改行コード(LF、CRLFではなく)を使用
パフォーマンスチューニング
バッチサイズの調整
小さなバッチ(リソース使用量が少ない、速度は低下):
gh workflow run "Deploy Smart Agent" -f batch_size=128
大きなバッチ(リソース使用量が多い、速度は向上):
gh workflow run "Deploy Smart Agent" -f batch_size=256
smart_agent:controller_url:'CONTROLLER URL HERE, JUST THE BASE URL'# o11y.saas.appdynamics.comaccount_name:'Account Name Here'account_access_key:'YOUR ACCESS KEY HERE'fm_service_port:'443'# Use 443 or 8080 depending on your environment.ssl:truesmart_agent_package_debian:'appdsmartagent_64_linux_24.6.0.2143.deb'# or the appropriate package namesmart_agent_package_redhat:'appdsmartagent_64_linux_24.6.0.2143.rpm'# or the appropriate package name