Datadog On-Call導入後の運用Tipsを紹介します
はじめに
はじめまして、システム基盤チームでSREをしている森と申します。
日々の業務で取り組んだことについて紹介いたします。
先日開催されたDatadogのユーザーコミュニティイベントでDatadog On-CallについてLT登壇させていただきました。
2025年1月末にGAされ始めて以降ユーザーコミュニティでも何回[1][2]か発表されるほど人気のあるツールで、私が発表した回でも他に発表される人[3]がいるくらいホットなツールです。
On-Call運用Tipsと題したLTでしたが、5分という発表時間の中では会社で活用している運用ネタをすべてお伝えできなかったので、今回の記事ではLTで発表した内容に加えて、話しきれなかった運用Tipsについても紹介していこうと思います。
対象読者
- モニタリングツールにDatadogを利用している
- Datadog On-Callについて関心がある
- すでにOn-Callを導入済みで運用を効率化したいと考えている
Datadog On-Callについて
Datadog On-Callは監視やインシデント通知を受け取り、エスカレーションポリシーに則ってオンコールチームにエスカレーションしてもらえます。
公式ドキュメントより引用[4]
On-Call設定を有効化しDatadog MonitorにOn-Call用のインテグレーションをセットすることで、その監視モニターで異常が発生したらOn-Callチームへアラートがページング[5]され、設定したエスカレーションポリシーに応じてOn-Callから連絡が来るようになります。
Datadog MonitorにOn-Call通知を設定するイメージ図
価格について
新しい機能を使う上で気になるポイントはコストがいくらかかるのかといった点かと思います。ドキュメントを見ると以下のように記載されていました。
Datadog SiteはUS[6]
Datadog On-Callの課金は1ヶ月あたりに使用した「シート」の数によって決まります。しかし、この「シート」という概念が具体的に何を指しているのか、最初のうちはよくわかりませんでした。Datadogではユーザーアカウントを無料で発行できますが、On-Callユーザーとなった場合は課金対象になるのかと当初考えました。
Datadogサポートにシートが割り当てられる条件を問い合わせてみたところ以下条件のいずれかに該当するユーザーがシートを付与されると回答がありました。
- オンコールのスケジュールに含まれている。
- エスカレーションポリシーに含まれている。
- ページを受信するよう通知設定を設定している。
簡単にまとめるとOn-Callから何らかの通知を受ける可能性のあるユーザーが課金対象となります。Datadog On-Callチームにユーザーが所属していたとしても、そのユーザーがOn-Callから通知される設定をしていなければ課金対象には含まれません。
類似サービスではユーザー単位で課金が発生するため、オンコール対応を直接担当していないユーザーにはアカウント発行ができず、オンコール時の様子を見られる人が限られてしまう問題がありました。Datadog On-Callではオンコール発生時のAck/Resolveまでの時間分析やOn-Callの発生時のタイムラインだけ見たいという人にも気軽にアカウント発行できるのが大きな強みと言えます。
On-Callチームに7人いるが通知設定している6人が課金対象となる
一例でOn-Callユーザー7人が所属するOn-Callチームを紹介します。
7人いますが1人だけOn-Call通知設定を有効化しておらず、この人はDatadog On-Callから通知が来ることがないためDatadogとしてはシートが割り当たっていないユーザーとみなされ課金対象には含まれません。
オンコールスケジュールやエスカレーションポリシーに含まれる条件についてこちらも一例をお見せしますが、グループ責任者と記載されている通知先にはどこのOn-Callチームにも所属していないシステム基盤グループ全体に責任を持つグループ責任者へ通知がいきます。
グループ責任者はどこかのOn-Callチームに所属しているというわけではなく、エスカレーションポリシーやスケジュールシフトに特定個人名を入れることでDatadog上はその人をOn-Call利用者としてシートが割り当てられることになります。
エスカレーションポリシー設定
On-Call運用設計
On-Callチームの作成やメンバーの追加・削除はコストが発生しないため無計画にチームを作成すると管理が煩雑になり、統制が取れなくなってしまいます。そのため弊社ではOn-Callチームの作成や付随するスケジュール、エスカレーションポリシーを作成する際には以下のルールを設けて運用しています。
- プレフィックスを決めて命名規則を統一しておく
- 開発チーム単位なら
team-
プロダクト単位ならproduct-
など
- 開発チーム単位なら
- スケジュール名、エスカレーションポリシー名はOn-Callチーム名から始めるようにする
私が所属しているシステム基盤チームの場合team-infra
というOn-Callチームを作成し、スケジュール名やエスカレーションポリシー名もteam-infra
から始めるように統一して整合性を保つようにしています。
On-Callチームにメンバーを追加・削除するにはAdmin相当の権限が必要で、弊社ではシステム基盤チームのみがメンバー管理を担う運用としています。
将来的には開発チームがそれぞれ自分たちのチームメンバーを管理できるように権限を委譲することを目指していて、一例としてIaCでのCI/CD運用を構想しています。
弊社ではTerraformを使ったIaC(Infrastructure as Code)で設定を管理していますが、2025年5月末時点では残念ながらOn-CallはTerraformに対応していません。
├── backend.tf
├── locals.tf
├── modules
│ ├── datadog_monitor_host
│ ├── datadog_monitor_log
│ ├── datadog_monitor_log_json
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
│ └── datadog_monitor_slo
├── monitor_event.tf
├── monitor_host.tf
├── monitor_log.tf
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
├── team.tf
├── on_call.tf
├── variables.tf
└── versions.tf
以下のissuesで2025年6月中に提供される予定と案内があり、Terraformで構築できるようになったらOn-CallリソースをIaC化し、On-Callチームへのユーザー更新について開発チーム内のPR-Mergeで完結できるような仕組みを実装したいと考えております。
スマートフォンでスケジュールシフトを確認する
弊社ではSREメンバーが週替わりで夜間や土日のオンコール対応を担当しています。第1陣でオンコール担当者にDatadog On-Callから通知が来て、対応できなければ第2陣としてチーム全員へ連絡が届くように設計されています。
この時On-Callで設定したシフトスケジュールに沿って順番が回ってくるのですが、自分の担当週がいつなのかOn-Callのスケジュールページまで行って確認するのは少々手間だと感じました。
On-Callのスケジュール情報は、Webcal形式[7]でエクスポートできますのでスマートフォンのカレンダーアプリと連携することでいつでも自分のオンコール担当週を確認できるようになります。
スマートフォンにシフトスケジュールをインポート
スケジュールシフトをカスタマイズ
On-Callのスケジュール設定ではシフト間隔をカスタマイズしたり、オンコールメンバーに重複メンバーや空設定をいれることで、より柔軟なシフト設定を入れられます。
例えば、オンコールメンバーには同じ人を複数いれたり、誰もアサインしていない状態である「No-one」を入れることで、このように2勤1休のようなオンコールシフトもいれることが可能になります。
2勤1休シフト
スケジュールシフトは1つのOn-Callチームに複数アタッチできるため、弊社では新卒社員やオンボーディング期間中の中途入社者に向けた期間限定の専用オンボーディングシフトを用意しています。
下図ではオンボーディング期間中のメンバーが2人いた時のもので、週替りで交代していますが人数が少なかったこともあり、No-oneをシフトメンバーに入れて月に1回程度の頻度で割り当てるようにしていました。
オンコール中に障害が発生した場合は、通常のシフトメンバーと一緒に一次対応を担当してもらい、障害に慣れてもらうようにしていました。
オンボーディングローテと通常シフトローテを並行運用
On-Callからの着信を電話帳に登録する
On-Callからかかってくる電話番号はいくつか存在しており、どの番号から着信があるのかユーザーからはわからないようになっています。
On-Callを受け取るスマートフォンにあらかじめDatadogのモバイルアプリをインストールし、Datadogからの連絡であることがわかるようにデジタルコンタクトカードを作るようにすれば、Datadogからの電話が迷惑電話として扱われて着信がこないというミスを防げます。
また、アプリのシステム設定でOn−Callからの着信をスマートフォンのサイレントモードやお休みモードでもバイパスできる権限を付与できますので夜間に鳴らず見逃してしまうといった問題も回避できます。
ドキュメントより引用
ひと目でDatadogからの着信と気付ける
SlackからAck/Resolveボタンを押せるようにする
On-Call通知を設定すると電話やモバイルアプリからのプッシュ通知などから連絡がきますが、その後にDatadog Pages画面からAck/Resolveボタンを押さないと再び通知が来るためちょっと手間を感じます。
そんなときはチャットツール連携機能を設定することで、SlackもしくはMicrosoft TeamsからAck/Resolveボタンを押せるようになります。
電話を受けつつSlackからAckボタンを押して再通知を防ぐ
On-Callチームのページルーティング設定で、宛先にSlack(Teams)を指定することでOn-Call通知をチャットツールにも転送できるようになります。
特定モニターだけ通知先チャンネルを変更したい
先のSlack連携を全On-Callチームで有効化し運用してましたが、監視しているモニターの中には通知先チャンネルを別にしたいという要望が出てきました。
以下図のように電話は鳴らしてほしいが、インシデント扱いにはしたくないのでインシデントチャンネルとは別のチャンネルにOn-Call通知を連携してほしいというものです。
この場合、先ほどのページルーティング設定に条件分岐を加えることで、特定のモニターのみ通知先を変更できます。タグやモニター優先度によるフィルタリングも可能なため、弊社では専用タグを付与し、そのタグが付いたモニターのオンコール通知は、別のSlackチャンネルへ送るように運用しています。
所感
Datadog On-Callについて紹介しました。Datadog On-Callを待ち望むユーザーは多かったらしく、定期的に開催されているDatadogユーザーコミュニティでもOn-Callに関するLTが数多くあります。
GAされてから数ヶ月経ち、すでに導入している企業も多いかと思いますが私の記事を参考に運用課題解決の一助になりましたら幸いです。
プロフィール
森 祐太朗
システム基盤グループ システム基盤チーム所属
新卒の会社で金融機関のシステム運用を経験。その後複数の転職を経てウェルスナビ株式会社にSREとして入社。現在は資産運用サービスや新規プロダクトのインフラ環境構築を中心にサービス運用改善、監視運用、IaC開発などを担当しています。
Discussion