gcloud-usage について
ログ、メトリクス、トレース、アラートを設定する人向けに、Google Cloud のオブザーバビリティ実践例をまとめたスキルです。クエリ例とトラブルシューティング手順も含みます。
主な機能
- 01構造化 JSON ログ
- 02重大度によるログ絞り込み
- 03ログクエリ例
- 04メトリクス・ログ・トレースの指針
- 05アラートポリシーの推奨事項
- 06ログコストの削減方法
活用シーン
- 01検索しやすいアプリログの設計
- 02サービスのエラーや遅延の調査
- 03実行可能な監視アラートの設定
- 04ログ取り込み・保持コストの削減
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ fcakyon/ claude-codex-settings --skill gcloud-usageインストール後、Claude Code で/gcloud-usageを入力して読み込まれたか確認します。
詳細
GCP オブザーバビリティのベストプラクティス
構造化ロギング
JSON ログ形式
クエリしやすくするため、構造化 JSON ロギングを使用します。
{
"severity": "ERROR",
"message": "Payment failed",
"httpRequest": { "requestMethod": "POST", "requestUrl": "/api/payment" },
"labels": { "user_id": "123", "transaction_id": "abc" },
"timestamp": "2025-01-15T10:30:00Z"
}
重大度レベル
フィルタリングには適切な重大度を使用します。
- DEBUG: 詳細な診断情報
- INFO: 通常の運用、節目となるイベント
- NOTICE: 通常のイベントだが、重要なもの
- WARNING: 潜在的な問題、パフォーマンスの低下
- ERROR: サービスを停止させない障害
- CRITICAL: 直ちに対応が必要な障害
- ALERT: 担当者が直ちに対応する必要がある状態
- EMERGENCY: システムが使用不能な状態
ログフィルタリングクエリ
よく使われるフィルタ
# By severity
severity >= WARNING
# By resource
resource.type="cloud_run_revision"
resource.labels.service_name="my-service"
# By time
timestamp >= "2025-01-15T00:00:00Z"
# By text content
textPayload =~ "error.*timeout"
# By JSON field
jsonPayload.user_id = "123"
# Combined
severity >= ERROR AND resource.labels.service_name="api"
高度なクエリ
# Regex matching
textPayload =~ "status=[45][0-9]{2}"
# Substring search
textPayload : "connection refused"
# Multiple values
severity = (ERROR OR CRITICAL)
メトリクスとログとトレース
それぞれを使う場面
メトリクス: 時間の経過に伴う集計済みの数値データ
- リクエスト数、レイテンシのパーセンタイル
- リソース使用率(CPU、メモリ)
- ビジネス KPI(1 分あたりの注文数)
ログ: 詳細なイベント記録
- エラーの詳細とスタックトレース
- 監査証跡
- 特定のリクエストのデバッグ
トレース: サービス間のリクエストフロー
- サービスごとのレイテンシの内訳
- ボトルネックの特定
- 分散システムのデバッグ
アラートポリシーの設計
アラートのベストプラクティス
- アラート疲れを防ぐ: 対応可能な問題だけにアラートを出します
- 複数条件のアラートを使用する: 一時的な急増によるノイズを減らします
- 適切な期間を設定する: ほとんどのメトリクスでは 5~15 分にします
- ランブックへのリンクを含める: 対応担当者が迅速に行動できるようにします
よく使われるアラートパターン
エラー率:
- 条件:エラー率が 5 分間 1% を超える
- 適用先:サービスの健全性の監視
レイテンシ:
- 条件:P99 レイテンシが 10 分間 2 秒を超える
- 適用先:パフォーマンス低下の検出
リソース枯渇:
- 条件:メモリ使用率が 5 分間 90% を超える
- 適用先:キャパシティプランニングのトリガー
コストの最適化
ログコストの削減
- 除外フィルタ: 取り込み時に冗長なログを除外します
- サンプリング: 大量に発生するイベントは、一部の割合だけをログに記録します
- 保持期間の短縮: デフォルトの 30 日間の保持期間を短くします
- ログの格下げ: より安価なストレージバケットに転送します
除外フィルタの例
# Exclude health checks
resource.type="cloud_run_revision" AND httpRequest.requestUrl="/health"
# Exclude debug logs in production
severity = DEBUG
デバッグのワークフロー
- メトリクスから始める: 問題がいつ始まったかを特定します
- ログと関連付ける: 問題が発生した時刻の前後でログをフィルタリングします
- トレースを使用する: サービス間の特定のリクエストを追跡します
- リソースログを確認する: インフラストラクチャの問題を探します
- ベースラインと比較する: 正常と確認された期間と比較します
コメント
Markdown 対応