pagerdutyに関するあれこれメモ
pagerdutyの中の人と色々と月一くらいでMTGしてます。
そこで教えてもらったことなどの備忘録です。
注)私はPagerDutyを使って運用をしているのではなく、pagerdutyを使って運用しているメンバーを支援するためのシステムの構築をを目的としています。
なのでpagerdutyでAPI使ってインシデントの状態を操作することが主な利用方法になっています
取り組みの一部紹介
What is pagerduty?
PagerDuty社製のインシデント管理のSaaS。基本webインターフェイスで操作可能。
インシデントの情報を集約することで一元管理が可能になる。
インシデントはサービス(pagerduty利用者が運用しているサービス)に紐付くため、インシデント発生時にどのサービスで発生したものかすぐ判断がつく。
インシデントの発生状況の推移をWebインターフェイスで確認するこもできる。
メンテナンス中なので通知したくないなーという場合はメンテナンスウィンドウにサービスを入れる事でインシデントが発生しても無視することも可能。
インテクレーションは結構種類が揃っていてメール、APIはもちろんNagios、DataDog、(他にも色々!)などのプラグインが豊富に揃っている。
予めカレンダーに情報を登録することで対象のユーザーに連絡(通知)でき、エスカレーションポリシーという仕組みで予め対応者の階層を作ることで一定時間誰もインシデントに着手してなければ次の階層に連絡をする仕組みなども用意されている。
基本ドキュメントは英語。個人的にハードル高し。
個人的な最初のハマりどころ アラートとインシデントの違い
ここが結構わかりにくい・・実際にWeb UI上明確に分かれている。
分類分けとしては、
アラート(Alert):pagerdutyへの通知情報(各インテグレーションが投げた情報)? インシデント(Incident):Alertの情報を元にpagerdutyがサービス毎の設定を踏まえて処理しないといけないと判断したもの?
って認識ですが、ちょっと怪しい感じもする。
アラートを受けてpagerdutyは自身の設定情報(例えば、サービスがメンテナンスに入っているか?やメールであればメールフィルタに合致しているか?など)を踏まえて処理すべきアラートであると判断した場合にインシデントとして登録される?
英語で説明してらったのですが理解が怪しい。詳しい方いらっしゃいましたら、良かったら教えて下さい。 mm
pagerdutyのAPIって何ができるの?
基本的な操作に関しては大体なんでもできます。
API v1の頃は安定性やパフォーマンスが若干アレでしたがv2になって改善された。
v1は叩きまくるとちょこちょこ失敗していたがv2では特に見かけない。
ただ、たまにAPIサーバーが死んじゃうことがある。体感的に年一回くらい。
APIリファレンスはこちら
https://v2.developer.pagerduty.com/v2/page/api-reference
APIについてはこれからボツボツと起こします。
利用時の注意点
- APIの利用制限は1分辺り2000回。この制限はAPIキー単位で行っている。
APIキーを複数用意すれば1分あたり2000回以上の呼び出しが可能。 - WebHookはpagerdutyからのリクエストを受信して5秒以内にレスポンスを返さないといけない。
(正確にはpagerdutyがリクエストを投げてからレスポンスを受け取るまでが5秒以内。)
レスポンスを返すのに5秒以上かけるとブラックリスト予備軍に入り、一定時間pagerdutyから通知が来なくなる。
慢性的にレスポンスを返すのに5秒以上かけてしまうとやがてブラックリスト入りして通知が一切来なくなる。
おまけ
pagerduty自体にPagerDuty社の運用思想が盛り込まれている。
例えば、エスカレーションポリシーの各階層毎の人数制限はあまり大人数に送ると混乱するから人数を絞った方がいいなど。