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 の定義が可能です。
Create Alarm から Alarm を作成します。
Alarm の名前、 Alarm の重要度 (SEVERITY)、 Alarm Body (Alarm の説明) を入力します。
スクロールして、メトリックの定義を行います。画面をなんとなく見ていただけるとわかるかと思いますが、メトリックの対象 (NAMESPACE)、METRIC の名前、METRIC データをまとめる (Aggregate する) 間隔 (最短は 1分)、まとめる際の方法を選びます。また DIMENSION として、 resourceId を選択すると特定のインスタンスの指定が可能です。 Trigger Rule は Alarm を上げる際のルールになります。
あるインスタンスの CPU 使用率が 80% を超えたら、 Warning の Alarm を発報するルールとしました。
DIMENSION VALUE は OCID での指定になるのでマスクしています。(インスタンスのページに行って OCID を取ってくる必要があるので少し面倒です(ここは今後改善でしょうか)) 3/17 追記 : DisplayName という形で指定すれば Instance 名でも設定可能なようです(失礼しました)。
更にスクロールすると、先程の Trigger Rule の定義が確認できます。また、通知情報 (Notifications) を定義します。ここでは Notifications サービスの Topic を指定します。今回 Topic を予め作っていませんので Create a topic から作成します。
Create a topic すると、 TOPIC の名前、説明を入力できます。また通知先は PagerDuty もしくはメールが選択可能です。
今回は私のメールアドレスに通知するようにします。
作成した Topic を Notifications に指定します。これで一通りの Alarm 設定ができたので、 Save Alarm で定義します。
これで Alarm の定義が作成できました。
Notifications で指定したメールアドレスの確認
Notifications で Topic を作る際に、通知先メールアドレスを指定しましたが、自動的に確認用のメールが送信されています。このメール内のリンクをクリックしないと、 Notifications から通知が飛びませんので、先に確認しておく必要があります。
確認メール内のリンクをクリックすると、以下のような Web ページが開き、これで登録完了です。
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 使用率(右上)のグラフが急上昇しています。
この後少し待ち、 Alarm Definitions を確認すると、先程定義した Alarm が Firing の状態になっていることが確認できます。また Alarm history の画面からも赤線 (Alarm の Trigger Rule のライン、 80%) を超えていることが確認できます。
また、 Monitoring -> Alarm Status の画面からも、 Alarm が Warning で上がっていることが確認できます。
メール通知のほうも確認しておきます。Alarm が上がった直後、以下のようなメールが届いていました。メールの件名は Alarm の名前になっています。本文としては JSON 形式で送信されますので、パーサー等で処理しやすい形になっています。
このあと、先程の CPU 負荷がけ Process を止めると、以下の通り Alarm の定義も OK ステータスに戻ります。
また、メールのほうにも、 FIRING_TO_OK という形で、解消した旨のメールが届きました。
まとめ
今回は、OCI Monitoring の Alarm 機能を試してみましたが、なんとなく画面を見ながら設定し通知を受け取ることができました。メール通知に関しても、処理の自動化に組み込みやすい JSON で送られてきますので、監視状況をトリガーとした処理等も実装可能かと思います。
今度は PagerDuty 連携を試してみたいと思います。