Skip to content

監視・アラート連携

TraceId の流れと各システムへの連携

→ 関連: QA-003 可観測性

TraceId がどのように各監視システムに流れるかを示す:

FrontendBFF ServerApplication API監視システムtraceparent ヘッダーtraceparent 転送X-Trace-IdブラウザSentry SDKTraceId MiddlewareX-Trace-Id ヘッダー付与OpenTelemetryActivity.Current.TraceIdSerilog 構造化ログTraceId / SpanId 付与Cloud Traceスパン分析Cloud Logging構造化ログ検索Sentryエラー追跡PagerDutySev1/Sev2 アラートSlackSev2/Sev3 通知
FrontendBFF ServerApplication API監視システムtraceparent ヘッダーtraceparent 転送X-Trace-IdブラウザSentry SDKTraceId MiddlewareX-Trace-Id ヘッダー付与OpenTelemetryActivity.Current.TraceIdSerilog 構造化ログTraceId / SpanId 付与Cloud Traceスパン分析Cloud Logging構造化ログ検索Sentryエラー追跡PagerDutySev1/Sev2 アラートSlackSev2/Sev3 通知

アラート重要度と TraceId の活用

→ 関連: QA-003 アラート体系

重要度条件例TraceId の活用
Sev1(緊急)サービス全停止、データ不整合検出PagerDuty アラートに TraceId を含め、Cloud Trace で即座にスパン分析を開始
Sev2(重大)API エラー率 > 5%、レスポンスタイム SLA 違反Slack アラートに TraceId サンプルを含め、関連ログの一括検索リンクを提供
Sev3(警告)CPU > 80% 持続、キュー滞留 > 100件Cloud Monitoring ダッシュボードに TraceId ベースのドリルダウンリンクを設置
Sev4(情報)デプロイ完了、証明書期限 30日前記録のみ

ログフォーマット

Serilog の構造化ログに以下のフィールドを必須付与する:

json
{
  "Timestamp": "2026-01-15T09:30:45.123Z",
  "Level": "Error",
  "MessageTemplate": "Declaration save failed for employee {EmployeeId}",
  "Properties": {
    "TraceId": "4bf92f3577b34da6a3ce929d0e0e4736",
    "SpanId": "a3ce929d0e0e4736",
    "TenantId": "tenant-abc-123",
    "UserId": "user-def-456",
    "EmployeeId": "emp-ghi-789",
    "RequestPath": "/api/v1/2025/declarations/123",
    "RequestMethod": "PATCH",
    "StatusCode": 500,
    "ErrorCode": "TSHK-SYS-002",
    "MachineName": "cloud-run-instance-01",
    "Environment": "production"
  },
  "Exception": "Npgsql.NpgsqlException: ..."
}

禁止事項:

  • ログにマイナンバーの平文を含めない(下4桁 mynumber_last4 のみ許容)
  • ログにパスワード、アクセストークン、リフレッシュトークンを含めない
  • 例外メッセージにユーザー入力値をそのまま含めない(入力値のサニタイズ後に記録)

可観測性データフロー

→ 満たす要件: QA-003 可観測性

データソースから収集・蓄積・アラート出力までの全体的なデータフローを示す:

データソース収集蓄積アラート出力Application ログ(Serilog)メトリクス(OpenTelemetry)トレース(OpenTelemetry)フロントエンドエラー(Sentry SDK)OpenTelemetry CollectorSentry IngestCloud LoggingCloud TraceCloud MonitoringSentryPagerDuty(Sev1/Sev2)Slack(Sev2/Sev3)Dashboard(Sev3/Sev4)
データソース収集蓄積アラート出力Application ログ(Serilog)メトリクス(OpenTelemetry)トレース(OpenTelemetry)フロントエンドエラー(Sentry SDK)OpenTelemetry CollectorSentry IngestCloud LoggingCloud TraceCloud MonitoringSentryPagerDuty(Sev1/Sev2)Slack(Sev2/Sev3)Dashboard(Sev3/Sev4)