Upload
toyoshi
View
6.997
Download
0
Embed Size (px)
DESCRIPTION
サーバのロードアベレージが上がったらパトランプを点灯させるというシステムを作ってみました。
Citation preview
GainerとRubyで行うサーバ監視
CSNAGOYA 豊吉隆一郎
2
自己紹介
• 豊吉隆一郎(とよしりゅういちろう)• 1981年生まれ 名古屋在住• Blog http://www.jamboree.jp• フリーランスWebプログラマー• CSNAGOYA所属
3
CSNAGOYAについて
• カジュアルスタディ名古屋• http://www.jamboree.jp/cs/• 2007年2月11日発足• 毎週開催
4
今日の発表
5
GainerとRubyでつくるサーバの監視ツール
6
サーバ監視といってもいろいろある
何を監視するか
7
今回は
ロードアベレージCPUの処理待ちのプロセス数
8
1を超えると注意一概にそうとは言えないhttp://d.hatena.ne.jp/naoya/20070518/1179492085
9
サーバ監視普通のやりかた
10
有名なツール
HobbitNagios
SNMP+MRTGRRDTool+cacti
11
どう使われるか
緊急時に通知が来る
12
こういうメールがくる
13
あれ?
14
メール来るだけ?
15
地味じゃない?
16
緊急時というのは
17
有名アニメの例
18
有名海外ドラマの例
19
有名潜入ゲームの例
20
こうあるべき
21
そこで
22
「Gainer」
23
Gainerとは
• IOモジュールを中心としたフィジカルコンピューティングのための環境のこと
• 「ActionScript」「Max/MSP」「Processing」「Ruby」などから簡単にセンサやアクチュエータが扱える
公式サイト http://gainer.cc/
24
これを使って
25
ロードアベレージが上がったら
26
パトライトを点灯
27
テンション↑
28
製作物紹介
29
プログラム
30
Rubyスクリプトrequire 'rubygems'
require 'net/ssh'
require 'funnel'
def get_load_average(str)
return str.slice(/load average: ([^,]+)/,1).to_f
end
module Funnel
la = 0.0
Net::SSH.start(ARGV[0], ARGV[1], :password => ARGV[2]) do |ssh|
la = get_load_average(ssh.exec!('uptime'))
end
if la > 2
gio = Gainer.new(Gainer::MODE1)
gio.aout(0).value = 1
sleep(300)
end
end
31
回路図
32
Gainerのanalog outの信号を5Vに増幅してリレーのスイッチを切り替えている。
33
デモ
34
まとめ
• サーバのロードアベレージを監視し、状況に応じてパトランプを点灯させるシステムを構築した
• GainerとRubyを使うことにより、IOの制御がとても簡単に行えた
35
今後の課題
• 既存の監視システムはいくつもあるので、それらと組み合わせるという形で、安価なパトランプ点灯ツールとして完成させる。
36
ご清聴有難う御座いました