ログ・テレメトリは機械集計できる構造化シグナルとして設計する — 動的値を正規化し、集計軸で実値へ絞れる形で出す
設計判断
運用
可観測性
ログ設計
原則
障害対応の速さは、出力されるログ・テレメトリが『人が一件ずつ読む文章』か『機械が集計・パターン検知できる構造化シグナル』かで決まる。最適化するのは『動的値を正規化してグルーピングを安定させ、表示メッセージと集計軸を明示し、額面の代表値でなく分解した実値で原因へ絞れる計装』、避けるのは『一意 ID 入りの生メッセージをそのまま出して同種エラーが別物に散る』『表示メッセージが暗黙で何が出るか不定』『通知の代表値を原因と決めつける』計装。
判断基準
- エラーメッセージに含まれる一意値(ID・UUID・メール・日付など)は、アラートのグルーピングに使う系統ではプレースホルダへ正規化する。デバッグ用に元メッセージは別フィールドへ併記し、正規化値で件数・傾向を検知できるようにする。
- 構造化ログ基盤では『どのフィールドが表示メッセージになるか』を額面で仮定せず明示設定する。暗黙に他フィールドから代表が選ばれる挙動に委ねない。
- 原因調査は単純な全文フィルタに頼らず、意味のある軸(経路・ルール・ステータス・対象種別)で集計して絞り込める前提で出力を設計する。
- 集計や通知に出る代表値を原因と即断しない。複数コンポーネントが絡む通知(サイドカー混在のコンテナ停止など)では、通知の代表値でなく対象別の実値まで分解して確認する。
なぜ
テレメトリは出した形でしか後から問えない。一意値の混入はグルーピングを壊して同種障害を見えなくし、暗黙のメッセージ選択や代表値依存は誤った原因へ誘導する。集計可能な構造を最初から設計しておけば、障害時に推測でなく観測で原因へ辿れる。
適用条件
スケールやチームが小さいうちは軽い計装で足り、過剰な正規化ルールは保守コストになる。アラートのノイズや調査の遅さが実際に問題化してから厚くする(可逆・最小から始める原則と併用)。
検証
同種だが一意値の異なるエラーを複数発生させ、正規化後に 1 グループへ集約されること、表示メッセージが意図どおり出ること、想定した集計軸で原因へ絞れること、複数コンポーネント絡みの通知で対象別の実値まで辿れることを確認する。
根拠(synthesize 元)
- 168 ログアラートでエラーメッセージの動的な値を正規化してパターン検知する
- 170 構造化ログの表示メッセージ用フィールドは明示設定する(暗黙選択に任せない)
- 296 BLOCK / 障害調査はログ集計基盤で対象を意味ある軸に分解して絞り込む
- 473 多コンポーネント構成の停止通知は代表 exit code でなく対象別の実値を確認する