EC2 Reserved Instanceの有効期限をAPIで管理する
EC2 Reserved Instanceの有効期限が切れた通知って僕の知る限りはメールで来ないんですよね。カレンダーに登録しとくとかタスク管理ツールに入れとくとかすればいいんですがAPIを使ってcronで毎日確認する方法もあるので軽く書いてみた。引っかかったインスタンスの情報をタスク管理ツールのAPI叩いて登録するのが一番スマートですかね。
rubyでの例。
$ gem install aws-sdk
#!/usr/bin/env ruby require 'aws-sdk' Aws.config.update({ region: 'ap-northeast-1', credentials: Aws::Credentials.new( 'your_key', 'your_secret' ) }) # activeなReserved Instanceを取得 ec2_client = Aws::EC2::Client.new resp = ec2_client.describe_reserved_instances({ filters: [{ name:'state', values:['active'] }] }) # 有効期限が1ヶ月以内だったらアラート resp.reserved_instances.each do |instance| if instance.end < Time.now + 60 * 60 * 24 * 30 puts "リザーブドインスタンス:#{instance.reserved_instance_id} は1ヶ月以内に有効期限切れますよー" end end
リンク
Atom上でWindows Explorerぽく動作するfile-explorerというパッケージを書いた
Problem
github製のテキストエディターであるAtomにはデフォルトでfuzzy-finderというファイル探索機能がありファイル名を入力すればどこにあるファイルでも見つけることができる。これはとても便利なのだが、Railsなどで開発をしてると開いてるファイルと同じディレクトリ、親ディレクトリ、子ディレクトリにあるファイルが開きたくなる。左カラムに表示されるtree-viewで探せば見つかるのだが巨大なプロジェクトにもなると探すのが結構大変なので困っていた。
Solution
Windows Explorerみたいな動きをするfile-explorerというパッケージを作りました。
下記のコマンドが使えるようになります。
How to use
カレントディレクトリを開く(cmd-alt-n
)
Editorが現在開いてるファイルの親ディレクトリをSelectListViewで開きます。
親ディレクトリを基準にして、その中に存在する全てのファイル、ディレクトリが表示されます。
また親ディレクトリの親が..
で表示されます。
入力エリアに文字を入力
fuzzy-finderと同じようにファイル、ディレクトリの絞り込みを行えます。
親ディレクトリを選択 or cmd-[
選択した親ディレクトリを基準にして、SelectListViewで開き直します。
ファイルを選択
ファイルを新しいタブで開きます。
子ディレクトリを選択
選択した子ディレクトリを基準にして、SelectListViewで開き直します。
プロジェクトのルートディレクトリを開く(cmd-shift-h
)
プロジェクトのルートディレクトリを開きます。 ルートディレクトリに存在する全てのファイル、子ディレクトリが表示されます。
Passengerでゾンビプロセスを殺す時のベストプラクティス
Passenger EnterpriseでRollingRestartを有効にしているとworkerプロセスがゾンビになって再起動してもプロセスが死なない時がある。
下記のケースではPID24388がtmp/restart.txtをtouchしても死なない状況である。
$ passenger-status Requests in queue: 0 * PID: 24388 Sessions: 1 Processed: 9691 Uptime: 10h 36m 45s CPU: 3% Memory : 104M Last used: 2s ago * PID: 14112 Sessions: 0 Processed: 1148 Uptime: 1h 17m 31s CPU: 3% Memory : 57M Last used: 1m 0s ag * PID: 14121 Sessions: 0 Processed: 1327 Uptime: 1h 17m 30s CPU: 4% Memory : 57M Last used: 1m 4s ag * PID: 14136 Sessions: 0 Processed: 1175 Uptime: 1h 17m 27s CPU: 3% Memory : 54M Last used: 3s ago * PID: 14159 Sessions: 0 Processed: 1219 Uptime: 1h 17m 23s CPU: 3% Memory : 54M Last used: 58s ago * PID: 14185 Sessions: 0 Processed: 945 Uptime: 1h 17m 20s CPU: 2% Memory : 53M Last used: 5s ago
こういう場合まず最初に思いつくのがkillコマンドを使う事だがその場合運悪くそのプロセスと通信していたクライアントにはエラーを返してしまう。Passenger-4.0.37以上のバージョンを使っているならpassenger-config detach-processコマンドが使えるのでこちらを使うべきだ。
Phusion Passenger 4.0.37 released – Phusion Corporate BlogPhusion Corporate Blog
$ passenger-config detach-process 24388 Process 24388 detached.
問題なくゾンビプロセスは消えてなくなります。
$ passenger-status Requests in queue: 0 * PID: 14112 Sessions: 0 Processed: 1148 Uptime: 1h 17m 33s CPU: 3% Memory : 57M Last used: 1m 0s ag * PID: 14121 Sessions: 0 Processed: 1327 Uptime: 1h 17m 32s CPU: 4% Memory : 57M Last used: 1m 4s ag * PID: 14136 Sessions: 0 Processed: 1175 Uptime: 1h 17m 29s CPU: 3% Memory : 54M Last used: 3s ago * PID: 14159 Sessions: 0 Processed: 1219 Uptime: 1h 17m 25s CPU: 3% Memory : 54M Last used: 58s ago * PID: 14185 Sessions: 0 Processed: 945 Uptime: 1h 17m 22s CPU: 2% Memory : 53M Last used: 5s ago