メインコンテンツへスキップ

v1.7.3 — AI 総合診断 Overhaul + Auto-Collect エージェント

· 約7分で読めます

AI 総合診断が完全に新しくなりました。DOCX/Markdown/PDF の 3 種エクスポート定期レポート(週次/隔週/月次)、そしてデータを自動収集する 6 種の Auto-Collect エージェントを追加しました。EKS ページも、クラスターアクセス管理、Describe パネル、Service Resources タブなど大幅に改善されました。

主な変更点

AI 総合診断リニューアル · DOCX/MD/PDF エクスポート · 定期レポート · 6 種 Auto-Collect エージェント · FinOps MCP 5 ツール · EKS クラスターアクセス管理 · Powerpipe exit code 2 の処理

AI 総合診断リニューアル

従来の /diagnosis パスが /ai-diagnosis に変更され、UI 全般がリニューアルされました。

Before / After

項目Before (v1.7.2)After (v1.7.3)
パス/diagnosis/ai-diagnosis
名称総合診断AI 総合診断
エクスポートPPTXDOCX + Markdown + PDF
定期レポート週次/隔週/月次
S3 アップロードDOCX + MD の自動アップロード

3 種エクスポート

DOCXdocx パッケージベースの A4 プロフェッショナルレポート:

  • 表紙(タイトル、ヘルススコア、アカウントエイリアス、日付)
  • 目次(ハイパーリンク、Heading 1-3)
  • セクション別アクセントカラー(コスト=緑、セキュリティ=赤、ネットワーク/EKS=紫、アイドル/MSK=オレンジ)
  • マークダウン解析(見出し、テーブル、リスト、引用、インラインコード/ボールド/イタリック)

Markdown — すべてのセクションを 1 つの .md ファイルにまとめてエクスポートします。

PDF/ai-diagnosis/report 専用印刷ページ:

  • 白背景の A4 レイアウト、CSS @media print によるページ区切り
  • 「印刷 / PDF 保存」ボタンでブラウザの Print-to-PDF
// src/lib/report-docx.ts (主要な構造)
const doc = new Document({
sections: [
coverPage(title, healthScore, accountAlias, date),
tableOfContents(),
...sections.map(s => sectionPage(s, accentColor)),
],
});
const buffer = await Packer.toBuffer(doc);

定期レポート

項目説明
頻度週次 / 隔週 / 月次
タイムゾーンKST (UTC+9)
設定曜日(0-6)、日付(1-28)、時刻(0-23)
保存先data/report-schedule.json
チェック周期5 分ごとにスケジュールを確認
// src/lib/report-scheduler.ts
type Schedule = {
enabled: boolean;
frequency: 'weekly' | 'biweekly' | 'monthly';
dayOfWeek?: number; // 0=日 ~ 6=土
dayOfMonth?: number; // 1~28
hour: number; // KST 基準
language: 'ko' | 'en';
};

UI でトグルの ON/OFF、頻度/曜日/時刻/言語を設定すると、自動的にレポートが生成され S3 にアップロードされます。

S3 アップロード

DOCX と Markdown ファイルは awsops-deploy-{accountId}/reports/ パスに自動アップロードされます。7 日間有効な Presigned URL を通じてダウンロードできます。CDK スタックに S3 PutObject/GetObject 権限が自動追加されます。

6 種の Auto-Collect エージェント

AI 総合診断レポートのデータ収集を自動化する専用エージェントです。各エージェントはマルチソースから並列にデータを収集し、ライブステータスをストリーミングします。

エージェントソース収集項目
EKS OptimizePrometheus + K8s + SteampipeCPU/メモリ使用率、スロットリング、Pod 再起動、HTTP 5xx、ノード使用率
DB OptimizeSteampipe + CloudWatchRDS/ElastiCache/OpenSearch のインスタンス発見 + メトリクスベースのライトサイジング
MSK OptimizeSteampipe + CloudWatch + Prometheusブローカーメトリクス、メッセージスループット、コンシューマーラグ、パーティション数
Idle ScanSteampipe未アタッチ EBS、gp2 ボリューム、未使用 EIP、停止中 EC2、90 日超のスナップショット、未使用 SG + コスト見積もり
Trace AnalyzeTempo/Jaeger + Prometheusサービス別エラートレース、500ms 超のスロートレース
IncidentCloudWatch + K8s + PrometheusALARM 状態のアラーム、Warning イベント、HTTP 5xx の急増、CPU スパイク、メモリ圧迫
// src/lib/collectors/types.ts
export interface Collector {
collect(send: SendFn, accountId?: string, isEn?: boolean): Promise<CollectorResult>;
formatContext(data: CollectorResult): string;
analysisPrompt: string;
displayName: string;
}
Collector パターン

すべてのエージェントが同じ Collector インターフェースを実装します。collect()Promise.allSettled でマルチソースを並列収集し、SendFn コールバックで進行状況をリアルタイムに伝達します。新しいエージェントを追加する際は、このインターフェースを実装するだけで済みます。

FinOps MCP Lambda

Cost Gateway に 5 つの FinOps ツールが追加されました。

ツールソース説明
get_rightsizing_recommendationsCompute OptimizerEC2/RDS/ECS/Lambda のライトサイジング + 月間削減額
get_savings_plans_recommendationsCost ExplorerSavings Plans の購入推奨(1 年/3 年、No Upfront)
get_reserved_instance_recommendationsCost ExplorerRI の購入推奨(EC2/RDS/ElastiCache/Redshift)
get_cost_optimization_hub_recommendationsCost Optimization Hub統合最適化推奨(Rightsize/Stop/Upgrade/SP)
get_trusted_advisor_cost_checksTrusted Advisorコスト最適化カテゴリのチェック + フラグ付きリソース

すべてのツールは target_account_id パラメータによるクロスアカウント照会をサポートします。

EKS/K8s UX の大幅改善

クラスターアクセス管理

機能説明
アクセス状態バッジクラスターごとに「Access Entry」登録の有無を表示
ワンクリック登録「Register ViewPolicy」ボタンで Access Entry + Policy を自動作成
接続検知K8s クエリ結果の context_name の有無で実際の接続状態を判別
CLI ガイド未接続クラスターに対して EC2 Role ARN ベースの登録コマンドを案内

新機能

機能ファイル説明
Describe パネルK9sDetailPanelJSONB 詳細情報(labels、annotations、containers、volumes、conditions)
Service Resources タブk8s.tsサービス別 CPU/Memory バーチャート(Pod セレクタージョイン)
クラスターフィルターk8s/page.tsxクラスターカードのクリックでノード/Pod/イベント/サービスをフィルタリング
StatsCard ナビゲーションStatsCard.tsxNodes→/k8s/nodes、Pods→/k8s/pods などクリックで遷移
SQL 統合queries/k8s.tsインライン SQL を中央クエリファイルへ移動 + キャッシュウォーマーを追加

バグ修正

  • external_ipexternal_ips のカラム名を修正(サービス 0/0 バグ)
  • EC2 IAM Role ARN の切り捨てを修正(SQL || 演算子のフィルター衝突)
  • Register クリック時のクラスターフィルタートグルを防止(stopPropagation
  • 登録後にポーリングで接続を確認(5 回 × 3 秒)

Benchmark: Powerpipe Exit Code 2 の処理

Powerpipe はベンチマークコントロールにアラームがあると exit code 2 で終了します。これは正常な動作ですが、従来のコードは異常終了として処理していました。

項目BeforeAfter
判定基準exit code === 0出力ファイルの存在 + サイズ > 0
exit code 2エラー処理正常処理
# exit code は無視し、出力ファイルの有効性で判断
powerpipe benchmark run ... > "${tmpFile}" 2>"${errorFile}"; \
if [ -s "${tmpFile}" ]; then
mv "${tmpFile}" "${resultFile}" && echo "done" > "${statusFile}";
else
echo "error" > "${statusFile}";
fi

インフラ: S3 レポートアップロード + update-infra スクリプト

S3 ポリシー

CDK スタックに EC2 ロールの S3 権限が追加されました:

// infra-cdk/lib/awsops-stack.ts
ec2Role.addToPolicy(new iam.PolicyStatement({
actions: ['s3:PutObject', 's3:GetObject'],
resources: [`arn:aws:s3:::awsops-deploy-${this.account}/reports/*`],
}));

update-infra スクリプト

EC2 を置き換えずに CDK スタックを安全に更新する 00-update-infra.sh スクリプト:

  1. 既存スタックのパラメータ読み取り — CloudFormation から現在の値を保持
  2. CDK コンテキストの復元 — VPC、TGW、ドメインなどをライブインフラから再抽出
  3. cdk diff プレビュー — EC2 置き換えの有無を警告
  4. デプロイ--no-rollback で安全にデプロイ

バージョン比較

項目v1.7.2v1.7.3変更
診断パス/diagnosis/ai-diagnosis名称変更
エクスポートPPTXDOCX + MD + PDF3 種
定期レポート週次/隔週/月次新規
Auto-Collect6 種エージェント新規
FinOps ツール5 つの MCP ツール新規
EKS アクセス手動ワンクリック登録改善
Benchmarkexit code 依存出力ファイル検証修正

主なファイル変更

ファイル変更内容
src/app/ai-diagnosis/page.tsx診断ページのリニューアル(パス変更、スケジュール UI)
src/app/ai-diagnosis/report/page.tsxPDF 印刷専用ページ
src/app/api/report/route.tsレポート生成 API(15 セクション、S3 アップロード)
src/lib/report-docx.tsDOCX 生成器(表紙、目次、セクション別スタイル)
src/lib/report-scheduler.ts定期レポートスケジューラ(5 分チェック)
src/lib/report-prompts.ts15 セクション別の Bedrock 分析プロンプト
src/lib/report-generator.tsデータ収集オーケストレーター
src/lib/collectors/*.ts6 種の Auto-Collect エージェント
agent/lambda/aws_finops_mcp.pyFinOps MCP Lambda(5 ツール)
src/app/api/benchmark/route.tsPowerpipe exit code 2 の処理
src/lib/queries/k8s.tsK8s SQL クエリ統合 + Service Resources
src/components/dashboard/StatsCard.tsxクリックナビゲーション(href prop)
infra-cdk/lib/awsops-stack.tsS3 reports/* ポリシーを追加
scripts/00-update-infra.sh安全なインフラ更新スクリプト