監視・アラート連携
TraceId の流れと各システムへの連携
→ 関連: QA-003 可観測性
TraceId がどのように各監視システムに流れるかを示す:
アラート重要度と 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 可観測性
データソースから収集・蓄積・アラート出力までの全体的なデータフローを示す: