1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Oracle Cloud] リソースを監視して Slack に通知してみた (Load Balancer 編)

Posted at

はじめに

Oracle Cloud 上で作成したリソースの死活監視ってどんな具合にされていますか? Oracle Cloud 標準機能の Monitoring, OMC, Mackerel, Zabbix などなど、いろいろな選択肢があります。Monitoring は、Oracle Cloud のサービス群と統合されており、簡単にアラート設定が出来ます。名前が一般用語で紛らわしいですが、「Monitoring」という名前のサービスです。アラート設定の通知先は、メール、Slack、Pagerduty、Webhook とよく使われているものが簡単に設定できます。運用していく中で、障害を検知するのは非常に重要な機能です。運用に組み込みやすい、Monitoring 機能を紹介していきます。

今回は、OCI Load Balancer のバックエンドに設定している Web Server 群の中で、1個でも Unhealthy (通信不可) となったものを検知して、自動的に Slack に通知する手順を紹介します。

LB 構成について

すでに次の構成が出来上がっている状態から、アラームの設定をしていきます。

  • Load Balancer 1台
  • Backend Webserver 2台 (Nginx) : HTTP 80 Port

Monitoring Service Metrics の確認

まず、Monitoring 機能でどういったメトリックが取得できるか見てみましょう。Monitoring > Service Metrics を選択します。

1599603157925.png

oci_lbaas を選択します。

1599603305340.png

表示された画面は、Tokyo Region 内の全ての Load Balancer のメトリックが表示されています。1 個の Load Balancer にフィルターをしたいので、Add を押します。

1599603375410.png

対象の Load Balancer の OCID を選択して、Done を押します。Load Balancer の名前では選択できないので、事前に OCID をメモっておく必要があります。

1599603460864.png

これで、指定した Load Balancer のたくさんの Metrics が確認できます。どれも便利そうですが、特に便利そうなものを太字にしています。

  • Inbound Requests : リクエスト数
  • Active Connections : コネクション数
  • Active SSL Connections
  • Bytes Received
  • Bytes Sent
  • Accepted Connections
  • Handled Connections
  • Failed SSL Handshakes : SSLハンドシェイクのエラー。証明書の有効期限切れを検知出来そう
  • Accepted SSL Handshakes
  • Failed Client SSL Cert Verifications
  • HTTP Responses
  • HTTP 200 Responses
  • HTTP 2XX Responses
  • HTTP 3XX Responses
  • HTTP 4XX Responses : エラーがあまりにも多いと、何かがおかしいことが検知できそう
  • HTTP 5XX Responses
  • HTTP 502 Responses
  • HTTP 504 Responses
  • Backend Servers
  • Unhealthy Backend Servers : Backend への通信が出来ないサーバーの数
  • Average Response Time (HTTP Only)
  • Average Response Time (TCP Only)

1599603687166.png

Slack Incoming Webhook の生成

次に、Slack へ通知するために、Incoming Webhook の URL を生成します。以下のURLを参考にどうぞ。

自分の場合はこんな感じです。

1599606210651.png

Notification

Slack へ通知するために、Notification の設定をしていきます。Notification を選択します。

1599604528407.png

Create Topic を押します。

1599604562923.png

Name や Description を適当に入れます。

1599604769194.png

Create Subscription を押します。

1599604812386.png

Protocol に Slack, URL に WebHook の URL を指定して、Create を押します。

1599606492824.png

PENDING となります。

1599606687487.png

Pending になったと同時に、Notification から確認メッセージが Slack に到着します。URL をクリックして確認してね、という内容です。

1599606761685.png

URL をクリックして、 Confirmed にします。

1599606809957.png

Alarm

ここまでの設定で、Slack へ通知が出来るようになりました。次に、実際のアラームの条件を作っていきます。

1599607000897.png

Create Alarm を押します。

1599607044778.png

各種パラメータを入れて、Save alarm を押します。

一番気にしたほうがいいのが、Alarm Body です。Slack へ通知されるメッセージの本文となるので、わかりやすい説明を入れましょう。自分の場合は、該当の Load Balancer の詳細画面 URL を埋め込んでいます。Slack から直接リンククリックで飛べるので、便利に使えます。

Sample です。URL の前後に半角空白を入れると、Slack の画面上でクリックがしやすいので、おすすめです。

ロードバランサー : test01  のバックエンドに、何かしらのエラー発生しています。こちらのリンクをご確認ください 
 https://console.us-ashburn-1.oraclecloud.com/load-balancer/load-balancers/ocid1.loadbalancer.oc1.ap-tokyo-1.aaaaaaaad2omcimsaanugevw2fesgcyxmvxtb2hj4g5zxmu62nzguazeudbq/metrics 

1599608363678.png

アラームテスト

設定完了です。これで実際にアラームを起こすために、Backend Server の Nginx 停止してみます。
停止してから数分待つと、Slack に自動的にこのようなメッセージが通知されます。Notification からのメッセージとなるので、いろいろなメタデータを含めたメッセージになっています。

もし、更に見やすい形で整形したいときは、Oracle Functions という名前のサーバレスサービスを使って、コーディングしていくと出来ます。今回は取り上げませんので、もし興味があれば検索してみてください。

1599609554698.png

Slack 上の URLをクリックすることで、詳細画面を開きます。これで、検知から確認までの動線が楽になります。

1599610043405.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?