Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Shota Iwami
February 11, 2025
Technology
1.8k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
システムの可視化と最適化をDatadogと学ぶ
登壇資料
https://rosca.connpass.com/event/344126/
Shota Iwami
February 11, 2025
More Decks by Shota Iwami
See All by Shota Iwami
モノレポにおけるエラー管理 ~Runbook自動生成とチームメンションの最適化
biwashi
2
1k
OpenTelemetry の Log を使いこなそう
biwashi
7
2k
Monorepo Error Management: Automated Runbooks and Team-Targeted Alert Distribution
biwashi
2
1.1k
スタートアップ創業期を支えるオブザーバビリティ基盤のこれまでとこれから
biwashi
10
1.7k
k6を活用した再現性・拡張性の高い負荷試験基盤の構築
biwashi
13
4.3k
Datadogマニアック機能活用術
biwashi
7
4.3k
feature flag と OpenTelemetry
biwashi
7
2.4k
OpenFeatureと自動生成を活用したフィーチャーフラグの宣言的集約管理
biwashi
20
7.4k
Unified Diff 形式の差分から Go AST を構築して feature flag を自動計装する
biwashi
11
1.6k
Other Decks in Technology
See All in Technology
AIチャット検索改善の3週間
kworkdev
PRO
2
190
フルAIで個人開発して学んだあれこれ / yuruai vol.1
isaoshimizu
0
140
AIが自律的に回る開発ループを設計してチーム開発に組み込む
nekorush14
0
130
時期が悪い!それでもRaspberry Piを買って遊んで活用するには / 20260627-osc26do-rpi-jikigawarui
akkiesoft
1
870
螺旋型キャリアの生存戦略 / kinoko-conf2026
rakus_dev
1
1.1k
事業会社における 機械学習・推薦システム技術の活用事例と必要な能力 / ml-recsys-in-layerx-wantedly-2026
yuya4
0
160
サイバーエージェントにおけるAI推進戦略と変革への取り組み
shotatsuge
0
590
Amazon Redshift zero-ETL 統合を活用した軽量なマルチプロダクトデータ可視化基盤 / Lightweight Multi-Product Data Visualization with Amazon Redshift Zero-ETL
kaminashi
0
100
OTel × Datadog で 「AI活用」を計測し、改善に繋げる
shihochan
2
1k
Flow 不死:AI 時代 DevOps 的不變本質
cheng_wei_chen
2
540
[チョークトーク資料]AWS DevOps Agent を使いこなす / AWS Dev Ops Agent Chalk Talk AWS Summit Japan 2026
kinunori
4
790
Lightning近況報告
kozy4324
0
220
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Prompt Engineering for Job Search
mfonobong
0
350
Scaling GitHub
holman
464
140k
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
210
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
200
Leo the Paperboy
mayatellez
7
1.9k
Transcript
モノレポ開発のエラー、誰が見る? Datadog で実現する適切な トリアージとエスカレーション newmo株式会社 岩見彰太 github: @BIwashi x: @B_Sardine
© 2025 newmo | #roscafe
自己紹介 岩見彰太 Software Engineer @newmo株式会社 Platform Team CyberAgent → newmo
好きな Datadog の機能:Error Tracking GitHub: BIwashi X: @B_Sardine © 2025 newmo | #roscafe 2
本日のテーマ モノレポ開発における エラー管理とトリアージの最適化 © 2025 newmo | #roscafe 3
Monorepo Development newmo ではモノレポで開発を行っている 全てのアプリケーションやマイクロサービスのコードを単一のリポジトリで管理 マイクロサービスとしての独立性を維持 開発効率と保守性の両立 背景 © 2025
newmo | #roscafe 4
Error Monitor の現状 Log Monitor アプリケーションログに対して、クエリした結果を通知 ログレベルをエラーにすべきではないところが残存 Monitor のクエリで -
を使用して随時に除外 クエリにログファセットが多く使用 使用自体は問題ないが、予約済み属性(e.g. service / env / version )を使用するところも facet になっ ており保守が大変 @gcp.project_id:hoge-dev
[email protected]
:"hoge が発生しました" -@code:foo ・・・ 背景 © 2025 newmo | #roscafe 5
Log Monitor と運用の課題 重要度の判定と除外 開発中はログが発生しても即座に修正まで行えないこともあった 重要なエラーも軽微なエラーも同一に通知されチャンネルの流量が増大 除外するためのクエリ修正が増加 オーナーシップの明確化 エラーがどのマイクロサービス起因なのかが分かりにくい マイクロサービスのオーナーが確認するまでは放置されがちに…
背景 © 2025 newmo | #roscafe 6
Log Monitor と運用の課題 重要度の判定と除外 開発中はログが発生しても即座に修正まで行えないこともあった 重要なエラーも軽微なエラーも同一に通知されチャンネルの流量が増大 除外するためのクエリ修正が増加 適切にトリアージができていない オーナーシップの明確化 エラーがどのマイクロサービス起因なのかが分かりにくい
マイクロサービスのオーナーが確認するまでは放置されがちに… 適切にエスカレーションができていない 背景 © 2025 newmo | #roscafe 7
課題 エラーの適切なトリアージ エラーのオーナーを明確化 © 2025 newmo | #roscafe 8
エラーの適切なトリアージ エラーを適切に選別する エラーを種類ごとに分類 重要度やステータスを個別管理 通知対象から適切に除外 エラー単位で除外 エラーのオーナーを明確化 適切にマイクロサービスを特定 attribute を適切に指定
オーナーに適切に通知 Error Message やグループメンションを活用 課題 © 2025 newmo | #roscafe 9
エラーの適切なトリアージ Error Tracking Case Management エラーを適切に選別する エラーを種類ごとに分類 重要度やステータスを個別管理 通知対象から適切に除外 エラー単位で除外
エラーのオーナーを明確化 Reference Tables Log Pipeline 適切にマイクロサービスを特定 attribute を適切に指定 オーナーに適切に通知 Error Message やグループメンションを活用 課題 © 2025 newmo | #roscafe 10
エラーの適切なトリアージ Error Tracking Case Management © 2025 newmo | #roscafe
11
Error Tracking エラーログに含まれている 特定の attibutes を元に Datadog がエラーを選別 error.message error.stack
error.kind Error Tracking 引用: Datadog Error Tracking Backend © 2025 newmo | #roscafe 12
Issue エラーは Issue という単位で選別される Status という属性を持っている Error Tracking © 2025
newmo | #roscafe 13
Issue Status 4種類のステータスを持っている Error Tracking © 2025 newmo | #roscafe
14
For Review 問題が新規発生 or リグレッションして確認が必要な状態 Reviewed トリアージ済、現在修正中の状態 Ignored 何かアクションする必要がない状態 基本的に
Error で表示すべきではないもの Resolved エラーを修正した状態 Error Tracking © 2025 newmo | #roscafe 15
Monitor の設定 Logs ではなく Error Tracking Error Tracking © 2025
newmo | #roscafe 16
New Issue を選択 新規の Issue が 作成 or リグレッションされた 時に通知
Error Tracking © 2025 newmo | #roscafe 17
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
Regression Detection 一度 Resolved になった Issue が再発した時に自動で For Review に変更
Regression というタグがつけられる Error Tracking 引用: Error Tracking | Datadog © 2025 newmo | #roscafe 19
Error Tracking 引用: Issue States in Error Tracking © 2025
newmo | #roscafe 20
Case Management チケットを作成して、Issue を管理 Error Tracking と連携して、Error Issue に紐づいた Case
を作成可能 エラー発生理由や紐づくチケットなど を記載可能 Case Management © 2025 newmo | #roscafe 21
余談:Workflow Automation で Linear と Casa Management 連携(構想) Casa Management
ではデフォルトで Jira, ServiceNow と連携が可能 Linear を使用しているが、Datadog では公式で対応していない しかし Workflow Automation には Case Management のトリガーが存在 Linear 連携を自作可能(なはず) Case Management © 2025 newmo | #roscafe 22
Case Management © 2025 newmo | #roscafe 23
トリアージの流れ © 2025 newmo | #roscafe 24
1. Slack の通知を確認 Slack の通知を確認 Error 内容の概要を確認して、Issue ペ ージに飛ぶ トリアージ
© 2025 newmo | #roscafe 25
2. Issue を確認 message や stack trace な どから原因を特定 状況によって
Status を 変更 トリアージ © 2025 newmo | #roscafe 26
原因が特定でき、修正が必要そうな場合 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
3. Case を作成 エラーの原因や修正方法な どを記載 チケットを作成して、修正 用のチケットを張るなどし て紐づけておく トリアージ ©
2025 newmo | #roscafe 28
トリアージ © 2025 newmo | #roscafe 29
エラーのオーナーを明確化 Reference Tables Log Pipeline © 2025 newmo | #roscafe
30
マイクロサービス開発メンバーの Slack ユーザーグループにメンションをしたい アラートチャンネルには、全てのマイクロサービスのエラーが通知される マイクロサービスごとにチャンネルを分けることもできるが、まだそれをやるまでの規模ではない せっかく Monorepo なので、チャンネルもできるだけ分割しないで進めたい 開発メンバーも流動的に移動している オーナーメンバーがトリアージできていなかった場合はエスカレーションしたい
マイクロサービス開発メンバーの Slack ユーザーグループにメンションをしたい Error Tracking の Issue の service(マイクロサービス単位)ごと オーナーを明確化 © 2025 newmo | #roscafe 31
問題 Datadog の Monitor での Slack ユーザーグループへの通知はグループ ID を指定する必要がある <!subteam^GROUP_ID>
という形式で指定する必要がある log.attributes.service でマイクロサービス名が特定できているが、そこに紐づくグループ ID がないの で、メンションできない オーナーを明確化 © 2025 newmo | #roscafe 32
Reference Tables Datdog にすでにある情報に メタデータを追加することができる csv 形式で指定 データソースは直接 Upload 以外に
も、S3 / GCS / Azure Storage を指定 可能 Reference Tables © 2025 newmo | #roscafe 33
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
Lookup Processor で Reference Tables を指定 ログの service.name から Slack
User Group ID を反映 ログに Slack User Group ID が含まれるよう になる Reference Tables © 2025 newmo | #roscafe 35
Monitor の Message で指定 ログの attributes に group id が追加されて
いるのでそれを指定 Reference Tables © 2025 newmo | #roscafe 36
動的にメンションする Slack User Group を変更 マイクロサービス名によってメンショ ン先を変える Reference Tables ©
2025 newmo | #roscafe 37
まとめ © 2025 newmo | #roscafe 38
まとめ エラーの適切なトリアージ Error Tracking を使用して適切にエラーを選別 Status を活用してトリアージ Case Management でエラーの現状とチケットを紐付け
エラーのオーナーを明確化 Reference Tables でマイクロサービス名と Slack User Group ID を紐付け エラーによってメンション先を変えることで、オーナーに適切に通知 Reference Tables © 2025 newmo | #roscafe 39