何これ?
status == 'working'以外のhostsを全部retireさせます。
必要?
普通は必要無いかと思うんですが、AutoScale使ってると気づいたら数百のホストが登録されてたりするので、作りました。落ちるときに自分をretireさせる…とかの方がスマートでしょうけど、これはこれで手軽なので。
mackerelio/mackerel-client-rubyを使ってます。
当初、retire APIあっても動いてるのを特定できる情報無かったら意味無い!って思ってたんですが、statusが取れるので、地道に管理画面から固定サーバ全部のstatusをworkingに変更する事で区別つくようになったので、どうにかなりました。
ソース
# -*- coding: utf-8 -*-
# mackrel-client-ruby 0.0.2 使用
require 'mackerel'
client = Mackerel::Client.new(:mackerel_api_key => ENV['MACKEREL_APIKEY'])
client.get_hosts(service: 'service_name').each do |host|
# working以外で初期登録から一週間以上経過している
if host.status != "working" && host.createdAt < Time.now.to_i - (60 * 60 * 24 * 7)
p "retire host id:#{host.id}"
p client.retire_host(host.id)
end
end
https://gist.github.com/u1tnk/daa091e3f693b7c3faf1
見ての通りショボいですねw
まとめ
これ使って388hosts → 9hostsまで激減して超スッキリ!管理画面も軽い!
mackerel meetupでも訴えましたが、自動的にstatus変わるポリシーとか定義できる嬉しい。
- 10分生きてたらworkingに変更
- 10分死んでたら…に相応しいの無いですが、unknown的な感じ。
- 一週間死んでたら自動でretire
とか。
追記
起動してすぐに退役しちゃうのはどうか…という事で起動して一週間判定をつけました。