Upgrade to Pro — share decks privately, control downloads, hide ads and more …

モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション

Shota Iwami
February 11, 2025

モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション

システムの可視化と最適化をDatadogと学ぶ
登壇資料
https://rosca.connpass.com/event/344126/

Shota Iwami

February 11, 2025
Tweet

More Decks by Shota Iwami

Other Decks in Technology

Transcript

  1. 自己紹介 岩見彰太 Software Engineer @newmo株式会社 Platform Team CyberAgent → newmo

    好きな Datadog の機能:Error Tracking GitHub: BIwashi X: @B_Sardine © 2025 newmo | #roscafe 2
  2. Error Monitor の現状 Log Monitor アプリケーションログに対して、クエリした結果を通知 ログレベルをエラーにすべきではないところが残存 Monitor のクエリで -

    を使用して随時に除外 クエリにログファセットが多く使用 使用自体は問題ないが、予約済み属性(e.g. service / env / version )を使用するところも facet になっ ており保守が大変 @gcp.project_id:hoge-dev -@log.attributes.error.message:"hoge が発生しました" -@code:foo ・・・ 背景 © 2025 newmo | #roscafe 5
  3. エラーの適切なトリアージ Error Tracking Case Management エラーを適切に選別する エラーを種類ごとに分類 重要度やステータスを個別管理 通知対象から適切に除外 エラー単位で除外

    エラーのオーナーを明確化 Reference Tables Log Pipeline 適切にマイクロサービスを特定 attribute を適切に指定 オーナーに適切に通知 Error Message やグループメンションを活用 課題 © 2025 newmo | #roscafe 10
  4. Error Tracking エラーログに含まれている 特定の attibutes を元に Datadog がエラーを選別 error.message error.stack

    error.kind Error Tracking 引用: Datadog Error Tracking Backend © 2025 newmo | #roscafe 12
  5. New Issue の対象 New Issue の対象は新規発生した or リグレッションした Issue のみ

    リグレッション:一度 Resolved になった Issue が再発した時 Automatic resolution Datadog は以下の条件で自動的に Issue の Status を For Review -> Resolved に変更する 最後に issue の error が発生したのが14日以上前のバージョンで新しいバージョンで同様のエラー が初めて発生 もし version tag が存在してないなかった場合、14日以内にその issue にエラーが発生していな い場合 Error Tracking © 2025 newmo | #roscafe 18
  6. Regression Detection 一度 Resolved になった Issue が再発した時に自動で For Review に変更

    Regression というタグがつけられる Error Tracking 引用: Error Tracking | Datadog © 2025 newmo | #roscafe 19
  7. Case Management チケットを作成して、Issue を管理 Error Tracking と連携して、Error Issue に紐づいた Case

    を作成可能 エラー発生理由や紐づくチケットなど を記載可能 Case Management © 2025 newmo | #roscafe 21
  8. 余談:Workflow Automation で Linear と Casa Management 連携(構想) Casa Management

    ではデフォルトで Jira, ServiceNow と連携が可能 Linear を使用しているが、Datadog では公式で対応していない しかし Workflow Automation には Case Management のトリガーが存在 Linear 連携を自作可能(なはず) Case Management © 2025 newmo | #roscafe 22
  9. 2. Issue を確認 message や stack trace な どから原因を特定 状況によって

    Status を 変更 トリアージ © 2025 newmo | #roscafe 26
  10. 原因が特定でき、修正が必要そうな場合 REVIEWED に変更(14日間は通知が来ません) Actions → Create a case で case

    を作成して、修正用の Liner のチケットを張るなどして紐づけておく 原因が特定できず、かつ発生頻度が非常に少ない場合 RESOLVED に変更(再度発生したら即座に regression として通知される) Actions → Create a case で case を作成して、発生条件やなぜ一旦放置としたかなどの理由をメモとして 記載しておく 原因も特定できているが、基本的に直す予定がない場合 IGNORED に変更(今後 error tracking 関係の Monitor の対象外になる) Actions → Create a case で case を作成して、放置理由を記載する トリアージ © 2025 newmo | #roscafe 27
  11. 問題 Datadog の Monitor での Slack ユーザーグループへの通知はグループ ID を指定する必要がある <!subteam^GROUP_ID>

    という形式で指定する必要がある log.attributes.service でマイクロサービス名が特定できているが、そこに紐づくグループ ID がないの で、メンションできない オーナーを明確化 © 2025 newmo | #roscafe 32
  12. Reference Tables で Slack User Group ID を紐付ける csv に紐付けを記載

    csv は github で管理 変更されたら GCS を更新 更新された csv を Datadog が自動反映 service,id,name component.hoge,aaaabbbb1234,alert-server-component-hoge component.fuga,cccdddd4567,alert-server-component-fuga component.piyo,eeefff8901,alert-server-component-piyo . . . Reference Tables © 2025 newmo | #roscafe 34
  13. Lookup Processor で Reference Tables を指定 ログの service.name から Slack

    User Group ID を反映 ログに Slack User Group ID が含まれるよう になる Reference Tables © 2025 newmo | #roscafe 35
  14. Monitor の Message で指定 ログの attributes に group id が追加されて

    いるのでそれを指定 Reference Tables © 2025 newmo | #roscafe 36
  15. まとめ エラーの適切なトリアージ Error Tracking を使用して適切にエラーを選別 Status を活用してトリアージ Case Management でエラーの現状とチケットを紐付け

    エラーのオーナーを明確化 Reference Tables でマイクロサービス名と Slack User Group ID を紐付け エラーによってメンション先を変えることで、オーナーに適切に通知 Reference Tables © 2025 newmo | #roscafe 39