OCI Monitoring で CPU 監視して PagerDuty に投げる
OCI (Oracle Cloud Infrastructure) の監視について第2段です。
OCI の Monitoring 機能ではメールでの通知のほか、 PagerDuty に連携をすることができます。
PagerDuty については、インシデント管理の Cloud Service で、日本ではまだあまりユーザは多くないのかもしれませんが、ミクシィやスマートニュースで使われているようです。 PagerDuty導入事例 | PagerDuty by Digital Stacks
PagerDuty のよさげな部分としては、インシデントをスケジュールに基づいてアサインし、管理できるという基本的なところに加え、連携が豊富、という点があるように思います。以下の記事のように Slack / JIRA などのツールに連携するほか、 DataDog や AppDynamics から PagerDuty に投げる、AWS や Azure から PagerDuty に投げる、等他のツールと組み合わせて使うことができます。 thinkit.co.jp
OCI の Monitoring も、単に Alart を上げるというよりも、連携してうまくハンドリングできるところが、おいしい使い方だと思いますので、 PagerDuty に一通り登録までを試してみました。
Digital Stacks さんのページにも Integration の設定までの翻訳記事がありましたので、合わせてご参照ください! pagerduty.digitalstacks.net
PagerDuty のトライアルに登録
PagerDuty ですが Free Trial で 14日間利用できますので、そちらで試してみたいと思います。(商用アカウントは 1ユーザ 9$/月のようです)
PagerDuty | Real-Time Operations | Incident Response | On-Call | PagerDuty の右上の Try Now から試してみます。
Trial の申込画面はシンプルで、名前やメールアドレスなどを入れるだけです。
Trial 申し込むとそのままの流れで Setup に進みます。オンボーディングの障壁を下げるいまどきのクラウドサービスっぽい感じです。連携先(連携元?)が選べるようになっており、 Oracle Cloud Infrastructure Monitoring もばっちりあります。
Service のセットアップが完了です。
次に通知のテストをします。 SMS / 電話 / Email で通知のテストができます。一通り試してみたのですが、 Phone Call を選ぶと、国際電話で電話がかかってきます。 ("This is PagerDuty" って電話してくる)
その後 Escalation Policy のセットアップをします。もし Incident が上がって、対処が必要な時に Escalation する先の Policy / ユーザのセットアップができます。後でも細かくセットアップできるので今回は Skip します。
これで Trial の申込みから、セットアップは完了です。
Oracle Cloud Infrastructure Monitoring との連携
ログイン後のトップ画面です。
Configuratuion -> Services と進みます。
登録時に Oracle Cloud Infrastructure Monitoring を追加しているので、 Services に表示されています。 Integrations の列にある、 Oracle Cloud Infrastructure のリンクをクリックします。
Oracle Cloud Infrastructure Monitoring の Integration Key が表示されます。 Monitoring から、 PagerDuty に連携するために必要になるので、コピーしておきます。
それでは OCI の画面に戻ります。前回作った CPU 使用率監視を PagerDuty に連携するように編集します。前回作った Alarm の定義をクリックします。
右上の Actions ボタンをクリックすると Edit Alarm ができます。
スクロールしていただいて Notifications の欄で Create a Topic をクリックします。
新しい Topic が作れますので Subscription Protocol 欄で HTTPS (PagerDuty) を選びます。先程 PagerDuty 側で確認した Integration Key を入れる欄がありますので、そこに Key を入力し Create topic and subscription (青いボタン) をクリックします。
TOPIC として新しく作った PagerDuty 連携の TOPIC が選ばれていれば OK ですので Save alarm をクリックします。
再度 Pager Duty 側に戻ります。 Configuration -> Service のサービス一覧画面で 1つ Incidents が Trigger されているかと思いますので Service の列の Oracle Cloud Infrastructure Monitoring Service のリンクをクリックします。
Title を確認すると、 OCI の Notifications の登録確認が Incident として登録されています。 SHOW DETAILS をクリックします。
CUSTOM DETAILS の欄に、確認用の URL が記載されているのでそれをクリックすると登録確認が完了します(このあたりメールでの通知でも一緒ですね)。
クリックすると JSON そのまんまの画面が表示されて確認が完了します。
同じ通知はメールにも届いていました。どちらで確認してもいいものと思います。
PagerDuty への Alarm の発報
最後に Alarm が発報されたらどのように見えるか確認しておきます。前回 と同じ Alarm を使っているので、人為的に CPU 使用率を張り付かせて Alarm を飛ばしました。
Incident としては一覧で表示される形になり、ここから、 Acknowledge したり Reassign したり、 Resolved にしたりできます。今回ユーザを一人しか入れていないので、全部私にアサインされてしまいますが、スケジュール等が組めるので、この時間に来たら誰、等細かく設定ができます。
Alarm の Detail を見ると、 Mail での通知と同じように JSON で詳細が連携されています。
まとめ
今回は PagerDuty の連携を試してみました。 OCI の Monitoring 機能だけですとメールと PagerDuty にしか現状飛ばせないのですが、 PagerDuty に連携すれば、その先既存のインシデント管理と連携したり Slack に飛ばしたりもできるのかなと思います。また PagerDuty 自体にモバイルアプリもあるので、そこで問題を Acknowledge したり、Incident の上がってる状況を確認したりもできそうです。
また、PagerDuty 単体でも、スケジュールやエスカレーションのポリシーの設定ができるので、数人の小さいチームでのインシデント管理・運用に便利な印象を持ちました。一部のシステム、立ち上げたばかりのサービスをクラウドに持っていって少人数で回すのであれば PagerDuty に投げて見れる人で監視対応をしていく、というのはよさそうです。