PCDE 合格対策
SECTION 4

セクション 4:
可観測性とトラブルシュート

PCDE の最大セクション(出題比 ~25%)。Cloud Logging / Monitoring / Trace / Profiler / Error Reporting を中心に、OpenTelemetry 計装、LQL / PromQLAudit Logs 4 種Cloud Service Mesh(旧 ASM)Burn rate アラートSynthetic MonitorManaged Service for Prometheus (GMP)、そして 2024-2025 新機能の Gemini Cloud Assist までを体系的に押さえ、5 領域(Infra / CI/CD / App / Observability / Performance) のトラブルシュート初動を即答できるレベルへ。

📊 出題 ~25% ★最重要 🔭 可観測性 3 軸 + α 🤖 Gemini Cloud Assist 📘🔧🎯 全レベル対応
出題 ~25% 📘 基礎 🔧 応用 🎯 要点
🔑 TL;DR — このセクションの要約 可観測性は Metrics + Logs + Traces + Profiles + Synthetic + AI の総合戦。ログは Log Router + SinkBigQuery(Log Analytics 推奨)/ Pub/Sub / GCS / 別 Bucket に振り分け、コスト削減は Exclusion > Sampling > Retention 短縮 の順。メトリクスは PromQL に統一(MQL は非推奨)、ヒストグラムは histogram_quantile。トレースは OpenTelemetry が標準、Trace ID を logging.googleapis.com/trace で構造化ログに必ず含める。Audit Logs 4 種のうち Data Access のみデフォルト無効。アラートは SLO Multi-burn-rate(Fast 1h=14.4x / Slow 6h=6x)。VM ログ・メトリクスは Ops Agent、K8s 新規 Prometheus は GMP Managed Collection。Cloud Service Mesh(旧 ASM)はコード変更なしに 4 Golden Signals を取得。Gemini Cloud Assist の Investigations / Log Summary / Explain this chart / Query 生成 で MTTR を短縮。

🎯 学習目標

このセクションの達成度0 / 0










※ チェック状態はこのブラウザに保存されます。

🔭 可観測性の 3 軸 + α

可観測性 = 「システムの出力から内部状態を後から推測できる性質」。監視(事前に決めた指標)と異なり、未知の故障を任意の高次元データから追跡できる。

アプリ / インフラ GCE / GKE / Run / Functions 📊 Metrics Cloud Monitoring / GMP 「何が起きてる?」 📝 Logs Cloud Logging 「詳しく何が?」 🔗 Traces Cloud Trace 「どこで遅い?」 🔥 Profiler コード行の CPU/Heap 🚨 Error Reporting 例外グルーピング 🛰 Synthetic Monitor 複数ステップ能動監視 🤖 Gemini Cloud Assist(旧 Duet AI) Investigations / Log Summary / Explain chart / Trace 要約 / Query 自動生成

3 軸(Metrics / Logs / Traces)+ α(Profiler / Error Reporting / Synthetic)+ Gemini Cloud Assist で MTTR 短縮。

Metrics

集約済み数値時系列

CPU/メモリ/RPS/エラー率。Cloud Monitoring + GMP(PromQL)。GAUGE / CUMULATIVE / DELTA の 3 種別。

Logs

個別イベント

JSON / テキスト。構造化(jsonPayload)必須。LogEntry に severity / resource / labels / trace を含む。

Traces

分散リクエスト追跡

Span を木構造で表現。OpenTelemetry が標準、Trace ID で Logs / Profiler と相互リンク。

4.1 計装と収集(Ops Agent / OpenTelemetry / Audit Logs)

3 つのエージェント

エージェント役割状態
Ops Agentログ + メトリクスを統合送信(fluentbit + otel)推奨(現行)
Legacy Logging Agentログのみ送信(fluentd)非推奨
Legacy Monitoring Agentメトリクスのみ送信(collectd)非推奨
🔑 VM の収集VM のログ + メトリクス収集は 必ず Ops Agent。Legacy 2 つは新規導入禁止、移行対象。GKE / Cloud Run / Functions は 自動収集(エージェント不要)

Ops Agent の設定例

# /etc/google-cloud-ops-agent/config.yaml logging: receivers: syslog: type: files include_paths: [/var/log/syslog] nginx_access: type: nginx_access include_paths: [/var/log/nginx/access.log] processors: parse_json: type: parse_json service: pipelines: default_pipeline: receivers: [syslog, nginx_access] processors: [parse_json] metrics: receivers: hostmetrics: type: hostmetrics collection_interval: 60s service: pipelines: default_pipeline: receivers: [hostmetrics]

OpenTelemetry(OTel)の基本

CNCF プロジェクト。ベンダーニュートラルな テレメトリ収集標準。Google Cloud の Trace / Monitoring / Logging は 第一級サポート。新規アプリは OTel SDK で計装が推奨。

コンポーネント役割
OTel SDK各言語の計装ライブラリ(Java/Python/Go/Node.js/.NET/Ruby)
OTel Collectorテレメトリの受信→処理→送信パイプライン
OTLP標準データフォーマット(gRPC / HTTP)
Auto-instrumentationライブラリ呼び出しを自動でフック

OTel Collector の 3 段構成(Receivers → Processors → Exporters)

アプリ OTel SDK OTLP/gRPC OpenTelemetry Collector Receivers otlp/prom/jaeger Processors batch/sampling Exporters googlecloud Cloud Trace Monitoring Logging
# OTel Collector config(最小) receivers: otlp: protocols: grpc: {endpoint: 0.0.0.0:4317} processors: batch: {timeout: 10s} exporters: googlecloud: {project: my-proj} service: pipelines: traces: receivers: [otlp] processors: [batch] exporters: [googlecloud]

Cloud Audit Logs 4 種類(最頻出)

ログ種別内容デフォルト課金保管先
Admin Activityリソースの変更(作成/削除/設定変更)常時有効、無効化不可無料_Required 400 日
Data Accessデータの読み書き(GCS / BQ クエリ等)既定で無効(明示有効化)課金あり_Default 30 日
System EventGCP 内部イベント(GCE ライブマイグレ等)常時有効、無効化不可無料_Required 400 日
Policy DeniedIAM / VPC SC で拒否されたアクセス常時有効、無効化不可課金あり_Default 30 日
🔑 暗記キーData Access のみデフォルト無効、コンプラなら明示有効化」。Data Access の 3 サブカテゴリは ADMIN_READ / DATA_READ / DATA_WRITE

Audit Logs 4 種類 — 視覚化

Admin Activity リソース変更 常時有効 / 無料 _Required 400 日 VM 削除 / IAM 変更 Data Access データ読み書き 既定無効 / 課金 _Default 30 日 GCS download / BQ query System Event GCP 内部イベント 常時有効 / 無料 _Required 400 日 ライブマイグレ Policy Denied アクセス拒否 常時有効 / 課金 _Default 30 日 IAM / VPC SC 拒否 LQL での検索 logName:"cloudaudit.googleapis.com/activity" # Admin Activity logName:"cloudaudit.googleapis.com/data_access" # Data Access logName:"cloudaudit.googleapis.com/policy" # Policy Denied

VPC Flow Logs と Firewall Insights

機能内容
VPC Flow LogsVPC サブネット内の 5-tuple フロー(src/dst IP/port、protocol)を記録
Firewall Insightsシャドウルール / Hit count / 過剰許可ルール検出
Firewall Rules Loggingルール単位でログ有効化(「特定ルールに何がマッチしたか」)

Cloud Service Mesh のテレメトリ

⚠️ サービスリネームCloud Service Mesh は旧 Anthos Service Mesh(ASM)。Istio ベース。2024 年に統合・改称。
種別内容送信先
Metricsistio_requests_total 等の Istio 標準メトリクスCloud Monitoring / Prometheus
Access LogsEnvoy proxy のアクセスログCloud Logging
Tracesサービス間の分散トレースCloud Trace
🔑 売りService Mesh を入れると コード変更なしに 4 Golden Signals が取れる

🔧 OTel Collector の主要 Receiver / Processor / Exporter

Receivers

  • otlp(標準)
  • prometheus(OSS scrape)
  • jaeger / zipkin
  • filelog(テキストログ)
  • hostmetrics(OS)

Processors

  • batch(必須)
  • memory_limiter(必須)
  • attributes(属性編集・PII 削除)
  • resource
  • probabilistic_sampler / tail_sampling
  • transform

Exporters

  • googlecloud(Trace/Mon/Log)
  • googlemanagedprometheus(GMP)
  • otlp(他のエンドポイント)
  • prometheus(scrape 用公開)
  • logging(stdout デバッグ)

🔧 推奨 Collector 設定テンプレ

receivers: otlp: protocols: grpc: {endpoint: 0.0.0.0:4317} http: {endpoint: 0.0.0.0:4318} processors: memory_limiter: check_interval: 1s limit_mib: 1500 spike_limit_mib: 512 batch: timeout: 10s send_batch_size: 1024 attributes: actions: - key: user.email action: delete # PII 削除 - key: env value: prod action: insert probabilistic_sampler: sampling_percentage: 10 exporters: googlecloud: project: my-proj googlemanagedprometheus: project: my-proj service: pipelines: traces: receivers: [otlp] processors: [memory_limiter, attributes, probabilistic_sampler, batch] exporters: [googlecloud] metrics: receivers: [otlp] processors: [memory_limiter, batch] exporters: [googlemanagedprometheus]

🔧 Audit Logs の有効化(IAM Policy)

# Data Access ログを有効化(IAM Policy) auditConfigs: - service: storage.googleapis.com auditLogConfigs: - logType: DATA_READ - logType: DATA_WRITE - logType: ADMIN_READ

🔧 VPC Flow Logs の有効化

gcloud compute networks subnets update SUBNET \ --region=us-central1 \ --enable-flow-logs \ --logging-aggregation-interval=interval-5-sec \ --logging-flow-sampling=0.5 \ --logging-metadata=include-all

🔧 自動計装(Python)

pip install opentelemetry-distro opentelemetry-exporter-otlp opentelemetry-bootstrap -a install # 主要ライブラリの自動計装をインストール opentelemetry-instrument --traces_exporter otlp python app.py # Flask / Django / requests / SQLAlchemy が自動でトレース化される

🔧 Service Mesh の標準メトリクス

メトリクス内容
istio_requests_totalリクエスト総数
istio_request_duration_millisecondsリクエスト処理時間
istio_request_bytes / istio_response_bytesリクエスト/レスポンスサイズ
istio_tcp_connections_opened_totalTCP 接続数

🎯 計装と収集 即答

要件答え
VM のログ + メトリクスOps Agent
GKE / Cloud Run / Functions の収集自動収集(エージェント不要)
OTel Collector の 3 段Receivers / Processors / Exporters
「誰がリソースを変更したか」Admin Activity log(常時有効)
「誰がデータを見たか」Data Access log(既定無効、明示有効化)
「IAM/VPC SC で拒否」Policy Denied log
VPC 内の 5-tuple フローVPC Flow Logs
不要 FW ルール検出Firewall Insights
コード変更なしに 4 Golden SignalsCloud Service Mesh(旧 ASM)

4.2 ログ管理(Log Router / Sink / LQL / Log Analytics)

Cloud Logging のアーキテクチャ

[アプリ / VM / GKE / GCP リソース] │ ▼ (Ops Agent / OTel / SDK / 自動収集) ┌──────────────────────┐ │ Log Router │ ← フィルタで振り分け └──────────────────────┘ │ │ │ ▼ ▼ ▼ ┌───────┐ ┌───────┐ ┌────────────┐ │ Log │ │Sink → │ │ Log-based │ │Buckets│ │BQ/PS/ │ │ Metric │ │ │ │ GCS │ │ │ └───────┘ └───────┘ └────────────┘

Log Buckets

バケット名保持期間削除用途
_Default30 日(1〜3650 日に変更可)通常ログの既定保管先
_Required400 日固定(変更不可)不可Admin Activity / System Event Audit 専用
ユーザー定義1〜3650 日コンプラ、長期保管

Sink の 4 つの宛先

宛先用途特徴
Log BucketLogging 内で保持LQL で検索可、リージョン固定
BigQuerySQL 分析パーティション自動、Log Analytics 推奨
Pub/Subストリーミング配信SIEM、Splunk、ETL 起点
Cloud Storage長期保管安価、JSON Lines 形式
🔑 暗記BigQuery = 分析 / Pub/Sub = ストリーム / GCS = 長期保管 / Log Bucket = Logging 内検索

構造化ログ(jsonPayload)が必須

アプリログは 常に構造化(JSON) で出力。これが Logs Explorer 検索性・log-based metric・trace 紐付けの前提。

{ "severity": "ERROR", "message": "Database connection failed", "user_id": 42, "retry": 3, "logging.googleapis.com/trace": "projects/my-proj/traces/abc123" }

LQL(Logging Query Language)基本構文

演算子意味
=完全一致severity="ERROR"
:サブストリング / フィールド存在textPayload:"timeout"
>=比較severity>=WARNING
=~正規表現resource.labels.zone=~"us-.*"
AND / OR / NOT論理結合severity=ERROR OR severity=CRITICAL

LQL 必修パターン

# Cloud Run の 5xx resource.type="cloud_run_revision" httpRequest.status>=500 # Audit Logs logName:"cloudaudit.googleapis.com/activity" # Admin Activity logName:"cloudaudit.googleapis.com/data_access" # Data Access logName:"cloudaudit.googleapis.com/policy" # Policy Denied # OOMKilled pod resource.type="k8s_container" jsonPayload.message:"OOMKilled" # 過去 5 分 timestamp>=timestamp_sub(@now, "5m")

log-based metric の 2 種類

種別集計内容
Counterログ行をカウントエラー発生数 / 分
Distributionログから数値を抽出して分布レイテンシ p50/p99 分布
💡 ヒント「ログの内容に応じてアラートを出したい」→ log-based metric を作って Alerting Policy が王道。distribution の可視化は Heatmap、分位点は histogram_quantile

ログ最適化 — 4 つのレバー(優先順位)

優先度手法効果注意
1Exclusion(除外)取り込み課金そのものを 0 に完全に消える、後から見られない
2Sampling一部だけ取り込み統計的に十分なら有効
3Retention 短縮ストレージ課金削減保管期間を 30 日→7 日等
4Log Buckets 削減バケット数の整理構成変更が必要
🔑 試験頻出「ログコストを急に下げたい」→ Exclusion(Sink 編集だけで即時反映、課金即停止)。Sink 追加は 重複課金になるので NG

課金体系(概要)

項目課金
ログ取り込み(Ingestion)約 $0.50/GiB(最初 50 GiB/月 無料)
ログストレージ(保持期間超過分)約 $0.01/GiB/月
Audit ログ(_Required無料

🔧 Sink 宛先の使い分けマトリクス

用途最適な宛先理由
SQL でアドホック分析BigQuery / Log Analyticsスキーマ自動、Log Analytics なら重複なし
リアルタイム ETL / SIEM 連携Pub/SubSplunk / Datadog / ElasticSearch 中継
長期アーカイブ / 7 年保管Cloud Storage Archive最安、Object Lifecycle
Logging 内で LQL + 長期保持ユーザー定義 Log Bucket最大 3650 日
別プロジェクト集約他 project の Log Bucketクロスプロジェクト Sink

🔧 Log Analytics(最新ベストプラクティス)

既存 Log Bucket を アップグレード すると BigQuery で直接 SQL 可能になる。データ重複なし・追加課金なし。

-- Log Analytics で過去 24h の Cloud Run エラーをサービス別集計 SELECT JSON_VALUE(resource.labels.service_name) AS service, COUNT(*) AS errors FROM `my-proj.global._Default._AllLogs` WHERE timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR) AND severity = 'ERROR' AND resource.type = 'cloud_run_revision' GROUP BY service ORDER BY errors DESC;

🔧 Aggregated Sink(組織レベル集約)

  • 通常の Sink は プロジェクト単位
  • Aggregated SinkOrganization / Folder 単位 で配下プロジェクトすべてを横断的に転送
  • セキュリティ監査の中央集約、コンプラ要件で必須
gcloud logging sinks create org-audit-sink \ bigquery.googleapis.com/projects/security-proj/datasets/audit_logs \ --include-children \ --organization=ORG_ID \ --log-filter='logName:"cloudaudit.googleapis.com/activity"'
🔑 試験頻出「組織全体の Audit Log を 1 つの BQ に集めたい」→ Org-level Aggregated Sink with --include-children

🔧 Sink 設計の典型 3 段構成

全ログ ├── Exclusion Filter: health check / debug は破棄 │ ├── Sink A → BigQuery (Log Analytics) │ Filter: severity>=WARNING │ 用途: 分析・トラブルシュート │ ├── Sink B → GCS Archive │ Filter: logName:"cloudaudit.googleapis.com" │ 用途: コンプライアンス 7 年保管 │ └── Sink C → Pub/Sub → Splunk Filter: severity>=ERROR 用途: SIEM 連携

🔧 GCS Lifecycle で自動階層化

rule: - action: {type: SetStorageClass, storageClass: NEARLINE} condition: {age: 30} - action: {type: SetStorageClass, storageClass: COLDLINE} condition: {age: 90} - action: {type: SetStorageClass, storageClass: ARCHIVE} condition: {age: 365} - action: {type: Delete} condition: {age: 3650}

🔧 PII / PHI のリダクション

パターン実装
A. アプリ層(推奨)Sensitive Data Protection(旧 DLP)API を呼んで出力前にマスク
B. Sink + Pub/Sub + Dataflow テンプレPub/Sub → Dataflow(DLP テンプレ)→ BigQuery
C. Log Processor(プレビュー)Log Router 上で直接フィルタ + 変換
# Sensitive Data Protection(旧 DLP)でメール・カード番号をマスク from google.cloud import dlp_v2 dlp = dlp_v2.DlpServiceClient() response = dlp.deidentify_content(request={ "parent": f"projects/{PROJECT_ID}", "deidentify_config": {"info_type_transformations": { "transformations": [{"primitive_transformation": { "character_mask_config": {"masking_character": "*"}}}]}}, "inspect_config": {"info_types": [ {"name": "EMAIL_ADDRESS"}, {"name": "CREDIT_CARD_NUMBER"}, {"name": "JAPAN_BANK_ACCOUNT"}]}, "item": {"value": text}, }) logger.info(response.item.value)

🔧 Log Scopes & Log Views

機能内容
Log Scopes複数プロジェクトの複数 Log Bucket / View を 1 つの論理スコープにまとめて Logs Explorer 横断検索
Log Views1 つの Log Bucket 内に絞り込みビュー(IAM で別チームに別 View 公開)

🔧 Exclusion / Sampling / Retention 実装テンプレ

# 1. Exclusion(健康チェック・デバッグログ) gcloud logging sinks update _Default \ --add-exclusion=name=exclude-health,filter='httpRequest.requestUrl="/healthz"' \ --add-exclusion=name=exclude-debug,filter='severity="DEBUG"' # 2. INFO を 10% サンプリング gcloud logging sinks update _Default \ --add-exclusion='name=sample-info,filter=severity="INFO",disabled=false,sampleRate=0.1' # 3. Retention 短縮(_Default を 7 日へ) gcloud logging buckets update _Default \ --location=global --retention-days=7

🎯 ログ管理 即答

要件答え
ログを SQL で分析(最安)Log Analytics(Bucket をそのまま BQ 統合)
リアルタイムで外部 SIEM へPub/Sub Sink
7 年アーカイブ最安Cloud Storage Sink(Archive class)
組織全体の Audit ログ集約Org-level Aggregated Sink with --include-children
ログコスト緊急削減Exclusion(最優先)
PII を取り除く最確実アプリ層で Sensitive Data Protection (DLP)
ログ行数をメトリクス化Counter 型 log-based metric
ログから数値抽出して分布化Distribution 型 log-based metric

🎯 Log Buckets 暗記

バケット保持期間削除
_Default30 日(1〜3650 日に変更可)
_Required400 日固定不可
ユーザー定義1〜3650 日

4.3 メトリクス・ダッシュボード・アラート(PromQL / GMP / Burn rate)

Cloud Monitoring の主要機能

機能役割
Metrics Explorer即席メトリクス可視化、PromQL / リスト UI
Dashboardsカスタムビュー、チームで共有
Alerting Policies条件で通知
Notification Channels通知先(Email/Slack/PagerDuty 等)
Uptime ChecksHTTP/HTTPS/TCP 死活監視
Synthetic MonitorAPI ワークフロー能動監視
SLOサービスレベル目標管理

メトリクスの 3 種別

種別説明
GAUGEその時点の値CPU 使用率、メモリ
CUMULATIVE累積値(リセットで 0 に戻る)リクエスト総数
DELTA期間内の増分バッチ処理件数

4 つのチャートタイプ

チャート用途
Line(折れ線)時系列の推移(CPU、RPS)
Stacked bar(積み上げ棒)カテゴリ別の積み上げ(サービス別エラー数)
Heatmapdistribution metric の分布可視化
Scorecard単一値 + 閾値色分け(SLO 残量)

PromQL 基本構文(必須)

⚠️ MQL は非推奨Cloud Monitoring 旧来の MQL(Monitoring Query Language)は 非推奨PromQL に統一。試験では PromQL を中心に問われる。
関数用途典型例
rate(v[t])counter の秒速rate(requests_total[5m])
increase(v[t])期間内増分increase(errors[1h])
sum() by (...)グループ集約sum by (svc) (rate(req[5m]))
avg() by (...)グループ平均avg by (zone) (cpu)
histogram_quantile(q, v)分位点(p50/p99)histogram_quantile(0.99, sum by(le) (rate(latency_bucket[5m])))
topk(k, expr)上位 ktopk(5, rate(errors[5m]))
label_replace()ラベル変換label_replace(up, "host", "$1", "instance", "([^:]+):.*")

4 Golden Signals の PromQL 雛形

シグナルPromQL
Latencyhistogram_quantile(0.99, sum by (le, service) (rate(http_request_duration_seconds_bucket[5m])))
Trafficsum by (service) (rate(http_requests_total[1m]))
Errorssum by (svc) (rate(http_requests_total{status=~"5.."}[5m])) / sum by (svc) (rate(http_requests_total[5m]))
Saturationavg by (instance) (rate(container_cpu_usage_seconds_total[5m]))

Managed Service for Prometheus (GMP)

項目OSS PrometheusGMP
スケール単一サーバ自動スケール(無制限)
保持期間自前管理最大 24 ヶ月
HA自前構築マネージド
PromQL100%100% 互換
🔑 2 つのデプロイモードManaged Collection(新規 GKE 推奨)Self-deployed Collection(既存 Prometheus からの移行)

Synthetic Monitor vs Uptime Checks

項目Uptime CheckSynthetic Monitor
実装URL を指定するだけCloud Functions(Node.js)でコード
検査ping / HTTP ステータス / 文字列マッチ複数ステップ、ログイン、フォーム送信等
価格無料Functions 実行コスト
🔑 試験頻出「単一エンドポイントでなく 複数ステップ の検査がしたい」→ Synthetic Monitor

🔧 Burn rate アラート設計(SRE Workbook 第 5 章)

単純な「エラー率 > X%」アラートは 誤報・遅報のトレードオフ が悪い。Burn rate(エラーバジェット消費速度)でアラートすると、短期の急悪化長期のゆるい悪化 の両方を捉えられる。

Multi-window / Multi-burn-rate(SRE Workbook 推奨) Fast (Page) 14.4x 短窓 5m + 1h Critical / Page 1h で 2% 予算消費 → 1 時間以内対応 28 日予算を約 2 日で消費 Slow (Page) 6x 短窓 30m + 6h Critical / Page 6h で 5% 予算消費 → オンコール対応 約 4.7 日で消費 Medium (Ticket) 3x 短窓 2h + 24h Warning / Ticket 1 日で 10% 予算消費 → 営業時間内対応 Slack / Jira Slow (Ticket) 1x 短窓 6h + 3d Warning / Ticket 3 日で 10% 予算消費 → バックグラウンド調査 28 日予算ぴったり消費

🔧 Burn rate しきい値 早見表

Burn rateSLO 期間(28 日)の予算を使い切る時間
1x28 日(ちょうど消費し切る)
6x約 4.7 日
14.4x約 2 日
36x約 19 時間

🔧 Cloud Monitoring での実装例(SLO + Burn rate)

# SLO 定義(Availability 99.9% / 28 日) displayName: "API Availability 99.9%" serviceLevelIndicator: requestBased: goodTotalRatio: goodServiceFilter: 'metric.type="..." AND metric.labels.status="2xx"' totalServiceFilter: 'metric.type="..."' goal: 0.999 rollingPeriod: 2419200s # 28 日 --- # Burn rate Alerting Policy conditions: - displayName: "Fast burn" conditionThreshold: filter: 'select_slo_burn_rate("projects/.../slo/...", "3600s")' comparison: COMPARISON_GT thresholdValue: 14.4 duration: 60s - displayName: "Slow burn" conditionThreshold: filter: 'select_slo_burn_rate("projects/.../slo/...", "21600s")' comparison: COMPARISON_GT thresholdValue: 6 combiner: OR

🔧 SLO 数値の暗記

SLO月あたりエラーバジェット
99%7 時間 18 分
99.5%3 時間 39 分
99.9%43 分 12 秒
99.95%21 分 36 秒
99.99%4 分 19 秒
99.999%25.9 秒

🔧 Notification Channel タイプ

Channel用途
PagerDutyCritical、オンコールローテーション、エスカレーション
Rootlyインシデント管理 SaaS(PagerDuty 競合、Webhook ベース)
Slack / TeamsWarning、チーム共有
Email / SMS個人通知、緊急時
Webhookカスタム連携(HTTP POST、ChatOps)
Pub/Subプログラム処理(Functions / Run)
Mobile AppCloud Console モバイルプッシュ

🔧 GMP 設定例(PodMonitoring CR)

apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: app-metrics spec: selector: matchLabels: app: my-api endpoints: - port: metrics interval: 30s

🔧 コスト制御アラート

# 直近 1h でログ取り込みが 100 GiB を超えたらアラート sum by (resource_container) ( rate(logging_googleapis_com:billing_bytes_ingested[1h]) ) * 3600 > 100 * 1024 * 1024 * 1024

🔧 Dashboards as Code(Terraform)

resource "google_monitoring_dashboard" "api_dashboard" { dashboard_json = jsonencode({ displayName = "API Service Dashboard" gridLayout = { columns = "2" widgets = [{ title = "Request Rate" xyChart = { dataSets = [{ timeSeriesQuery = { prometheusQuery = "sum(rate(http_requests_total[1m]))" } }] } }] } }) }

🔧 Synthetic Monitor の例(Node.js)

functions.cloudEvent('syntheticTest', async () => { // 1. ログインページ取得 const loginPage = await fetch('https://example.com/login'); if (!loginPage.ok) throw new Error('Login page failed'); // 2. API トークン取得 const tokenRes = await fetch('https://example.com/api/token', { method: 'POST', body: JSON.stringify({ user: 'test', pass: 'xxx' }), }); // 3. 認証付き API 呼び出し const token = (await tokenRes.json()).token; const dataRes = await fetch('https://example.com/api/data', { headers: { Authorization: `Bearer ${token}` }, }); if (dataRes.status !== 200) throw new Error('Data API failed'); });

🎯 メトリクス・アラート 即答

要件答え
OSS Prometheus 互換でマネージドManaged Service for Prometheus (GMP)
新規 GKE で PrometheusGMP Managed Collection
既存 Prometheus 移行GMP Self-deployed Collection
分位点(p50/p99)histogram_quantile
distribution 可視化Heatmap
症状ベースのアラートMulti-burn-rate(SLO ベース)
Fast burn しきい値14.4x(1h ウィンドウ)
Slow burn しきい値(page)6x(6h ウィンドウ)
複数ステップの能動監視Synthetic Monitor(Cloud Functions)
単純な HTTP 死活Uptime Checks

🎯 PromQL 必修パターン

質問PromQL
RPSsum(rate(http_requests_total[1m]))
サービス別 5xx 率sum by (svc) (rate(req{status=~"5.."}[5m])) / sum by (svc) (rate(req[5m]))
p99 latencyhistogram_quantile(0.99, sum by (le) (rate(latency_bucket[5m])))
Istio p99histogram_quantile(0.99, sum by (le, destination_workload) (rate(istio_request_duration_milliseconds_bucket[5m])))

4.4 分散トレース(OpenTelemetry / Cloud Trace / log correlation)

Trace と Span

Trace ID: abc123 (リクエスト全体) │ ├─ Span: frontend.handleRequest [────────────────] 200ms │ │ │ ├─ Span: auth.verifyToken [──────] 50ms │ │ │ └─ Span: api.getData [──────────] 120ms │ │ │ ├─ Span: db.query.users [──] 30ms │ └─ Span: cache.get [─] 10ms
用語意味
Trace1 リクエストの全体(Trace ID で識別)
SpanTrace 内の 1 単位処理(開始時刻 + 期間 + 属性)
Parent Span ID親 Span への参照(木構造を作る)
WaterfallSpan を時系列で可視化したビュー

Cloud Trace の特徴

項目内容
プロトコルOpenTelemetry(OTLP)標準サポート
サンプリングデフォルト約 0.1 リクエスト/秒
保持期間30 日
無料枠250 万 span / 月
単価$0.20 / 100 万 span(無料枠超過)

自動計装 vs 手動計装

種別内容
自動計装エージェントが主要ライブラリ(HTTP/DB/RPC)を自動でフック
手動計装コードで tracer.start_span() を呼ぶ
# Python の手動計装 from opentelemetry import trace from opentelemetry.sdk.trace import TracerProvider from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter from opentelemetry.sdk.trace.export import BatchSpanProcessor trace.set_tracer_provider(TracerProvider()) trace.get_tracer_provider().add_span_processor( BatchSpanProcessor(OTLPSpanExporter(endpoint="otel-collector:4317")) ) tracer = trace.get_tracer(__name__) def process_order(order_id): with tracer.start_as_current_span("process_order") as span: span.set_attribute("order.id", order_id) with tracer.start_as_current_span("validate"): validate(order_id) with tracer.start_as_current_span("charge"): charge(order_id)

Trace ID と構造化ログの紐付け(重要)

「このリクエストのトレース waterfall」と「同じリクエストのログ」を 1 画面で見られると、調査速度が桁違いに上がる。

フィールド意味
logging.googleapis.com/traceprojects/PROJECT_ID/traces/TRACE_ID の形式
logging.googleapis.com/spanId16 桁 hex の Span ID
logging.googleapis.com/trace_sampledtrue なら sampling 対象
🔑 試験頻出Cloud Run / Cloud Functions は X-Cloud-Trace-Context ヘッダから自動紐付け。GKE / GCE は明示的に上記フィールドを出力する。

Cloud Profiler 5 種別(+α)

プロファイル内容対応言語
CPU timeCPU を使った時間Go / Java / Python / Node.js
Heap現在アロケート済みメモリ(メモリリーク調査Go / Java / Node.js(Python なし)
Allocated heapアロケート総量(GC 含む)Go / Java
Contentionロック競合(Mutex 待ちGo / Java
Threadsスレッド数Java
Wall time経過時間(IO 待ち含むGo / Java / Python
🔑 オーバーヘッド本番で常時動かせる(CPU オーバーヘッド < 1%)。「本番で継続的に CPU/メモリのホットスポットを見たい」→ Cloud Profiler

Error Reporting

例外・エラーを 自動グルーピング して集約。スタックトレースの シグネチャ(クラス名 + メソッド名 + 行番号)でグルーピング。1 つの「Error Group」 = 同じ根本原因のエラー集合。

💡 使い分け「アプリ例外を集約して影響範囲を見たい」→ Error Reporting。「個別ログを検索したい」は Logging。

🔧 サンプリング戦略(Head-based vs Tail-based)

種別タイミング利点欠点
Head-based(Probabilistic、SDK 側)span 開始時軽量、決定論的エラー / 遅い trace を捨てる可能性
Tail-based(Collector 側で trace 全体を見てから)trace 終了後エラー / 遅い trace を必ず残すバッファリング必要、Collector メモリ

🔧 Tail Sampling 設定例

processors: tail_sampling: decision_wait: 30s num_traces: 100000 policies: - name: errors type: status_code status_code: {status_codes: [ERROR]} - name: latency type: latency latency: {threshold_ms: 500} - name: sample-10pct type: probabilistic probabilistic: {sampling_percentage: 10} # → エラー span は 100% 保持、500ms 超は 100% 保持、それ以外は 10%

🔧 Context Propagation(W3C / B3)

フォーマットヘッダ採用元
W3C Trace Contexttraceparent, tracestateOpenTelemetry 標準(推奨)
B3(Zipkin 由来)X-B3-TraceIdZipkin / Istio
Google Cloud formatX-Cloud-Trace-ContextGCP 内部
traceparent: 00-0af7651916cd43dd8448eb211c80319c-b7ad6b7169203331-01 │ │ │ │ version trace_id(32hex) parent_id(16hex) flags

🔧 W3C + B3 を両方受け付ける設定

from opentelemetry.propagate import set_global_textmap from opentelemetry.propagators.b3 import B3MultiFormat from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator from opentelemetry.propagators.composite import CompositePropagator # W3C と B3 両方受け付ける set_global_textmap(CompositePropagator([ TraceContextTextMapPropagator(), B3MultiFormat() ]))

🔧 Trace ID をログに含める実装パターン(GKE / GCE)

import json, logging from opentelemetry import trace PROJECT_ID = "my-proj" def log_with_trace(severity, message, **kwargs): span = trace.get_current_span() ctx = span.get_span_context() entry = {"severity": severity, "message": message, **kwargs} if ctx.is_valid: entry["logging.googleapis.com/trace"] = ( f"projects/{PROJECT_ID}/traces/{format(ctx.trace_id, '032x')}" ) entry["logging.googleapis.com/spanId"] = format(ctx.span_id, "016x") entry["logging.googleapis.com/trace_sampled"] = ctx.trace_flags.sampled print(json.dumps(entry)) # Cloud Logging が stdout を構造化ログとして取り込む

🔧 Cloud Trace のサンプリング制限

  • デフォルトでは Cloud Trace 側でも 追加サンプリング(高頻度トラフィック保護)
  • アプリ側 100% でも、Trace 表示では 約 0.1 req/sec 程度に抑制
  • 100% 保持したい場合は Trace API で force=true か、OTel Collector 経由で抑制回避

🔧 Cloud Profiler 統合(Python)

import googlecloudprofiler googlecloudprofiler.start( service='my-service', service_version='1.0.0', verbose=3, ) # → Flame graph で関数ホットスポットを可視化

🔧 Profiler 種別の使い分け判断

症状プロファイル種別
CPU 100%CPU time
メモリ増加止まらないHeap
Mutex 待ちで応答遅いContention
同期 IO が多そうWall time
Goroutine リークThread / Goroutine

🎯 分散トレース 即答

要件答え
マイクロサービス間ボトルネックCloud Trace
OTel 標準の伝播W3C Trace Contexttraceparent
エラー trace を 100% 保持Tail-based sampling
Trace を log に紐付けるフィールドlogging.googleapis.com/trace
Cloud Run でログと trace 自動紐付けX-Cloud-Trace-Context ヘッダ自動処理
本番で常時プロファイルCloud Profiler
メモリリーク調査Heap profile
Mutex 待ち調査Contention profile
IO 待ち含む経過時間Wall time profile
アプリ例外集約Error Reporting

🎯 暗記必須の数値

項目
Cloud Trace 保持期間30 日
Cloud Trace デフォルトサンプリング約 0.1 req/sec
Cloud Trace 無料枠250 万 span/月
Profiler オーバーヘッド< 1% CPU

4.5 トラブルシュート(5 領域 × 適切なツール)

5 領域のトラブルシュート(初動の型)

PCDE では 5 種類のトラブル で適切なツールを即答できることが求められる。

判断ツリー(症状 → 初動ツール)

症状を 5 領域に分類 Infrastructure CI/CD Application Observability Performance VM 接続不可 → Connectivity Tests 不要 FW ルール → Firewall Insights パケットロス → Performance Dashboard トラフィック内訳 → VPC Flow Logs ビルド失敗 → Cloud Build logs デプロイ失敗 → gcloud deploy rollouts describe ローカル再現 → skaffold dev 5xx 増加 → Logs Explorer 例外集計 → Error Reporting 遅いリクエスト → Cloud Trace 遅い関数 → Cloud Profiler メトリクス欠落 → Ops Agent 確認 ログコスト超過 → Exclusion 追加 アラート鳴らない → Condition / Channel / Snooze 確認 p99 悪化 → Trace → Profiler メモリ増 → Heap profile NW 遅延 → Performance Dashboard / Service Mesh metrics 体系的アプローチ(Performance / Latency) 1. Cloud Trace で「どのリクエストが遅いか」特定 2. 遅い span のサービスで Cloud Profiler を確認 3. CPU profile → 関数 / Heap → メモリ / Contention → ロック 4. Service Mesh metrics で「どのサービス間の通信が遅いか」確認 5. VPC Flow Logs / Performance Dashboard で NW 問題確認

Infrastructure(インフラ障害)

症状初動ツール
VM が NW 接続できないConnectivity Tests(Network Intelligence Center)
サブネット内の通信状況VPC Flow Logs
ファイアウォールルールの使われ方Firewall Insights
ロードバランサのレイテンシPerformance Dashboard
VM の CPU/メモリCloud Monitoring + Ops Agent

CI/CD(パイプライン障害)

症状初動ツール
ビルド失敗Cloud Build logs(コンソール / gcloud builds log
デプロイのロールアウト失敗gcloud deploy rollouts describe
GKE デプロイの差分確認Skaffold debug / kubectl describe
パイプラインの全体メトリクスCloud Monitoring の Cloud Build / Deploy metrics

Application(アプリ障害)

症状初動ツール
5xx が増えたLogs ExplorerhttpRequest.status>=500
例外の集計Error Reporting
「どのリクエストが」遅いCloud Trace(waterfall)
「どの関数が」遅い / メモリ食いCloud Profiler

Observability(観測自体の障害)

症状初動
メトリクスが急に欠落Ops Agent が落ちていないか確認、Agent log(/var/log/google-cloud-ops-agent/
ログ取り込みコスト急増Log Router → 上位ログタイプを特定 → Exclusion
アラートが鳴らないAlerting Policy の condition、Notification Channel の有効性、Snooze 中でないか確認

Performance / Latency(性能)

症状初動
p99 レイテンシ悪化Cloud Trace で遅い span → Cloud Profiler で関数特定
メモリ使用増Heap profile
ネットワーク遅延Performance DashboardService Mesh metrics
DB クエリ遅延Trace の DB span + DB 側プロファイラ

🔧 Infrastructure トラブルシュート — Connectivity Tests

gcloud network-management connectivity-tests create test-1 \ --source-instance=projects/my-proj/zones/us-central1-a/instances/vm-a \ --destination-instance=projects/my-proj/zones/us-central1-b/instances/vm-b \ --destination-port=80 --protocol=TCP # 結果には「VPC ルート / Firewall / NAT」のどこで弾かれたかが表示

🔧 Network Intelligence Center(NIC)

サブ機能用途
Connectivity Tests2 点間到達性
Network TopologyVPC 全体の可視化
Performance Dashboardパケットロス・レイテンシ可視化
Firewall Insightsルール使用状況分析
Network Analyzer構成警告(推奨設定との差分)

🔧 VPC Flow Logs 分析(Log Analytics)

-- 上位通信先 IP SELECT jsonPayload.connection.src_ip AS src, jsonPayload.connection.dest_ip AS dst, SUM(CAST(jsonPayload.bytes_sent AS INT64)) AS bytes FROM `my-proj.global._Default._AllLogs` WHERE logName LIKE '%compute.googleapis.com%vpc_flows' AND TIMESTAMP_TRUNC(timestamp, HOUR) = TIMESTAMP_TRUNC(CURRENT_TIMESTAMP(), HOUR) GROUP BY src, dst ORDER BY bytes DESC LIMIT 10;

🔧 CI/CD トラブルシュート — Cloud Build

# 失敗した build を一覧 gcloud builds list --filter="status=FAILURE" --limit=10 # 詳細ログ gcloud builds log BUILD_ID # Logs Explorer resource.type="build" severity>=ERROR
典型障害確認ポイント
Permission deniedBuild SA の権限(@cloudbuild.gserviceaccount.com
Image push 失敗Artifact Registry の権限 + リポジトリ存在
Timeouttimeout を延長、または並列化
ネットワーク到達不可Private Pool + VPC Peering を確認

🔧 Cloud Deploy rollout failures

# Release / Rollout 履歴 gcloud deploy rollouts list \ --release=RELEASE \ --delivery-pipeline=PIPELINE \ --region=REGION # 失敗したターゲットの詳細 gcloud deploy rollouts describe ROLLOUT \ --release=RELEASE \ --delivery-pipeline=PIPELINE \ --region=REGION
典型障害確認
Approval 待ちで止まるgcloud deploy rollouts approve
Render 失敗skaffold render ローカル実行で再現
Deploy 失敗Target に紐付く GKE / Run の権限 + Manifest 妥当性
Verify 失敗verify ステップのジョブログ

🔧 Skaffold debug

# ローカルで CI/CD と同じビルド・デプロイを実行 skaffold dev --port-forward # ビルドのみ skaffold build --output=output.json # Render(マニフェスト生成) skaffold render --output=manifests.yaml

🔧 Application — Error Reporting + Trace + Profiler の組合せ

  1. Error Reporting で新規 / 急増エラーを発見
  2. エラーグループに紐づく 代表 Trace を開く
  3. Cloud Trace waterfall で遅延・失敗箇所を特定
  4. 失敗 span に 関連ログ が紐付いている → 詳細メッセージを確認
  5. 必要に応じ Cloud Profiler でコード行ホットスポット

🔧 Observability — ログ取り込みコスト超過

ステップ対処
1ログソース別ボリュームを確認logging.googleapis.com/billing/bytes_ingestedresource_type で集約)
2上位ソースに Exclusion を追加
3INFO / DEBUG はサンプリング
4Bucket 保持期間短縮

🔧 Observability — メトリクス欠落

確認対処
Ops Agent ステータスsudo systemctl status google-cloud-ops-agent
エージェントログ/var/log/google-cloud-ops-agent/subagents/logging-module.log
メトリクス取り込み割り当てQuota & System Limits
API 有効化monitoring.googleapis.com
SA 権限roles/monitoring.metricWriter

🔧 Performance — Service Mesh metrics で切り分け

# サービス別 p99 レイテンシ histogram_quantile(0.99, sum by (le, destination_workload) ( rate(istio_request_duration_milliseconds_bucket[5m]) ) ) # サービス間のエラー率 sum by (source_workload, destination_workload) ( rate(istio_requests_total{response_code=~"5.."}[5m]) )

🎯 トラブルシュート初動表

領域症状初動ツール
InfrastructureVM が接続できないConnectivity Tests
Infrastructure不要 FW ルールFirewall Insights
InfrastructureパケットロスPerformance Dashboard
Infrastructureトラフィック内訳VPC Flow Logs
CI/CDビルド失敗Cloud Build logs
CI/CDデプロイ失敗gcloud deploy rollouts describe
CI/CDローカル再現skaffold dev
Application5xx 増加Logs Explorer
Application例外集計Error Reporting
Applicationリクエスト遅延Cloud Trace(waterfall)
Applicationコード行ホットスポットCloud Profiler
Observabilityメトリクス欠落Ops Agent 状態 + agent ログ
Observabilityログコスト超過ソース別ボリューム → Exclusion
Observabilityアラート鳴らないCondition / Channel / Snooze 確認
Performancep99 悪化Cloud Trace → Profiler
Performanceメモリ増Heap profile
PerformanceNW 遅延Performance Dashboard / Service Mesh metrics

🤖 Gemini Cloud Assist(2024-2025 新機能)

🔑 新機能の重要性Gemini Cloud Assist は Google Cloud Console に統合された AI 支援機能。Section 4 では特に ログ / メトリクス / トレース解析支援 で頻出。旧 Duet AI in Google Cloud がリネーム。

主要機能 5 つ

Log Summary / Insights

Logs Explorer 上で「過去 1h の異常を要約して」と自然言語で質問。Summarize logs ボタンで過去 N 時間のログトレンドを要約。

Investigations

アラートに対して 根本原因候補 を AI が提示。過去ログ・メトリクス・最近の Cloud Build / Deploy を相関分析し「最近のデプロイが原因かも」と仮説を出す。MTTR 短縮の中心機能

Explain this chart

Metrics Explorer / Dashboard のグラフを「なぜこの値か」AI が自然言語で説明。異常値の可能性・関連メトリクスを提案。

Summarize trace

Cloud Trace の複雑な waterfall を自然言語で要約。「X で 200ms、Y で 50ms、最大ボトルネックは Y の DB クエリ」。

Query 自動生成

「先週 5xx が多かったサービスは?」→ LQL / PromQL を生成。自然言語クエリ → 適切な構文に変換。

IAM ロール

roles/cloudaicompanion.user(利用)/ roles/cloudaicompanion.admin(管理)。入力データはモデル学習に使われない

💡 試験頻出複雑なメトリクスのスパイクの原因を素早く特定したい」→ Gemini Cloud Assist の Investigations。「ログを自然言語で検索したい」→ Query 自動生成 → LQL に変換

🎯 要点と暗記 — 一問一答

Q1. VM のログ + メトリクス収集に使うエージェントは?

A. Ops Agent。fluentbit + otel ベース。Legacy Logging / Monitoring Agent は非推奨で置換対象。GKE / Cloud Run / Functions は自動収集でエージェント不要。

Q2. Audit Logs 4 種類の中でデフォルト無効なのは?

A. Data Access。Admin Activity / System Event / Policy Denied は常時有効・無効化不可。コンプラ要件で「誰がデータを見たか」を記録するには IAM Policy で Data Access ログを明示有効化(DATA_READ / DATA_WRITE / ADMIN_READ)。

Q3. 組織全体の Audit Log を 1 つの BigQuery に集めたい

A. Org-level Aggregated Sink with --include-children。通常の Sink はプロジェクト単位、Aggregated Sink は Org / Folder 単位で配下プロジェクトすべてを横断的に転送。

Q4. ログコストが急増、最も効果的な対策は?

A. Exclusion filter。Log Router で取り込み課金そのものを 0 にする。Sink 追加は重複課金になるので NG。優先順位は Exclusion → Sampling → Retention 短縮

Q5. ログを SQL で分析、データ重複なしで最安は?

A. Log Analytics。既存 Log Bucket をアップグレードすると BigQuery で直接 SQL 可能。追加課金なし・データ重複なし。古い「BigQuery sink」より優先。

Q6. ログに含まれる PII を本番ログから取り除きたい

A. アプリ層で Sensitive Data Protection(旧 Cloud DLP)API を呼ぶ。出力前にマスキング・トークン化。代替として Sink + Pub/Sub + Dataflow(DLP テンプレ)パターンも。

Q7. PromQL で p99 レイテンシを取る関数は?

A. histogram_quantile(0.99, sum by (le) (rate(latency_bucket[5m])))。ヒストグラムは _bucket{le="..."} の累積分布で記録され、histogram_quantile が補間で分位点を算出。

Q8. SRE Workbook の Multi-burn-rate Fast アラートのしきい値は?

A. 1h ウィンドウで Burn rate 14.4x(短窓 5m と組合せ)。Slow page は 6h で 6x(短窓 30m)。Burn rate 1x = SLO 期間(28 日)でちょうど予算を使い切る速度、14.4x なら約 2 日で消費。

Q9. 複数ステップの能動監視(ログイン→API→検証)が必要

A. Synthetic Monitor。Cloud Functions(Node.js)でスクリプト記述。Uptime Checks は単一エンドポイントの ping のみ。

Q10. 新規 GKE クラスタで Prometheus を使いたい

A. Managed Service for Prometheus(GMP)Managed Collection。PodMonitoring CR で対象を指定、collector は GCP が管理。既存 Prometheus からの移行は Self-deployed Collection。

Q11. OpenTelemetry 標準の context propagation フォーマットは?

A. W3C Trace Contexttraceparent / tracestate ヘッダ)。B3 は Zipkin / Istio、X-Cloud-Trace-Context は GCP 内部フォーマット。マイクロサービス間で全サービス同じ propagation format を採用すること。

Q12. エラー trace / 遅い trace を確実に保持しつつコスト削減

A. Tail-based sampling(OTel Collector の tail_sampling processor)。trace 全体を見てから判定するので、エラー span 100% / 500ms 超 100% / それ以外 10% のような戦略が可能。Head-based は SDK 側で軽量だが、エラー/遅い trace を捨てる可能性。

Q13. Trace と構造化ログを紐付けるログフィールドは?

A. logging.googleapis.com/trace(値は projects/PROJECT_ID/traces/TRACE_ID)+ logging.googleapis.com/spanId + logging.googleapis.com/trace_sampled。Cloud Run / Functions は X-Cloud-Trace-Context ヘッダから自動紐付け、GKE / GCE は明示出力。

Q14. Python アプリのメモリリーク調査に Cloud Profiler の Heap は使える?

A. 使えない。Python は CPU と Wall time のみサポート。Java は Heap allocation なし、Node.js は Wall / Contention なし。「Python のメモリリーク → Profiler Heap」は試験で誤りの選択肢になりがち。

Q15. 2 点間の VPC 到達性を診断したい

A. Connectivity Tests(Network Intelligence Center 配下)。構成解析で「VPC ルート / Firewall / NAT」のどこで弾かれたかを表示。実際のパケットは送らない。

Q16. GCP インフラ内のパケットロス・レイテンシを可視化したい

A. Performance Dashboard(NIC 配下)。リージョン間・ゾーン間の SLI として可視化。VM レベルではなく GCP インフラレベル。

Q17. アラートの根本原因を AI に推測させたい

A. Gemini Cloud Assist の Investigations。過去ログ・メトリクス・最近の Cloud Build / Deploy を相関分析して「最近のデプロイが原因かも」「特定の Pod だけで発生」など仮説を提示。MTTR 短縮の中心機能。

Q18. Cloud Deploy の rollout 失敗を最初に見るコマンド

A. gcloud deploy rollouts describe。Approval 待ち、Render 失敗、Verify 失敗などの状態を確認。ローカル再現は skaffold dev / render / build

Q19. Cloud Service Mesh で自動収集される 3 種類は?

A. Metrics(istio_requests_total 等) / Access Logs(Envoy) / Traces。コード変更なしに 4 Golden Signals が取れるのが Service Mesh の最大の売り。旧 Anthos Service Mesh(ASM)

Q20. distribution 型メトリクスの可視化に最適なチャートは?

A. Heatmap(ヒートマップ)。分位点取得は histogram_quantile。Scorecard は単一値、Line は時系列、Stacked bar はカテゴリ別積み上げ。

💡 必殺フレーズ集(試験当日用)

状況即答
「VM のログ + メトリクス収集」Ops Agent
「誰がリソースを変更したか」Admin Activity log(常時有効)
「誰がデータを見たか」Data Access log を明示有効化
「IAM/VPC SC で拒否」Policy Denied log
「組織全体の Audit ログ集約」Aggregated Sink with --include-children
「ログを SQL で分析、最安・重複なし」Log Analytics
「リアルタイムで SIEM 連携」Pub/Sub Sink
「7 年アーカイブ最安」Cloud Storage Sink(Archive class)+ Lifecycle
「ログコスト緊急削減」Exclusion filter(最優先)
「PII を取り除く最確実」アプリ層で Sensitive Data Protection(DLP)
「ログから数値抽出して分布化」Distribution 型 log-based metric
「ログ行数をメトリクス化」Counter 型 log-based metric
「distribution 可視化」Heatmap
「PromQL で分位点」histogram_quantile
「PromQL で秒速」rate
「OSS Prometheus 互換マネージド」GMP
「新規 GKE で Prometheus」GMP Managed Collection
「既存 Prometheus 移行」GMP Self-deployed Collection
「症状ベース / アクション可能アラート」Multi-burn-rate(SLO ベース)
「Fast burn しきい値」14.4x(1h)
「Slow burn page しきい値」6x(6h)
「複数ステップの能動監視」Synthetic Monitor
「単純な HTTP 死活」Uptime Checks
「マイクロサービス間ボトルネック」Cloud Trace
「OTel 標準の伝播」W3C Trace Context
「エラー trace を確実に保持」Tail-based sampling
「Trace と log の紐付け」logging.googleapis.com/trace
「Cloud Run で自動紐付け」X-Cloud-Trace-Context ヘッダ
「本番で常時プロファイル」Cloud Profiler
「メモリリーク調査」Heap profile
「Mutex 待ち調査」Contention profile
「IO 待ち含む経過時間」Wall time profile
「アプリ例外集約」Error Reporting
「2 点間 VPC 到達性」Connectivity Tests
「GCP インフラのパケットロス」Performance Dashboard
「不要 FW ルール検出」Firewall Insights
「コード変更なしに 4 Golden Signals」Cloud Service Mesh(旧 ASM)
「Cloud Build 失敗」gcloud builds log / Logs Explorer
「Cloud Deploy rollout 失敗」gcloud deploy rollouts describe
「ローカルで CI 再現」Skaffold(skaffold dev/render/build
「AI が異常を要約」Gemini Cloud Assist Log Summary
「AI が障害根本原因を推測」Gemini Cloud Assist Investigations
「自然言語で LQL/PromQL 生成」Gemini Cloud Assist Query 生成
「メトリクスチャートを自然言語で説明」Gemini Cloud Assist Explain this chart
🔑 5 分で復習する箇条書きまとめ
  • 3 軸 + α: Metrics + Logs + Traces + Profiler + Error Reporting + Synthetic + Gemini
  • Audit Logs 4 種: Data Access のみデフォルト無効、他 3 つは常時有効・無効化不可
  • Log Buckets: _Default 30 日変更可 / _Required 400 日固定
  • Sink 宛先: BQ(Log Analytics 推奨)/ Pub/Sub / GCS / 別 Bucket
  • Aggregated Sink: Org / Folder 単位、--include-children
  • ログコスト削減: Exclusion > Sampling > Retention 短縮
  • PII: アプリ層で Sensitive Data Protection(DLP)
  • OTel Collector: Receivers / Processors / Exporters の 3 段
  • OTel 標準伝播: W3C Trace Context(traceparent
  • Tail-based sampling: エラー / 遅い trace を 100% 保持
  • Trace 紐付け: logging.googleapis.com/trace、Cloud Run/Functions は自動
  • Profiler 5 種別: CPU / Heap / Contention / Wall / Thread(Python は CPU/Wall のみ)
  • PromQL: rate / increase / histogram_quantile / sum by(MQL は非推奨)
  • Multi-burn-rate: Fast 14.4x@1h / Slow 6x@6h / Medium 3x@24h / Slow 1x@3d
  • GMP: PromQL 100% 互換、24 ヶ月保持、Managed / Self-deployed Collection
  • Synthetic Monitor: 複数ステップ、Cloud Functions ベース
  • Cloud Service Mesh(旧 ASM): コード変更なしに Metrics + Access Logs + Traces
  • 5 領域トラブルシュート: Infra / CI/CD / App / Observability / Performance
  • Gemini Cloud Assist: Log Summary / Investigations / Explain chart / Trace 要約 / Query 生成
← セクション 3:SRE プラクティス セクション 5:パフォーマンス & コスト → 📝 問題演習を解く 📖 用語集