Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
モノレポ開発のエラー、誰が見る?Datadog で実現する適切なトリアージとエスカレーション
Search
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
1.1k
OpenTelemetry の Log を使いこなそう
biwashi
7
2.2k
Monorepo Error Management: Automated Runbooks and Team-Targeted Alert Distribution
biwashi
2
1.2k
スタートアップ創業期を支えるオブザーバビリティ基盤のこれまでとこれから
biwashi
10
1.7k
k6を活用した再現性・拡張性の高い負荷試験基盤の構築
biwashi
13
4.4k
Datadogマニアック機能活用術
biwashi
7
4.6k
feature flag と OpenTelemetry
biwashi
7
2.5k
OpenFeatureと自動生成を活用したフィーチャーフラグの宣言的集約管理
biwashi
20
7.6k
Unified Diff 形式の差分から Go AST を構築して feature flag を自動計装する
biwashi
11
1.6k
Other Decks in Technology
See All in Technology
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
180
OpenTelemetry eBPF Instrumentationの舞台裏 / Behind the Scenes of OpenTelemetry eBPF Instrumentation
ymotongpoo
3
720
2026-09-09 【sigma_ucj#1】Sigma を IaC 管理したい! / IaC for Sigma
civitaspo
0
100
ペアプロの価値はコードを書くことだけじゃない
codmoninc
PRO
0
150
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
280
Sigmaユーザーのための有用リソース一挙公開 & Sigmaで使えるMCP #sigma_ucj /useful-resources-for-sigma-computing-users-and-mcps-with-sigma
shinyaa31
0
170
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
390
WAF 運用改善の承認サイクル/SRE_BizReach_MIXI_1
visional_engineering_and_design
2
400
20260912_スクフェス三河
kgnkhkr
0
170
When Does a Local Qwen Start to Break
morshoto
0
190
Tab5をRubyで動くパソコンにする
kishima
2
280
10分で知る最近のOmarchy
komagata
0
210
Featured
See All Featured
Un-Boring Meetings
codingconduct
0
410
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
710
Building AI with AI
inesmontani
PRO
1
1.2k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
380
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
340
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.7k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
New Earth Scene 8
popppiees
3
2.5k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
890
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