Fastly の Alert 機能を使って通知を受け取る




ウェブサイトやアプリケーションの安定運用は、ビジネスの継続性を左右する重要な要素です。特にトラフィックが急増やエラーの上昇などは素早く検知し、迅速に対応することが求められます。

そこで今回は、Fastly の Observability 機能の一つである [Alert (アラート) 機能](https://docs.fastly.com/ja/guides/alerts)に焦点を当て、その概要と基本的な使い方を分かりやすく解説します。

Fastly の Alert 機能を利用すると、トラフィックの上昇やエラー率の上昇など、トラフィックのパターンが指定した条件を満たした場合に通知を受け取ることが可能です。

なお、Alert 機能を利用するためにはオプションの購入が必要となりますのでご留意ください。



## Fastly Alert 機能とは？
Fastly Alert 機能は、Fastly のプラットフォーム上で発生する様々なイベントやメトリクスを監視し、事前に設定した条件に合致した場合に、指定した方法で通知を行う機能です。

例えば、以下のような状況をリアルタイムに検知し、アラートを受け取ることができます。

- HTTP ステータスコードのエラー率の急上昇: 5xx エラーが閾値を超えた場合に通知
- キャッシュヒット率の急低下: オリジンサーバーへの負荷増大を検知
- 特定のオリジンサーバーのレイテンシ増加: ユーザー体験の悪化を早期に把握
- DDoS 攻撃の可能性のあるトラフィックパターン: 異常なリクエスト数の増加を検知

これらのアラートを適切に設定することで、障害の発生を未然に防ぎ、発生した場合でも迅速な対応を可能にし、サービスの中断時間を最小限に抑えることができます。

## Fastly Alert 機能のメリット

Fastly Alert 機能を利用する主なメリットは以下の通りです。

- リアルタイムな監視: 重要なイベントやメトリクスを常に監視し、異常を即座に通知します。
- 柔軟な条件設定: 閾値、期間、比較方法など、様々な条件を組み合わせてアラートを設定できます。
- 多様な通知方法: Email、Slack、PagerDuty、Webhook など、チームの運用体制に合わせた通知方法を選択できます。
- 早期の障害検知と対応: 障害の兆候を早期に捉え、影響が拡大する前に対応できます。
- ダウンタイムの削減: 迅速な対応により、サービス停止時間を最小限に抑え、ビジネスへの影響を軽減します。

## Fastly Alert 機能の基本的な使い方


Alert 機能には Fastly コントロールパネルの左側のメニューの Observability -> Alerts からアクセスします。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/e0629cb4-d68f-4a9b-9f67-f116f46de0f0.png" width=50%>

Alerts 配下には以下の3つのメニューがあります。

- Overview - 作成した Alerts の発生状況の確認
- Definitions - Alert を通知する条件の設定
- Integrations - Alert の通知先の作成

初めて Alert を設定する場合は、まずは Integrations で通知先を作成し、Definitions で Alert を通知する条件を作成します。


## Integrations - 通知先の作成
Alert integration では Alert の通知先を作成します。ここで設定した通知先は後ほど Definition(通知条件の設定)で通知先として利用します。

それでは早速通知先を作成してみます。

まずは、メニューの Observability -> Alert から Integrations を選択すると Alert integrations 画面が表示されるので `Add alert integration` をクリックします。

以下の Add integration 画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/f3491ba4-f5ce-44a8-b8c4-1c2aa7e7dc11.png)

通知先は以下から選択することができます。
- Slack
- Email
- PagerDuty
- Microsoft Teams
- New Relic
- Custom Webhook

例えば Slack に通知をしたい場合は、以下の3つの項目を入力します。

**Name**: Integration の名前
**Webhook URL**: Slack 側で指定された通知用 Webhook URL
**Description**: Integration の説明

必要な情報を入力したら `Save integration` ボタンをクリックします。


## Definitions - 通知条件の設定

Alert Definitions では Alert を発生させる条件を設定します。同時に設定可能なアラートの上限はアカウントあたり 50 です。Definitions の詳細は [アラート定義の管理](https://docs.fastly.com/ja/guides/managing-alert-definitions)をご参照下さい。

通知条件を作成はメニューの Observability -> Alert から Definitions をクリックすると表示される Alert definitions 画面で行います。

画面が表示されたら `Add alert definition` をクリックすると、Add alert definition ページが表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/b41fe65a-e50f-4caf-88e3-0f496acb02bf.png)

### Details
それでは早速設定をを作成していきます。以下のフィールドに必要事項を入力します。

**Name**: アラートの名前
**Description**: アラートの Definition の説明
**Scope**: モニタリングの対象

`All services (aggregated)` - すべてのサービスのメトリクスを監視
`Single service` - 特定のサービスのメトリクスを監視

Single Service を選択した場合はさらに対象のサービスと Data Source を選択します。

Data Source のオプションには、Historic Stats 以外に契約状況によって Origin Inspector、Domain Inspector の利用が可能です。

**Metric**: 監視するメトリクスを選択します。Stats API で利用可能なメトリックスがほぼ利用可能ですので非常に多くの数のメトリックスが選択可能です。
エラー率や帯域など一般的によく使われるメトリクスは Popular Metrics としてリストの上部に表示されます。

メトリクスを選択すると、設定画面の右側に過去2時間程度の選択したメトリクスの推移がグラフで表示されますので、閾値などを設定する参考にすることが出来ます。

### Conditions
続いて Alert を送信する条件を設定します。


#### Alert type
Threshold（閾値）と Percent change（割合の変化）の２種類があります。

##### Threshold を選択した場合
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/50bfa814-a706-41c4-aa61-97dabb9a9728.png" width=50%>

**Evaluation type** 
アラートをトリガーする条件を以下の中から選択して下さい
Above(all minutes) - 評価期間のすべての測定で閾値を上回った
Above(one minute) - 評価期間のいずれかの測定で閾値を上回った
Below(two minutes) - 評価期間の連続した2回の測定で閾値を下回った

**Threshold** 
アラートがトリガーされる閾値を入力して下さい

**Evaluation period** (評価期間)
観測されたメトリクスが指定されたしきい値を上回った、または下回ったかを判断するために1分ごとにメトリクスを評価する期間 (分) を選択します。2分、5分、15分、30分のオプションがあります。


##### Percent change を選択した場合

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/42528978-c785-4f8d-b4ff-96e5d4a88df3.png" width=50%>

**Evaluation type** 
アラートをトリガーする条件を以下の中から選択して下さい

Increases by - メトリクスが増加
Decreases by - メトリクスが減少
Increase or decrease by - メトリクスが増減

**Persent** 
アラートがトリガーされる増加、減少、増減のパーセントを入力


**Comparison period**: 比較期間
観測された割合が評価される期間を選択します。期間の最初の1分と最後の1分を使用して、パーセントの計算を行います。2分、5分、15分、30分のオプションがあります。

**（オプション）Excluded values**: 除外値
この範囲以下の値は無視され、アラートのトリガーに使用されない値を選択します。

Alert がトリガー、解除される条件の詳細は[アラートの仕組み](https://docs.fastly.com/ja/guides/how-alerting-works)をご参照下さい。

### Notifications
Alert がトリガーされた際に通知する先を選択します。[Integrations](#integrations) で生成した通知先から選択が可能です。

## Overview
メニューの Observability -> Alert から Overview を選択すると Alert 画面が表示されます。
ここでは現在トリガーされているアラートと解決されたアラートの情報を確認することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/128569/c29fe978-eeb5-4384-b170-1a66b5d9c7db.png)

トリガーまたは解決されたアラートをクリックすることで、そのアラートの詳細ページが表示されます。


## 具体的な設定のサンプル

### エラーの数が増加した際にアラート

単一のサービスまたはすべてのサービスで 5XX レスポンスの数が1,000を超えた場合に通知を受けたいとします。アラート定義を設定する際に、単一のサービスまたはすべてのサービスのどちらについて報告するかを選択し、Definitions に以下の設定を行います。

- Data source メニューを `Historic Stats` にする
- Metric メニューを `status_5xx` にする
- Alert type を `Threshold` にする
- Evaluation type メニューを `Above (one minute)` にする
- Threshold フィールドを `1000` にする
- Evaluation period メニューを `5 minutes` にする

上記の設定では、5分ごとに評価結果を確認し、1分でも指定した閾値(1000)を超えるエラーが記録されている場合に指定した Integrations に通知を行います。


### エラー率が閾値を超えた場合にアラート

単一のサービスまたはすべてのサービスで 4XX レスポンスの数がすべてのレスポンスの5%を超えた場合に通知を受けたいとします。アラート定義を設定する際に、単一のサービスまたはすべてのサービスのどちらについて報告するかを選択します。それから、以下の設定を行います。

- Data source メニューを `Historic Stats` にする
- Metric メニューを `4XX Client Error Rate(VCL)` にする
- Alert type を `Threshold` にする
- Evaluation type メニューを `Above (one minute)` にする
- Threshold フィールドを `5`(%) にする
- Evaluation period メニューを `5 minutes` にする

上記の設定では、5分のローリング時間ウィンドウ (Evaluation period) でメトリクス評価を開始します。評価期間の1分間のポーリングで、メトリクスが5% (しきい値) を超えているものが発見されると指定された Integrations に通知が行われます。

### DDoS 攻撃を検知した際にアラート

DDoS Protection をご利用中で、DDoS 攻撃が検知された場合に通知を受けたいとします。アラート定義を設定する際に、単一のサービスまたはすべてのサービスのどちらについて報告するかを選択します。それから、以下の設定を行います。

- Data source メニューを `Historic Stats` にする
- Metric メニューを `DDos Protection Requests Detected` にする
- Alert type を `Threshold` にする
- Evaluation type メニューを `Above (one minute)` にする
- Threshold フィールドを `0` にする
- Evaluation period メニューを `2 minutes` にする

上記の設定では、2分ごとに `DDoS Protection Request Detectedz` に該当するリクエストが発生しているかを確認します。該当するリクエストが発生していた場合、指定された Integrations に通知が行われます。

## まとめ

Fastly Alert 機能は、ウェブサイトやアプリケーションの安定運用に不可欠な、強力かつ柔軟な監視・通知機能です。適切なアラートを設定し、リアルタイムな情報に基づいて迅速に対応することで、サービスの中断時間を最小限に抑え、ビジネスの信頼性を高めることができます。

まだ Fastly Alert 機能をご利用でない方は、ぜひこの機会に設定をご検討ください。もし設定方法にご不明な点があれば、Fastly のサポートチームまでお気軽にお問い合わせください。