はじめに
2025/5/28(水)に開催された「Japan Datadog User Group Meetup#10」に参加しましたので、イベントレポートを執筆しました。
Xハッシュタグ:#JDDUG
本記事は個人的なメモを共有する形でまとめておりますので、一部表現が簡略化されている場合があります。ご了承ください。
アジェンダ
- 発表
- 会場スポンサーセッション
- 4. Datadog RUM 本番導入までの道(公開資料なし)
- LT
1. Datadog On-Callを本番導入した話
DatadogのOn-Callを選択した理由や、設定方法、運用の工夫について紹介がありました。特に、スケジュール管理やエスカレーションポリシーの活用、通知の最適化について詳しく解説がありました。導入する場合は、予行練習をすることが重要だと言われていました。
- Datadog On-Call が2025年1月にGAした
- Datadog On-Call を選択した理由
- ✅スケジュール管理やエスカレーションポリシーなど必要な機能がそろっている
- ✅1ユーザーあたり$25のコストパフォーマンス
- ✅ツールの統一性、Datadogに一元化
- 主な機能
- 通知先設定:電話、SMS、メール
- Monitorの通知先は
@oncall-{team名}
で指定
- Monitorの通知先は
-
スケジュール:On-Callを受ける日時を設定可能、スケジュールはカレンダーアプリ(Goolgeカレンダー、Outlook)に連携可能
-
エスカレーションポリシー:On-Callを受けた人が指定時間内で電話に出ない場合、他の人にエスカレーションする
- 「その日の担当に電話→3分で出ない→全員に電話」といったことができる
- 通知先設定:電話、SMS、メール
- Datadog Incident Managerとの連携
- Analytics
- On-Callのメトリクスを見ることができる
- Total On-Call、Mean Time To Acknowledgeなど
- 手動のOn-Callが可能
- 重大な障害やセキュリティインシデントは検知できないこともある。Slackから即座にOn-Callできる仕組みは初動を早めるのに重要
- 導入にむけて
- 予行練習をする
- On-Callは英語音声なので慣れが必要
- Slackから
/datadog page
というコマンドでOn-Call。事前にSlackとDatadogの連携設定が必要なので予行練習での動作確認は必須!
- On-Callの運用を各プロダクトチームに任せる
- スケジュールやエスカレーションポリシーの設定
- 新メンバーへのオンボーディング
- ドキュメントを作成する
- 電話番号の設定方法
- 電話の受け方
- SlackとDatadogの連携設定
- 予行練習をする
- 運用Tips
- On-Callはアメリカから複数の電話番号で発信される
- Datadogモバイルアプリを使うとOn-Callの電話番号がスマートフォンの連絡先に自動登録・同期されるので便利
- まとめ
- コストは比較的安い
- GA直後なので機能拡充は今後に期待
- オブザーバビリティツールに統合されているのがよい
- On-Callの予行練習はオススメ
2. プラットフォームとしての Datadog
開発者がDatadogを活用するための機能(自動計装、動的計装、ソースコード統合など)について解説がありました。Datadogの機能を活用すれば、開発生産性を向上するプラットフォームになることが期待されると言われていました。
- Platform Engineering と Datadog
- Platform Engineering とは
- 組織において有用な抽象化を行ない、セルフサービスインフラストラクチャを構築するアプローチ
- 有用な抽象化:ゴールデンパス
- テンプレートの提供
- ドキュメントの整備
- モニタリング標準化
- 開発者のためのDatadog
- 参考資料:JDDUG#3「開発者とマニアのためのDatadog」(資料)
- 自動計装(Automatic Instrumentaition):Datadog APM SDK
-
動的計装(Dynamic Instrumentaition):あとから任意の箇所でプローブを作成できる
- 参考資料:「DynamicなInstrumentation」(資料)
- Live Debugger
- Autocomplete and Search
- ソースコード統合(Source Code Integration):Gitリポジトリと連携
- IDE Plugin:IDEから開発中のコードをDatadogのオブザーバビリティを参照したり連携できる
- Telemetry without Limits:監視データはすべて送信
- 「有用な抽象化:ゴールデンパス」→Datadogでは何ができるか?
- ✅テンプレートの提供
- Workflow Automation & App Builder:GitHub/AWSに接続してテンプレートリソース作成のワークフローを準備
- ✅ドキュメントの整備
- ✅モニタリング標準化
-
統合サービスタグ:
DD_ENV
、DD_SERVICE
、DD_VERSION
- Log Pipeline:ログはJSON形式にすること。効率的にパースできる
-
統合サービスタグ:
- ✅テンプレートの提供
-
Software Catalog
- 開発者が管理するサービス一覧を集中的に可視化するビュー
- まとめ
- Datadogは開発者のプラットフォームとしての機能が豊富
- Datadogは開発生産性を向上させるプラットフォームとなることに期待
- Platform Engineering とは
3. 無い機能なら作ってしまえ、カスタムメトリック
Datadogには、標準でさまざまなメトリクスがあるが、固有のアプリケーションに特化したメトリクスはない。効率よくアプリケーションを監視するためにカスタムメトリクスを活用した方法を紹介されました。
- きっかけ
- バックエンドアプリの応答が遅い
- アプリで使用しているあるTCPポートの接続超過がどうかを知りたい
- ❌特定のポートの接続数のモニタリングはできない
-
netstat
かss
コマンドを使って調べることはできる ss -ant4 | grep ':22'| grep ESTAB | wc-l
-
-
カスタムメトリクスを作る方法
- 公式ドキュメント「カスタム Agent チェックの書き方」を参考にする
- Step1:コンフィグを作る(例:/conf.d/xxxx.yaml)
- Step2:チェックと送信処理を作る(例:/checks.d/xxxx.py)
self.gauge( 'custom_tcp.connections', int(xxxxxx), tags=['host:xxxxxx'] )
- 監視アラート
- まとめ
- オンライン会議は、カスタムメトリクスを活用することで会議数や参加人数を可視化できた
- ゲームは、利用者数を可視化できた
- 監視アラートは時系列BARで可視化できた
- 参考
- Jitsi Meet〜OSSのWeb会議システム
-
Datadog カスタムメトリックスの課金
- メトリクス名とタグ値 (ホストタグを含む) の組み合わせ
- Datadogのカスタムメトリクスによる予期せぬコスト増加を回避する
4. Datadog RUM 本番導入までの道
Datadog RUMの導入プロセスを説明から、サンプリングレートの決定方法や、セキュリティ対策としてのデータマスキング、フロントエンドのUX改善への応用について詳しく解説されました。
- Datadog RUMとは
- なぜ導入したか
- フロントエンドの可観測性がない
- 画面が真っ白になるエラーがユーザー問い合わせ以外で気づけない
- MTTR(Mean Time To Repair:平均復旧時間 / 平均修復時間)の遅延につながる
- APIレスポンスは早いが画面描写が遅いケースを検知できない
- UI改善サイクルが困難
- フロントエンドの可観測性がない
- サンプリングレート
- 本番導入時にはセッション数を見積もる必要がある
- 先にステージング環境へRUMを導入し、E2Eテストで1セッションごとの平均APIリクエスト数を算出して見積をおこう
- 予算の範囲内になるようにサンプリングレートを決定
- セキュリティ
- Datadogにどのレベルまでデータを送ってよいか
- ❌ユーザーの業務データ
- ✅事業所ID、加入プラン
- RUM経由で顧客データが送信されてしまうパターン
- ボタンのラベルText内容が送信されてしまった。
- Datadog送信前にマスキングすることで解決
- ⚠ ただし、過度なマスキングはログ分析できなくなるので注意
- Datadogにどのレベルまでデータを送ってよいか
- フロントで発生した謎エラー
- ResizeObserver loop completed with undelivered notifications...
-
RUM とAPMは関連付けられるので、フロントエンドとバックエンドを一気通貫で分析できる
- RUM SDKにパラメータを追加することで導入可能
- allowedTracingUrls
- traceContextInjection
- traceSampleRate
- RUM SDKにパラメータを追加することで導入可能
- 今後の展望
- RUMのメトリクスやモニターはSLOに活用できる
- 複合条件モニター
- 重要な画面の
Core Web Vitals
をSLI(サービス レベル指標)とするSLO(サービス レベル目標)を作成
5. On-Call 運用Tips
Datadog On-Callの運用に関する実践的なTipsを紹介しました。料金の仕組みやSlack連携の活用方法、特定のモニターだけエスカレーションを分ける方法など、運用をスムーズにするための工夫を解説されました。
-
On-Callの料金
- シートに応じた課金
- シートあたり月額 $25
- シートに応じた課金
- シートとは? ≒ オンコールの対象に含まれている人の数(参考:シートとは何ですか?)
- On-Callのスケジュールに含まれている
- エスカレーションポリシーに含まれている
- 電話番号登録などの通知設定を有効化している
- Slack連携はオススメ
- 特定モニターだけエスカレーション
- On-Callチームのルーティングで条件分岐
- タグや優先度でフィルタリング
- まとめ
- On-Callの料金算出はややこしい
- 架電対象者が課金対象ということを覚えておく
- Slack連携オススメ
- 特定モニターだけエスカレーションができる
- On-Callの料金算出はややこしい
6. Auth0ログをEvenrBridge経由でDatadogと連携
Auth0のログをAWS EventBridge経由でDatadogに送信し、可観測性を向上させる方法を紹介されました。ログのマスキングや長期保存の仕組み、他のアプリケーションログとの相関分析、アラート設定の工夫について詳しく説明されました。
- 認証に対するログ
- いつ・だれが・どこで
- ログインが成功したか、失敗したか。
- 失敗理由は?
- Rate Limit?
- アカウントロック?
- 異常な行動は?
- Auth0管理画面でもモニタリングできるが、モニターで閲覧できる期間が限定的
- Auth0のログをDatadogで見られるメリット
- メトリクスの長期保存
- 過去のメトリクスも見られるので過去の傾向からの分析ができる
- 他のアプリケーションログと統合して相関分析
- アラートが柔軟に設定可能
- メトリクスの長期保存
7. Datadog Network Monitoring を活用して NAT Gateway 課金を 80%削減した話
Datadogのネットワークモニタリング機能を活用し、AWSのNATゲートウェイの課金を80%削減した事例を紹介されました。トラフィックの可視化により、アプリケーションの通信経路分析が可能であると解説されました。
- Network Monitoring はネットワークコスト削減に活用できる
- NAT Gatewayはコスト高い
- S3通信だけはGateway Endpoint導入で50%削減した
- AWSのCost Explorerでは利用料はわかるが、コストの分析には使えない
- VPCフローログでは膨大なログの分析は難しく、知りたいことの一部しか調査できず、問題解決には至らなかった
- ドメイン名などで分析したいが、IPアドレスしかない
- NAT Gateway を経由したかどうかわからない
- Datadogは保存には課金されるが、分析には課金がないのが強み
- Network Monitoring を使うことでボトルネックが特定できた
- Network Monitoringのここが便利
- NAT Gatewayを経由する通信でクエリ可能
- 送信元や送信先でクエリ可能
- 操作性は、普段のDatadogと同じ
その他参考