DATADOG コース · CHAPTER 14

Goアプリへ観測性を組み込む — この章で何を学ぶか

この章は「JSON構造化ログで検索できる記録を残す」「contextとミドルウェアでtrace IDを伝搬する」「エラー処理・除外設計でノイズを減らす」を、設定だけで終わらせず確認可能な理解へつなぐ。

TL;DR

  1. JSON構造化ログで検索できる記録を残す。
  2. contextとミドルウェアでtrace IDを伝搬する。
  3. エラー処理・除外設計でノイズを減らす。

01JSON構造化ログで検索できる記録を残す

まず、章の操作が解決しようとしている問いを決める。

JSON構造化ログで検索できる記録を残すを示す図
中央から外側へ伸びる矢印を追うと、観測したい対象と収集元の対応が分かる。

JSONログへ時刻・level・message・エラー情報を構造化し、検索条件と集計に使える記録へ変える。

学ぶポイント: JSONログへ時刻・level・message・エラー情報を構造化し、検索条件と集計に使える記録へ変える。

02contextとミドルウェアでtrace IDを伝搬する

次に、構成要素を置く順序と責務の境界を確認する。

contextとミドルウェアでtrace IDを伝搬するを示す図
上段から下段へ読み、設定値ではなく各コンポーネントの責務がどこで切り替わるかを見る。

GoのcontextをHTTPミドルウェアで受け渡し、trace IDとloggerを後続処理・DBクエリまでつなぐ。

学ぶポイント: GoのcontextをHTTPミドルウェアで受け渡し、trace IDとloggerを後続処理・DBクエリまでつなぐ。

03エラー処理・除外設計でノイズを減らす

最後に、完成条件を観測データや応答から判定できるようにする。

エラー処理・除外設計でノイズを減らすを示す図
左から右へ進む矢印は、確認操作が実際の結果へ到達するまでの切り分け順を表す。

不要なログやトレースを除外しつつ、障害時に必要なエラー文脈は失わない設計を学ぶ。

学ぶポイント: 不要なログやトレースを除外しつつ、障害時に必要なエラー文脈は失わない設計を学ぶ。

結論

  1. Goアプリへ観測性を組み込むの目的を一文で説明できる。
  2. 収集・設定・確認の境界を切り分けられる。
  3. 次の章で使う観測データと運用判断につなげられる。