PagerDuty 設定ガイド (検知編1) - PagerDutyにアラートを送る方法

この「検知編」では、監視ツールから送られるアラート(イベント)[^1]とPagerDutyのサービスを紐付ける設定を行います。
[^1]: この記事では説明を簡潔にするためアラートとイベントを同じ意味で用いていますが、厳密には異なります。Event/Alert/Incidentの違いについては、[こちらの記事](https://qiita.com/tomof-pd/items/447b5378d9f057355441#%E3%81%95%E3%82%89%E3%81%AB%E4%B8%80%E6%AD%A9%E8%B8%8F%E3%81%BF%E8%BE%BC%E3%82%93%E3%81%A7--%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%E3%82%A4%E3%83%B3%E3%82%B7%E3%83%87%E3%83%B3%E3%83%88%E3%82%92%E9%9A%8E%E5%B1%A4%E6%A7%8B%E9%80%A0%E3%81%A7%E7%90%86%E8%A7%A3%E3%81%99%E3%82%8B)を参照ください。

「[動員編](https://qiita.com/ymotomu/items/e6d13e5284a62e3a1100)」と「検知編」の設定が完了すれば、監視ツールが異常を検知した際、紐付けられたサービスでインシデントを自動起票し、すぐに適切な担当者に通知できるようになります。

設定の順番としては、「[動員編](https://qiita.com/ymotomu/items/e6d13e5284a62e3a1100)」>「検知編」>「[トリアージ編](https://qiita.com/ymotomu/items/1a40022feabae53e85c9)」の順に進めることをおすすめします。


![PD_Overview-Detect.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/b2534e56-e7d1-ba40-8cdf-c5ebc587cfa0.png)
## 「検知編」を完了すると、できるようになること
1. 監視ツール等からPagerDutyにアラートを送り、インシデントを自動起票できる
1. PagerDutyと連携できる外部ツールと、その連携方法を調べることができる

## PagerDutyにEventを送る方法
PagerDuty自体には「監視」の機能はありません。
しかし、監視機能を持つあらゆるツールと連携し、それらから受け取るアラートを元にインシデントを検知することができます。

PagerDutyにアラートを送る方法は、APIとEmailの2つの方法があります。

### API - [Events API v2](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgw-events-api-v2-overview)
APIによる連携が準備されている3rd Partyツールは、[Integration Library](https://www.pagerduty.com/integrations/)で調べることができます。700以上のツールとの連携が用意されています。
監視ツールは、PagerDutyが発行するIntegration Keyを付与して、アラートをAPIエンドポイントにPOSTします。
### Email
APIによる連携が用意されていない場合は、アラートの情報をEmailでPagerDutyに送ることで、インシデントを起票できます。
### Rate-limiting/流量制限
Events API/Emailともに、1分間あたりに送信できるアラートの量が制限されています。

- Events API: 120 calls/分 per Integration Key
- Email: 60 emails/分 per 送信先Emailアドレス

Integration Keyまたは送信先Emailアドレス毎の制限になります。Integration Key/Emailアドレスは複数発行できるため、複数のIntegration Key/Emailアドレスを用意し、分散して送ることで制限を回避できます。

参考: [developer.pagerduty.com - Rate Limiting](https://developer.pagerduty.com/docs/72d3b724589e3-rest-api-rate-limits)

## 設定の流れ
1. PagerDutyでIntegration-Keyを発行する
1. 発行したIntegration-Keyを使って、監視ツール側でPagerDutyにアラートを送る設定をする

## Global Integration と Service Integration
Integration Key(送信先Emailアドレス)を発行する方法は2つあります:
- Service Integration: [サービス](https://qiita.com/ymotomu/items/3cb2d8898857cdcbab02)に紐づくIntegration Keyを発行
- Global Integration: [サービス](https://qiita.com/ymotomu/items/3cb2d8898857cdcbab02)に紐づかないIntegration Keyを発行し、Routing Rulesを使って各[サービス](https://qiita.com/ymotomu/items/3cb2d8898857cdcbab02)に振り分ける

![EO_GRules_SRules.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2777160/58de6c23-f718-585e-4680-9a6cad205f68.png)


どちらの方法でもIntegration-Keyを発行できますが、一般にはGlobal Integrationを推奨しています。
詳細は[トリアージ編](https://qiita.com/ymotomu/items/1a40022feabae53e85c9)で説明しますが、Global Integrationでは[Global Orchestration Rules](https://qiita.com/ymotomu/items/0d3ac9a83b4a927aee1c#global-orchestraion-rules-%E3%81%A8-service-orchestration-rules)が利用でき、さらにEmailで送られたアラートも同様のルールで制御できるためです。

以降ではIntegration-Keyを発行する方法と、監視ツール側の設定について説明します。

## PagerDuty設定ガイド 目次
**[検知編](https://qiita.com/ymotomu/items/f9e8de2dfa94394df54c)** | [トリアージ編](https://qiita.com/ymotomu/items/1a40022feabae53e85c9) | [動員編](https://qiita.com/ymotomu/items/e6d13e5284a62e3a1100) | 解決編 | 学習編
1. [PagerDutyにアラートを送る方法] << イマココ
1. [Global Integrationの設定](https://qiita.com/ymotomu/items/1edf89eb77a03f8b64e3)
1. [Service Integrationの設定](https://qiita.com/ymotomu/items/29495cd968f9c23d1939)
1. [監視ツールの設定](https://qiita.com/ymotomu/items/425a1432cfbc7b8bc085)
 
## 参考リソース
* [PagerDuty Integration Library](https://www.pagerduty.com/integrations/) - PagerDutyと連携できるツール・連携方法のドキュメント
* [PagerDuty Events API v2](https://developer.pagerduty.com/docs/ZG9jOjExMDI5NTgw-events-api-v2-overview)
* [システム障害を未然に防ぐ「インシデント管理・対応」とは](https://www.pagerduty.co.jp/blog/what-is-incident-response)
* [PagerDuty - 14日間 無料トライアル](https://www.pagerduty.co.jp/lp/free-trial/)