TiDB Cloud DedicatedとPagerDutyを連携する

## はじめに

TiDB Cloudはオールインワンのサービスとして設計されており、TiDBの本番運用に必要なすべての機能が備わっています。アラート機能もあるのですが、メール送信だけとなっており緊急時や夜間の際にちょっと不便そうです。

本記事ではPagerDutyのEメール連携機能を利用して、TiDB CloudのアラートをPagerDutyに転送します。TiDB Cloudのアラート機能はTiDB Cloudのユーザー限定なので、まずはPagerDutyをTiDB Cloudの仮想ユーザーとして登録し、それからアラートメールの設定をします。

:::note warn
なお公式ドキュメントではDataDogにメトリクスを連携して、PagerDutyのDatadog連携を利用することを推奨しています。本記事のやり方は簡易的な手段として考えてください（アラートと関係ない、お知らせのメールが飛ぶ可能性もあります）
https://docs.pingcap.com/tidbcloud/monitor-built-in-alerting#edit-alert-rules
:::

:::note alert
本記事はTiDB Cloud Dedicated専用となっています。Serverlessでは利用できないためご注意ください。
:::

## 準備: PagerDuty側の設定

まずはPagerDutyにサインアップして、Eメール連携の設定をします。メニューから、`Service Directory`を選びます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/36ac7345-c877-23a8-b138-ea0209e07815.png" width="50%"/>

サインアップした直後は、`Default Service`というのができているので今回はこれを使う説明とします。（サービスを新規で作成しても構いません)
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/64a72603-2630-dcdd-b245-9d87f2f3d72e.png" width="50%"/>

サービスの`Integration`タブから、Emailを選択します。このサービスへのEmailアドレスが取得できるので、これをコピーしておきます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/d0919816-3f0b-be99-b4de-7ed830a18567.png" width="70%"/>

一旦PagerDuty側の設定はここまでです。

:::note warn
後ほどこの画面を利用するので開いたままTiDB Cloudにログインします。
:::

## TiDB Cloudのユーザーとして登録

TiDB Cloudのアラートの宛先はTiDB Cloudのユーザーに限定されているため、まずは先ほど取得したPagerDutyのEmailアドレスを使ってTiDB Cloudユーザーを登録します。

TiDB Cloudにログインして、組織の`Organization Settings`を開きます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/fb8d8129-030e-28c6-9b40-46c166d07b5b.png" width="50%"/>

Usersを選択し、右上の`invite`ボタンからユーザーを追加します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/86109bb2-0be3-db71-4e85-35fcff2fae28.png" width="50%"/>

メンバーを追加します。Roleは`Organization Member`で良いでしょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/f9fca21f-9a76-858f-9bc8-6efa9a951291.png)

登録が終わると、PagerDutyからアラートが登録先（EmailやSNS）に飛びます。先程のPagerDutyの画面に戻って、アラートを確認します。

アラートを確認すると、Emailのボディが次の画面のようになっているはずです。TiDB Cloudのメールアドレス確認メールですね。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/5f554465-fbc5-b4f1-16ad-269cfb01a272.png" width="50%"/>

ここで`Accept`ボタンを押しても何もおきません。PagerDutyはメールボディのリンクを無効化するためです。`Accept`ボタンの上で右クリックして、別のタブで開いてください。

TiDB Cloudのサインアップ画面に遷移するので、このメールアドレスでTiDB Cloudのユーザーを登録します。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/c2fb724e-e204-573c-5601-594fc3dbdde4.png" width="50%"/>

TiDB Cloudにログインできれば完了です。

:::note warn
このユーザーでは何もできないので、ログアウトしてTiDB Cloudの管理アカウントでログインし直してください。
:::

:::note
PagerDutyのインシデントもResolveにしておきましょう
:::

## プロジェクトのアラートを設定

TiDB Cloudのアラートはプロジェクト単位の設定です。アラートを通知したいプロジェクトの`Project Settings`を開きます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/6b6f335b-3d8f-52c2-be42-95ef8045ba25.png" width="50%"/>

`Alert Subscription`を選択して、右上の`Add Subscriber`を押します。PagerDutyのEmailアドレスを追加すればOKです。図のように、Subscribed Email Addressの欄に追加したEmailが表示されます。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/3a588b7b-8d3d-2984-141a-a401d6f75df8.png" width="50%"/>

## クラスタのアラートを設定

アラートのルールはクラスタ単位で設定できます。クラスタの管理メニューから`Alert`で、アラートのOn/Offやしきい値の修正が可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/12495/e1b079e8-5a39-ce53-516a-18c8b8954cb2.png)



## おわりに

ちょっと手間ですが、以上でPagerDutyにアラートを転送することができました。

:::note
ちなみに、同じやり方でSlackに連携することもできます
:::

### TiDB アドベントカレンダー開催中!
この機会にTiDB Cloudを試して、TiDBアドベントカレンダー2024に参加してください！