LoginSignup
3
3

More than 5 years have passed since last update.

AWS VPN接続ステータスグラフをCloudWatchカスタムメトリクスで表示する

Last updated at Posted at 2016-04-19

VPN接続のステータスをグラフで確認したい

AWSのVPCにてVPN接続をする場合、現在の接続状況についてはマネジメントコンソールやAPIで確認することができます。しかしながら、過去の記録については確認する方法が提供されていません。
このため、過去の接続状況を確認するためには、カスタマーゲートウェイ(CGW)側のログ確認やSNMPを用いたグラフ作成を別途する必要があります。

障害の切り分けをするためにCGWのログを確認するのは仕方ないとしても、CloudWatch Alarm + SNSを用いた障害通知等は別サーバを用意せずに実現したいものです。

本ドキュメントでは、AWS Lambda を用いてVPN接続のステータスを CloudWatchカスタムメトリクスとして作成する方法について解説します。

構成

はじめに、全体的なシステム構成について解説します。

  • Lambda Function
    • VPN接続のステータスを取得し、CloudWatchカスタムメトリクスにPutします
    • Event sourceとして、CloudWatch Events(Schedule)を利用します。5分毎に、Lambda Functionを実行します
  • CloudWatch Custom Metrics
    • Lambda FunctionからPutされたカスタムメトリクスを、CloudWatchのマネジメントコンソールにて表示することができます

CloudWatchカスタムメトリクス

CloudWatchカスタムメトリクスって何?という人は、こちらのドキュメントをご参照いただくと良いと思います。
【AWS発表】 クラウド監視サービスAmazon CloudWatchでカスタムのメトリクスが使用可能に
ザックリと説明すると、CloudWatchカスタムメトリクスは、ユーザ側で自由にCloudWatchのメトリック(グラフ)を作成できる機能です。昔ながらのサーバ管理ではSNMP+MRTG(Cacti等)を用いたグラフの作成が一般的でしたが、CloudWatchを使えば、同等の機能を簡単に実現できます。
2015年10月からはCloudWatch Dashboardの提供も開始され、Mackerel風な、見た目の格好良いダッシュボードでサービスの一括監視をすることもできるようになりました。CloudWatchは、うまく使いこなせば他のサーバ管理ソフトウェアが不要になるくらい便利なサービスだと思います。

【AWS発表】CloudWatch Dashboards – メトリックビューのカスタマイズ

構築手順

VPN接続のステータスグラフを作成する手順について解説します。

IAM Roleの追加

はじめに、Lambda Functionを実行するためのIAM Roleを作成します。IAMマネジメントコンソールにログインし、次のようなRoleを作成します。

  • ロール名
    • lambda-vpn
  • アクセス許可
    • AmazonEC2ReadOnlyAccess (VPN接続のステータスを確認するために用います)
    • CloudWatchFullAccess (CloudWatchカスタムメトリクスへPutするために用います)

Lambda Function

つぎに、Lambda Functionを作成します。
2016年4月からは Node v4.3.2 が使用できるようになりましたので、0.10を使っている人は次のように、nvmコマンド等にて新バージョンに移行する方が良いと思います。

$ nvm install 4.3.2
$ node --version
v4.3.2

Lambda Functionのソースコードについては、github上にアップロードしております。

次のコマンドにて、Lambda Functionのアーカイブを作成します。

$ git clone https://github.com/sogabe/aws-vpn-status.git
$ cd aws-vpn-status
$ npm install -save async
$ zip -r ../vpn-status.zip .

$ aws s3 cp ../vpn-status.zip s3://(bucket-name)/vpn-status.zip
  (S3からアプリをアップロードする場合のみ実行します。ローカルPCからアップロードする場合は不要です。)

アプリのzipファイルを作成したら、つぎにLambdaマネジメントコンソールにて Lambda Function を登録します。
つぎのパラメタを用いてLambda Functionを追加すると良いです。

  • Runtime
    • Node.js 4.3
  • Handler
    • vpnstatus.handler
  • Role
    • lambda-vpn (IAMコンソールにて作成したlambda実行用のRole名)
  • Advanced Settings
    • Timeout を10秒に設定します(Defaultの3秒だと、時間内にFunctionの実行が完了しない可能性があります)

Lambda Functionの登録後、Testボタンを押して、LogにVPNステータスが出力されることを確認します。

つぎに、Event sourceを登録します。
Event sourcesタブを選択し、"Add event source"をクリックします。Event source typeとして "CloudWatch Events - Schedule"を選択し、Schedule expressionとして "Rate (1 minute)" を選択します。Lambdaのコストを抑えたい場合は、Rateを 5 minutes にすると良いでしょう。

VPN接続ステータスグラフを確認

しばらく待つと、CloudWatchマネジメントコンソールに "vpn_status" という名前のカスタムメトリックが現れます。こちらを選択すると、各VPN接続のステータスグラフを見ることができます。

cloudwatch-custom-metric-vpn.png

3
3
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
3
3