5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

[小ネタ]mackerel-client-rubyを使って一括retireさせるスクリプト

Last updated at Posted at 2014-06-25

何これ?

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
    とか。

追記

起動してすぐに退役しちゃうのはどうか…という事で起動して一週間判定をつけました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?