きそくただしいせいかつ

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

OCI Monitoring で CPU 監視してメール通知

2月末のサービスアップデートで、 OCI に Monitoring 機能が追加されました。リリースの情報は以下の blog などもご参照いただくとして、実際に使ってみたいと思います。

Oracle Cloud Infrastructure Blog(翻訳): [OCI]2019... | Oracle Community

使ってみたレベルの確認として、 OCI Monitoring で CPU 使用率のアラートメールを飛ばすところまでやってみたいと思います。

最新の Oracle 提供のイメージでは、Monitoring の監視用のエージェントがデプロイされているため、特に考えることなく Monitoring が利用可能です。

Alarm の定義の作成

OCI メニューの Monitoring -> Alarm Definitions より Alarm の定義が可能です。

Alarm Definition の作成
Alarm Definition の作成

Create Alarm から Alarm を作成します。

Create Alarm により Alarm 作成
Create Alarm により Alarm 作成

Alarm の名前、 Alarm の重要度 (SEVERITY)、 Alarm Body (Alarm の説明) を入力します。

Create Alarm の画面
Create Alarm の画面

Create Alarm の画面(入力後)
Create Alarm の画面(入力後)

スクロールして、メトリックの定義を行います。画面をなんとなく見ていただけるとわかるかと思いますが、メトリックの対象 (NAMESPACE)、METRIC の名前、METRIC データをまとめる (Aggregate する) 間隔 (最短は 1分)、まとめる際の方法を選びます。また DIMENSION として、 resourceId を選択すると特定のインスタンスの指定が可能です。 Trigger Rule は Alarm を上げる際のルールになります。

Metric の定義
Metric の定義

あるインスタンスの CPU 使用率が 80% を超えたら、 Warning の Alarm を発報するルールとしました。 DIMENSION VALUE は OCID での指定になるのでマスクしています。(インスタンスのページに行って OCID を取ってくる必要があるので少し面倒です(ここは今後改善でしょうか)) 3/17 追記 : DisplayName という形で指定すれば Instance 名でも設定可能なようです(失礼しました)。

Metric の定義 (入力後)
Metric の定義 (入力後)

更にスクロールすると、先程の Trigger Rule の定義が確認できます。また、通知情報 (Notifications) を定義します。ここでは Notifications サービスの Topic を指定します。今回 Topic を予め作っていませんので Create a topic から作成します。

Notifications の指定
Notifications の指定

Create a topic すると、 TOPIC の名前、説明を入力できます。また通知先は PagerDuty もしくはメールが選択可能です。

Create a new topic
Create a new topic

今回は私のメールアドレスに通知するようにします。

Create a new topic (入力後)
Create a new topic (入力後)

作成した Topic を Notifications に指定します。これで一通りの Alarm 設定ができたので、 Save Alarm で定義します。

Topic の選択
Topic の選択

これで Alarm の定義が作成できました。

Alarm の定義
Alarm の定義

Notifications で指定したメールアドレスの確認

Notifications で Topic を作る際に、通知先メールアドレスを指定しましたが、自動的に確認用のメールが送信されています。このメール内のリンクをクリックしないと、 Notifications から通知が飛びませんので、先に確認しておく必要があります。

Notifications の確認メール
Notifications の確認メール

確認メール内のリンクをクリックすると、以下のような Web ページが開き、これで登録完了です。

Notifications への登録確認
Notifications への登録確認

CPU 使用率を上げ、Alarm と Notifications 通知の確認

監視対象にしたインスタンスにて、以下のコマンドにより CPU 負荷をかけます。 1 OCPU のインスタンスを利用していますので2並列で実施することにより、 mpstat での確認の通り負荷を 100% に近づけることができます。

[opc@kokane-ol7-01 ~]$ yes > /dev/null &
[1] 19270
[opc@kokane-ol7-01 ~]$ yes > /dev/null &
[2] 19272
[opc@kokane-ol7-01 ~]$ mpstat 1
Linux 4.14.35-1844.1.3.el7uek.x86_64 (kokane-ol7-01)    03/02/2019      _x86_64_        (2 CPU)

05:18:04 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
05:18:05 AM  all   99.00    0.00    1.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00
05:18:06 AM  all   98.49    0.00    1.51    0.00    0.00    0.00    0.00    0.00    0.00    0.00

OCI の Monitoring のリリースに合わせ、各インスタンスの Metrics ページでも負荷が確認できます。上記負荷がけの直後から、 CPU 使用率(右上)のグラフが急上昇しています。

CPU Metrics
CPU Metrics

この後少し待ち、 Alarm Definitions を確認すると、先程定義した Alarm が Firing の状態になっていることが確認できます。また Alarm history の画面からも赤線 (Alarm の Trigger Rule のライン、 80%) を超えていることが確認できます。

Alarm の Firing の確認
Alarm の Firing の確認

また、 Monitoring -> Alarm Status の画面からも、 Alarm が Warning で上がっていることが確認できます。

Alarm Status の確認
Alarm Status の確認

メール通知のほうも確認しておきます。Alarm が上がった直後、以下のようなメールが届いていました。メールの件名は Alarm の名前になっています。本文としては JSON 形式で送信されますので、パーサー等で処理しやすい形になっています。

通知メール
通知メール

このあと、先程の CPU 負荷がけ Process を止めると、以下の通り Alarm の定義も OK ステータスに戻ります。

Alarm Definition が OK に戻る
Alarm Definition が OK に戻る

また、メールのほうにも、 FIRING_TO_OK という形で、解消した旨のメールが届きました。

FIRING_TO_OK のメッセージ
FIRING_TO_OK のメッセージ

まとめ

今回は、OCI Monitoring の Alarm 機能を試してみましたが、なんとなく画面を見ながら設定し通知を受け取ることができました。メール通知に関しても、処理の自動化に組み込みやすい JSON で送られてきますので、監視状況をトリガーとした処理等も実装可能かと思います。

今度は PagerDuty 連携を試してみたいと思います。