はじめに
TiDB Cloudはオールインワンのサービスとして設計されており、TiDBの本番運用に必要なすべての機能が備わっています。アラート機能もあるのですが、メール送信だけとなっており緊急時や夜間の際にちょっと不便そうです。
本記事ではPagerDutyのEメール連携機能を利用して、TiDB CloudのアラートをPagerDutyに転送します。TiDB Cloudのアラート機能はTiDB Cloudのユーザー限定なので、まずはPagerDutyをTiDB Cloudの仮想ユーザーとして登録し、それからアラートメールの設定をします。
なお公式ドキュメントではDataDogにメトリクスを連携して、PagerDutyのDatadog連携を利用することを推奨しています。本記事のやり方は簡易的な手段として考えてください(アラートと関係ない、お知らせのメールが飛ぶ可能性もあります)
https://docs.pingcap.com/tidbcloud/monitor-built-in-alerting#edit-alert-rules
本記事はTiDB Cloud Dedicated専用となっています。Serverlessでは利用できないためご注意ください。
準備: PagerDuty側の設定
まずはPagerDutyにサインアップして、Eメール連携の設定をします。メニューから、Service Directoryを選びます。

サインアップした直後は、Default Serviceというのができているので今回はこれを使う説明とします。(サービスを新規で作成しても構いません)

サービスのIntegrationタブから、Emailを選択します。このサービスへのEmailアドレスが取得できるので、これをコピーしておきます。
一旦PagerDuty側の設定はここまでです。
後ほどこの画面を利用するので開いたままTiDB Cloudにログインします。
TiDB Cloudのユーザーとして登録
TiDB Cloudのアラートの宛先はTiDB Cloudのユーザーに限定されているため、まずは先ほど取得したPagerDutyのEmailアドレスを使ってTiDB Cloudユーザーを登録します。
TiDB Cloudにログインして、組織のOrganization Settingsを開きます。

Usersを選択し、右上のinviteボタンからユーザーを追加します。

メンバーを追加します。RoleはOrganization Memberで良いでしょう。

登録が終わると、PagerDutyからアラートが登録先(EmailやSNS)に飛びます。先程のPagerDutyの画面に戻って、アラートを確認します。
アラートを確認すると、Emailのボディが次の画面のようになっているはずです。TiDB Cloudのメールアドレス確認メールですね。

ここでAcceptボタンを押しても何もおきません。PagerDutyはメールボディのリンクを無効化するためです。Acceptボタンの上で右クリックして、別のタブで開いてください。
TiDB Cloudのサインアップ画面に遷移するので、このメールアドレスでTiDB Cloudのユーザーを登録します。
TiDB Cloudにログインできれば完了です。
このユーザーでは何もできないので、ログアウトしてTiDB Cloudの管理アカウントでログインし直してください。
PagerDutyのインシデントもResolveにしておきましょう
プロジェクトのアラートを設定
TiDB Cloudのアラートはプロジェクト単位の設定です。アラートを通知したいプロジェクトのProject Settingsを開きます。
Alert Subscriptionを選択して、右上のAdd Subscriberを押します。PagerDutyのEmailアドレスを追加すればOKです。図のように、Subscribed Email Addressの欄に追加したEmailが表示されます。

クラスタのアラートを設定
アラートのルールはクラスタ単位で設定できます。クラスタの管理メニューからAlertで、アラートのOn/Offやしきい値の修正が可能です。
おわりに
ちょっと手間ですが、以上でPagerDutyにアラートを転送することができました。
ちなみに、同じやり方でSlackに連携することもできます
TiDB アドベントカレンダー開催中!
この機会にTiDB Cloudを試して、TiDBアドベントカレンダー2024に参加してください!
