きそくただしいせいかつ

日々の生活のペースセッター

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 から試してみます。

PagerDuty のトップページ
PagerDuty のトップページ

Trial の申込画面はシンプルで、名前やメールアドレスなどを入れるだけです。

Trial の申込み画面
Trial の申込み画面

Trial 申し込むとそのままの流れで Setup に進みます。オンボーディングの障壁を下げるいまどきのクラウドサービスっぽい感じです。連携先(連携元?)が選べるようになっており、 Oracle Cloud Infrastructure Monitoring もばっちりあります。

Setup 画面
Setup 画面

Service のセットアップが完了です。

Service のセットアップ完了
Service のセットアップ完了

次に通知のテストをします。 SMS / 電話 / Email で通知のテストができます。一通り試してみたのですが、 Phone Call を選ぶと、国際電話で電話がかかってきます。 ("This is PagerDuty" って電話してくる)

Notification (通知) のテスト
Notification (通知) のテスト

Notification (通知) のテスト
Notification (通知) のテスト

その後 Escalation Policy のセットアップをします。もし Incident が上がって、対処が必要な時に Escalation する先の Policy / ユーザのセットアップができます。後でも細かくセットアップできるので今回は Skip します。

Escalation Policy のセットアップ
Escalation Policy のセットアップ

これで Trial の申込みから、セットアップは完了です。

セットアップの確認画面
セットアップの確認画面

Oracle Cloud Infrastructure Monitoring との連携

ログイン後のトップ画面です。

ログイン後のトップ画面
ログイン後のトップ画面

Configuratuion -> Services と進みます。

Configuration -> Service と進む
Configuration -> Service と進む

登録時に Oracle Cloud Infrastructure Monitoring を追加しているので、 Services に表示されています。 Integrations の列にある、 Oracle Cloud Infrastructure のリンクをクリックします。

Service の一覧
Service の一覧

Oracle Cloud Infrastructure Monitoring の Integration Key が表示されます。 Monitoring から、 PagerDuty に連携するために必要になるので、コピーしておきます。

Integration Key の確認
Integration Key の確認

それでは OCI の画面に戻ります。前回作った CPU 使用率監視を PagerDuty に連携するように編集します。前回作った Alarm の定義をクリックします。

OCI の Alarm Definitions
OCI の Alarm Definitions

右上の Actions ボタンをクリックすると Edit Alarm ができます。

Alarm Definition の Edit
Alarm Definition の Edit

スクロールしていただいて Notifications の欄で Create a Topic をクリックします。

Create a Topic する
Create a Topic する

新しい Topic が作れますので Subscription Protocol 欄で HTTPS (PagerDuty) を選びます。先程 PagerDuty 側で確認した Integration Key を入れる欄がありますので、そこに Key を入力し Create topic and subscription (青いボタン) をクリックします。

PagerDuty へ通知する Topic を作る
PagerDuty へ通知する

TOPIC として新しく作った PagerDuty 連携の TOPIC が選ばれていれば OK ですので Save alarm をクリックします。

TOPIC の選択
TOPIC の選択

再度 Pager Duty 側に戻ります。 Configuration -> Service のサービス一覧画面で 1つ Incidents が Trigger されているかと思いますので Service の列の Oracle Cloud Infrastructure Monitoring Service のリンクをクリックします。

Incident が Trigger されている
Incident が Trigger されている

Title を確認すると、 OCI の Notifications の登録確認が Incident として登録されています。 SHOW DETAILS をクリックします。

通知の登録確認が Incident としてあがっている
通知の登録確認が Incident としてあがっている

CUSTOM DETAILS の欄に、確認用の URL が記載されているのでそれをクリックすると登録確認が完了します(このあたりメールでの通知でも一緒ですね)。

Incident の Detail を確認
Incident の Detail を確認

クリックすると JSON そのまんまの画面が表示されて確認が完了します。

確認されたことのメッセージ
確認されたことのメッセージ

同じ通知はメールにも届いていました。どちらで確認してもいいものと思います。

メールへの登録確認 Incident 通知
メールへの登録確認 Incident 通知

PagerDuty への Alarm の発報

最後に Alarm が発報されたらどのように見えるか確認しておきます。前回 と同じ Alarm を使っているので、人為的に CPU 使用率を張り付かせて Alarm を飛ばしました。

Incident としては一覧で表示される形になり、ここから、 Acknowledge したり Reassign したり、 Resolved にしたりできます。今回ユーザを一人しか入れていないので、全部私にアサインされてしまいますが、スケジュール等が組めるので、この時間に来たら誰、等細かく設定ができます。

Incident の確認
Incident の確認

Alarm の Detail を見ると、 Mail での通知と同じように JSON で詳細が連携されています。

Alarm の詳細
Alarm の詳細

まとめ

今回は PagerDuty の連携を試してみました。 OCI の Monitoring 機能だけですとメールと PagerDuty にしか現状飛ばせないのですが、 PagerDuty に連携すれば、その先既存のインシデント管理と連携したり Slack に飛ばしたりもできるのかなと思います。また PagerDuty 自体にモバイルアプリもあるので、そこで問題を Acknowledge したり、Incident の上がってる状況を確認したりもできそうです。

また、PagerDuty 単体でも、スケジュールやエスカレーションのポリシーの設定ができるので、数人の小さいチームでのインシデント管理・運用に便利な印象を持ちました。一部のシステム、立ち上げたばかりのサービスをクラウドに持っていって少人数で回すのであれば PagerDuty に投げて見れる人で監視対応をしていく、というのはよさそうです。