Datadog On-Callを導入しました
こんにちは、株式会社Hacobu テクノロジー本部 Platformチームの栗山です。
システムの信頼性を維持する上で、インシデント発生時の迅速な対応は欠かせません。今回は、Hacobuで導入した「Datadog On-Call」について、その導入背景や選定理由、具体的な機能、そして運用上の工夫をご紹介します。
On-Callとは?
On-Callとは、インシデント発生時に担当エンジニアの電話やSMSなどに自動通知を行い、即座に対応を促す仕組みです。予期せぬシステム問題が発生した場合でも、迅速な対応体制を整えることで、サービス停止や大規模障害からの復旧を素早く行うことができます。
Datadog On-Callを選んだ理由
Datadog On-Callは、2025年1月にGAになったOn-Call機能です。PagerDutyと同様に、アラートをトリガーにしてOn-Callを実行することができます。
業界ではPagerDutyも広く利用されていますが、私たちは以下の理由でDatadog On-Callを選定しました。
必要な機能が揃っている
主要なオンコール機能、たとえばスケジュール機能やエスカレーションポリシー機能については、PagerDutyとの大きな差異はなく要件を十分に満たしていました。
コストパフォーマンスの良さ
PagerDutyから提示された見積もりと比較すると、Datadog On-Callはよりコストを抑えられることが分かりました。
具体的には 1ユーザあたり$25です。
ツールの統一性
オブザーバビリティツールとして既にDatadogを採用しているため、運用ツールの一元化により、システム管理やトラブルシュートがスムーズになります。
Datadog On-Callの主な機能
通知先設定
電話、SMS、メールを通知先として設定できます。
エスカレーションポリシー
On-Callを受けた人が指定時間内に電話に出なかった場合、他のエンジニアにOn-Callをエスカレーションする機能です。
エスカレーションポリシーでは通知先にTeam、スケジュール、ユーザ(複数人可)を指定することができます。
例えば以下の設定では、Product-A TeamにPageがトリガーされると、
- Product-Aのスケジュールが指定されているのでその日のOn-Call担当者に電話が鳴る
- 電話に出なければ3分後にPlatform Team全員に電話を鳴らす
- それでも誰も電話に出なければ電話に出るまで1,2のフローを5回繰り返す
といった設定になっています。
スケジュール
チーム内のメンバーがOn-Callを受ける日や時間を設定することができます。
例えば週や日ごとにOn-Call担当をローテーションすることができます。またオーバーライド機能によって一時的にOn-Call担当者を変更できます。
On-Callスケジュールはカレンダーアプリ(GoogleカレンダーやOutlook等)に連携できます。これによりいつ誰がOn-Call担当なのかがカレンダーアプリで一目で分かるようになります。
Page Routing
tag, group, priority, alert_statusによってPageのUrgencyレベルを設定することができます。
またPageのUrgencyレベルに応じて通知先(電話、SMS、メール)を設定することができます。
Analytics
On-CallのAnalytics画面をみることができます。
Analytics画面では、特定期間中の「Total On-Call数」「Mean Time To Acknowledge (MTTA)」「Mean Time To Resolve (MTTR)」「On-CallされたTeamとその回数」「On-Callされたユーザとその回数」などの数値をみることができます。またこのAnalytics画面では特定のTeamで絞ることもできます。
手動On-Call
DatadogのOn-CallのTeamの画面からTeamを選んでOn-Callすることができます(Pageボタン)。
またSlackとDatadogを連携すると、SlackからもOn-Callを実行できます。Slack上で/datadog page
もしくは/dd page
からOn-Callを実行できます。ちなみにSlackからOn-Callを実行するとUrgencyレベルは常にhigh
になります。
なぜ手動On-Callが必要なのでしょうか? 弊社では外形監視がエラーになるとOn-Callされるようになっています。しかし主要機能の不具合だったりセキュリティインシデントなどは外形監視がエラーになりません。そのためそういった重大なインシデントが発生した場合にSlackから簡単にOn-Callを実行してエンジニアの初動を早めることはとても重要です。(Slackメンションだと作業に集中している時や休憩などで席を外している場合、業務時間外の場合に気づけないことがあるため)
Datadog Incident Managerとの連携
Incident作成(Declare Incident)時の通知先にOn-Callを指定することができます。
またDatadog On-CallのPageの画面からIncident作成(Declare Incident)をすることができます。
Datadog On-Call導入に向けて
Datadog On-Call導入に向けて以下の取り組みを行いました。
Datadog On-Callの導入をエンジニア定例で共有
On-Callとはなにか、なぜDatadog On-Callを選んだのか、Datadog On-Callの簡単な機能紹介の共有を行いました。
予行練習
On-Callを受けてみたり手動でOn-Callを実行してみたりした経験がないと、実際のインシデント発生時に戸惑ってしまいます。そのためエンジニア全員に対して以下の予行練習を行いました。
On-Callを実際に受けてみる
On-Callは英語音声で電話がかかってくるため、初めて受けた際に適切な番号を押してAcknowledgeにする方法が分かりにくい方もいます。そのため、実際に電話を受けてAcknowledge操作までを体験する予行練習を行いました。
Slackから手動でOn-Callを実行する
一度もSlackからOn-Callを実行した経験がないと、いざインシデント発生時に「どうやって実行するんだっけ?」と戸惑ってしまう可能性があります。今回の予行練習により、SlackとDatadogの連携、およびSlackから手動でOn-Callを実行するための予行練習もあわせて行いました。
実際に予行練習をしてみて「On-Callのやり方についてこの場で試せてわかりやすかったです」「On-Callする勇気がなかったので一度試せて良かったです!」というフィードバックをいただきました。
On-Callに関するドキュメントを作成
Datadog上での電話番号登録設定、On-Callの各種機能の設定の仕方、On-Callの電話を受け取った時の対応方法(1がacknowledgeなど) をドキュメント化しました。
またプロダクトチーム側でお願いしたいことを明文化しました。具体的には「チームメンバーの増減が発生した場合、エスカレーションポリシーやOn-Callスケジュールの変更」「新メンバーのDatadogへの電話番号登録」「新メンバーのOn-Call予行練習」です。
ドキュメントの目次↓
運用Tips
Datadog On-Call電話番号を自動登録
Datadog On-Callからの電話番号をあらかじめ連絡先に登録していないと、着信時に「アメリカからの電話」と表示されてしまい、重要なOn-Call通知だと気づけない可能性があります。
さらに、Datadogが使用する発信元の電話番号はいくつか存在し、今後変更される可能性もあるため、手動での登録・更新には手間がかかります。
Datadogのモバイルアプリ(iOS/Android)をインストールし、以下の公式ガイドに沿って設定を行うと、Datadog On-Callの発信番号がスマートフォンの連絡先に自動で登録/同期されます。
この設定により、Datadog On-Callからの着信時に「Datadog On-Call」と表示されるようになり、即座に対応が必要な通知であることがひと目で分かるようになります。
まとめ
本記事では、HacobuにおけるDatadog On-Callの導入背景、選定理由、機能概要、導入準備や運用工夫について紹介しました。
Datadog On-Callはオブザーバビリティとの統合性、PagerDutyに対するコストメリット、十分な機能が揃っていることが決め手となり、導入に至りました。予行練習やドキュメント整備により、スムーズで迅速なインシデント対応が可能になったと思います。
PagerDutyと比較すると機能が不足していると感じる方もいるかもしれませんが、Datadog On-CallはGAになったばかりであり、今後さらに機能が充実していくことを期待しています。
Hacobuでは今後も継続的に運用を見直し、インシデント対応プロセスの改善を進めていきます。
Discussion