rubyでssh(Net::SSH) - 2
リモートサーバに接続して色々できるということなので、nagiosでリモートサーバのメモリ監視をする簡単なpluginを書いてみた。
ここでのsshの認証はパスワードが生になっているけど、運用で使うには公開鍵認証にしないとね。
#!/usr/bin/env ruby require 'net/ssh' # nagios exit code # exit status # 0 OK # 1 Warinig # 2 Critical # 3 Unknown def usage puts "usage: #{__FILE__} host user password warning critical" exit end usage unless ARGV.size == 5 host,user,password,warning,critical = ARGV[0],ARGV[1],ARGV[2],ARGV[3],ARGV[4] stdout = "" Net::SSH.start(host, user, :password => password) { |ssh| ssh.exec!("free") { |channel, stream, data| stdout << data if stream == :stdout } } total = free = percent = 0 stdout.each {|s| a = s.split total = a[1].to_i if a[0] =~ /Mem:/ free = a[3].to_i if a[1] =~ /cache:/ } percent = ((total - free) * 100) / total title = "Linux Used Memory - Free Command" if critical.to_i < percent puts "CRITICAL - #{percent}% | #{title}" exit 2 elsif warning.to_i < percent puts "WARNING - #{percent}% | #{title}" exit 1 else puts "OK - #{percent}% | #{title}" exit 0 end
上記をcheck_mem.rbというコマンドで$NAGIOSHOME/libexec以下あたりに置いておいて、commands.cfgにコマンド登録すればOK。
define command{ command_name check_mem_rb command_line $USER1$/check_mem.rb $HOSTADDRESS$ $ARG1$ $ARG2$ $ARG3$ $ARG4$ }