使っていないAWSリソースを監視して自動削除するJanitor Monkeyを使ってみた

AWS運用自動化サービス「Cloud Automator」
この記事は1年以上前に書かれたものです。
内容が古い可能性がありますのでご注意ください。

 

皆さんこんにちは。テクニカルグループの山田です。
今回は、NetFlixがオープンソースで公開しているJanitor Monkeyを紹介します。

 

Janitor Monkey とは?

NetflixがOSSで公開している、AWSで使っていないリソース (Instance, AutoScalingGroup, EBS Volume, EBS Snapshot, Launch Config) を自動的に削除するツールです。
どのリソースを削除対象にするかどうかのルールや、削除するまでの日数など細かく設定可能で
リソース削除前にはメールで管理者へ通知することもできます。
また、Netflixは Janitor Monkey の他にも運用・テストで使えるツールをオープンソースで公開しており
インスタンス障害を引き起こすChaos Monkeyや、EC2のセキュリティグループなどを監視するSecurity Monkeyなどもあります。
Netflixのgithubページ

 
使うための下準備

JanitorMonkeyの動作には以下の環境が必要となるため、各自用意してください。

Javaの実行環境
“SIMIAN_ARMY”というSimpleDBのドメイン (各AWSリソースの情報を保存するため)
Production申請済みのSES、SESへのアクセス環境 (実行レポートをSESでメール送信するため)
IAMユーザ、アクセスキーID、シークレットアクセスキー
 
※IAMユーザの権限については以下のリンクを参考に設定してください。
https://github.com/Netflix/SimianArmy/wiki/Quick-Start-Guide#setup-user-or-role-policies

 

インストール作業
まず、インストールに必要なソフトウェアを用意します。

次に、公式のgithubからソースコードをダウンロードします。

ダウンロードしたものをビルドします。

BUILD SUCCESSFUL と出力されればビルド成功です。
インストールすると、○○ MonkeyというNetflixのツール群 (Simian Army) がインストールされます。

 

Janitor Monkeyの設定

設定ファイルをデフォルトから書き換えます。
設定ファイルは、インストールディレクトリ以下の ( ~/SimianArmy/src/main/resources/ )にあります。

まず、AWSリソースを監視する際に必要となるアクセスキーとシークレットアクセスキーと監視するリージョンを設定します。
設定するファイルは client.properties です。

次にChaos Monkey(インスタンス障害を意図的に起こすツール) と Conformity Monkey(ベストプラクティスから外れているインスタンスをシャットダウンするツールの設定をします。
今回は、Chaos Monkey と Conformity Monkey は使わないので無効にします。
まず、Chaos Monkeyを ( chaos.properties ) を無効にします。

Conformity Monkey ( conformity.properties ) を無効にします。

 
これでChaos MonkeyとConformity Monkeyは動作しなくなりました。
 
 
そして、今回の主役であるJanitor Monkey ( janitor.properties ) の設定をします。
 
・監視する時間の間隔とその時間の単位を設定

監視開始時刻と終了時刻とタイムゾーンを設定

・dryrunモードの有効無効の設定 (今回は動作確認のみなのでtrueに設定します)

監視対象にするAWSリソースを設定  (今回はSnapshotのみを監視対象にします)

監視結果レポートを送信するためのメール設定

リソース削除前の最後通告の日数を設定

※例えば6月27日に削除されるインスタンスがあるとして、この値が2に設定されていると6月25日にメールで事前に通知されます。

 

リソースの削除ルール設定

次にそれぞれのAWSの監視ルールです。
先ほど simianarmy.janitor.enabledResources で指定した、Snapshotの削除ルールを設定したいと思います。
Snapshotで指定するプロパティは3つです。

・Snapshotの監視を有効/無効

・どのAMIにも紐付いていない、かつ作成されてからこの日数が経過すると削除候補としてマークされる

・削除通知メールが届いてから削除されるまでの日付

Janitor Monkeyの設定は以上になります。
その他のAWSリソースの削除ルールを設定するプロパティはこちら (https://github.com/Netflix/SimianArmy/wiki/Janitor-Settings) にあります。

 

Janitor Monkeyの実行

さて、ひと通りの設定が完了したので早速実行しましょう。

SimianArmyディレクトリに移動して実行します。

Janitor MonkeyによるAWSのリソース監視が開始されます。

すると、設定ファイルで指定したメールアドレスに、以下の様な形式でAWSリソースの監視レポートが送られます。

markings for EBS_SNAPSHOT = 3  とあるので3つのSnapshotが削除候補としてマークされていることが分かります。

 

まとめ

普段から意識していても、ついつい忘れてしまうリソースの消し忘れをすべて自動で管理してくれるのは非常に魅力的ですね。
例え間違って削除条件を設定してしまってもメールで通知が来るので安心です。
個人的に使っているAWSアカウントにも使いっぱなしのリソースがあるので、これを機に大掃除しようかと思います。

AWS運用自動化サービス「Cloud Automator」