Nedia What's up!

ネディアのエンジニアによるIT技術やサービスの紹介・検証などをお届け!

CloudWatchでAWSの監視(後編)

前回はCloudWatchで、基本メトリクスを使って監視をすることができました。

後編の今回はカスタムメトリックスを使った監視を行ってみたいと思います。

カスタムメトリックスでの監視の流れ

大まかな流れとしては以下の通りです。

  • 監視したい項目に対する値を取得する
  • CloudWatchに送信する
  • CloudWatch側で値を解釈して適宜アラートメールを送信する

では、まず準備から行っていきます。

事前準備

aws-apitools-monのインストール

Cloudwatchへ値を送信するためのaws-apitools-monが必要ですのでインストールされているか確認します。

Amazon Linuxでは初期インストールされているようですね。

なければyumコマンドでインストールしておきます。

IAMでポリシーの作成

IAMのポリシーから、ポリシーの作成をクリックします。

cw02-03

Policy Generatorをクリックします。

cw02-04

AWSサービスから Amazon CloudWatchを選択しAmazonリソースネームからPutMetricDataをチェックし、分かりやすい名前を付けて保存しておきます。

今回は「CloudWatchPutMetricData」として保存しました。

cw02-05

CloudWatch用IAMユーザーの作成

次にCloudWatchへ値を送信可能なIAMユーザーを作成します。

IAMからユーザーをクリックし、新規ユーザーの作成に進みます。

cw02-01

ユーザー名は何でも良いのですが、分かりやすく「cloudwatch」としました。

cw02-02

ユーザー作成後に認証情報をダウンロードしておきます。AWSAccessKeyIdとAWSSecretKeyが後程必要になります。

先ほど新規作成したポリシー「CloudWatchPutMetricData」をアタッチしておきます。

cw02-06

作成したユーザーをEC2インスタンスに設定

テンプレートを使って先ほど作成したユーザーの認証情報を記述しておきます。

監視したい項目に対する値を取得する

さて、事前準備ができましたので監視設定を進めていきます。

良くあるケースとして、Apacheが正常稼働しているかどうかを監視する方法を考えてみたいと思います。

Apacheの死活監視を考える

Apacheのが正常に稼働しているかどうかを値によって判断すれば良いので様々な方法があると思いますが、以下のようにしてみました。

  1. Apacheの応答コードを取得する
  2. 応答コードが200であれば正常稼働とみなす
  3. 応答コードが200以外であれば異常とする

Apacheの応答コードを取得する方法

今回は単純にwgetを使ってApacheの応答コードを取得しました。

応答コードが200かどうかの判断

出力された結果を「200 OK」で検索し行数を取得します。

これで返り値が1であれば正常、0であれば異常であると判断できますね。

CloudWatchに送信する

上記の値を定期的にCloudWatchに送信します。

これを実現するには簡単なスクリプトを書きます。

このスクリプトをCRONで実行します。今回はテスト的に1分間隔で設定しました。

CloudWatch側で値を解釈して適宜アラートメールを送信する

先ほど作成したカスタムメトリックスは正常にCloudWatch側に送信されていると図のようにカスタムメトリックスがメニューに表示された状態になります。

cw02-07

では前回と同じようにアラームを作成してみたいと思います。

cw02-08

先ほど作成したカスタムメトリックスを選択します。

cw02-09

アラームのしきい値としてApache Statusが0の時にアラームを出すように設定します。

cw02-10

無事追加できました。今回は警告だけですが、復帰した場合にも通知を受けたい場合には、別途状態復帰のアラートメールを設定してください。

cw02-11

CloudWatchの苦手分野

設定の仕方が分かれば、監視対象をどのように数値化するかを考えれば良いので後は発想だけだと思いますが、他の監視ツールを使用していると不満足な点もあります。

  • データの保存期間が2週間だけであること
  • メールフォーマットが変更できない

特にメールフォーマットの部分ですが、何故か私の手元のAndroidでアラートメールを受信したら、メール内容が真っ白で分からないという現象が発生してしまいました。

恐らくHTMLメールのせいだと思うのですが、このあたりが解消できないと使いづらいように感じました。

以上のことから本格的に運用監視する場合にはZabbix等の方がまだ良いように感じました。

まとめ

2回に渡ってお送りしたCloudWatchいかがでしたでしょうか。

次回の私の更新ではこのCloudWatchと連携できるWAFについて記事にしたいと考えております。