mcpField
A
app-platform-troubleshooting

app-platform-troubleshooting

github.com/digitalocean-labsクラウド・DevOps3891 回インストール3 日前に更新
リポジトリ

app-platform-troubleshooting について

DigitalOcean App Platform の開発者向けトラブルシューティングスキルです。コンテナへのライブアクセスやログ分析による診断を案内し、デバッグコンテナでインフラの問題を切り分けます。

主な機能

  1. 01SDK によるライブシェル診断
  2. 02実行・ビルド・クラッシュログの分析
  3. 03デバッグコンテナでのインフラ検証
  4. 04エラーと修正方法のクイックリファレンス

活用シーン

  1. 01シェル経由でデプロイ済みアプリを調査
  2. 02ログからビルドやデプロイの失敗を診断
  3. 03インフラ障害とアプリの問題を切り分け

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/digitalocean-labs/do-app-platform-skills --skill app-platform-troubleshooting

インストール後、Claude Code で/app-platform-troubleshootingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

README.md
reference/
app-maintenance.md
debug-container.md
diagnostic-scripts.md
live-troubleshooting.md
logs-analysis.md
networking-issues.md

詳細

App Platform トラブルシューティングスキル

推測に頼るデバッグを、迅速な診断と修正に変えます。

基本方針

Traditional: See error → Guess → Change → Push → Wait 5-7 min → Repeat
With skill:  See error → Diagnose → Fix → Verify → Commit proper fix

簡単な選択ガイド

Is the app deployed with running containers?
├── YES → Can we access the shell?
│         ├── YES → LIVE MODE (SDK shell access)
│         └── NO  → LOGS-ONLY MODE (fetch logs)
└── NO (build/deploy failed) → LOGS-ONLY MODE

モード 1:ライブトラブルシューティング(クイックスタート)

from do_app_sandbox import Sandbox

app = Sandbox.get_from_id(app_id="<app-id>", component="web")

# Diagnostics
app.exec("env | grep DATABASE")
app.exec("curl -v localhost:8080/health")
app.exec("ps aux | head -10")

完全なガイド:live-troubleshooting.mdを参照してください。


モード 2:ログのみ(クイックスタート)

# Runtime logs
doctl apps logs <app_id> <component> --type run

# Build logs
doctl apps logs <app_id> <component> --type build

# Crash logs
doctl apps logs <app_id> --type=run_restarted

完全なガイド:logs-analysis.mdを参照してください。


デバッグコンテナ(インフラストラクチャの問題)

約 30~45 秒でデプロイし、インフラストラクチャの問題とアプリケーションの問題を切り分けます。

services:
  - name: debug
    image:
      registry_type: GHCR
      registry: ghcr.io
      repository: bikramkgupta/debug-python
      tag: latest
    http_port: 8080
    envs:
      - key: DATABASE_URL
        value: ${db.DATABASE_URL}
# Run validation suite
validate-infra all
validate-infra database
validate-infra kafka

完全なガイド:debug-container.mdを参照してください。


クイックリファレンス:終了コード

コードシグナル意味
0-正常終了(終了すべきではありません)
1-一般的なエラー
127-コマンドが見つかりません
137SIGKILLOOM による強制終了
143SIGTERM正常なシャットダウン

クイックリファレンス:よくある修正方法

問題簡単な修正方法
アプリがすぐに終了する$PORT でリッスンしているか確認する
502 エラーヘルスエンドポイントを確認し、実行中であることを確かめる
データベースへの接続に失敗するデバッグコンテナを使用し、信頼できるソースを確認する
ビルドに失敗する依存関係を確認し、ビルドログを確認する
OOM による強制終了インスタンスのサイズをアップグレードする
ヘルスチェックに失敗するlocalhost ではなく、0.0.0.0 にバインドする
起動が遅いinitial_delay_seconds を増やす

参考ファイル


サポートへのエスカレーションが必要な場合

次のような場合は DigitalOcean サポートにお問い合わせください。

  • 再デプロイ後も内部エラーが続く
  • リソース制限の引き上げが必要
  • 複数のアプリに影響がある(プラットフォームの問題)
  • VPC/ネットワークの問題を診断できない

エスカレーションの前に、次の情報を集めてください。

doctl apps get <app_id> -o json > app_info.json
doctl apps logs <app_id> <component> --type run > runtime.log
doctl apps spec get <app_id> > app_spec.yaml

他のスキルとの連携

  • → deployment:修正後、適切な変更をデプロイする
  • → devcontainers:問題をローカルで再現する
  • → postgres:データベース固有の設定
  • → networking:ネットワークに関する包括的なドキュメント

コメント