36
GainerとRubyで行うサーバ監視 CSNAGOYA 豊吉隆一郎

GainerとRubyで行うサーバ監視

  • Upload
    toyoshi

  • View
    6.997

  • Download
    0

Embed Size (px)

DESCRIPTION

サーバのロードアベレージが上がったらパトランプを点灯させるというシステムを作ってみました。

Citation preview

Page 1: GainerとRubyで行うサーバ監視

GainerとRubyで行うサーバ監視

CSNAGOYA 豊吉隆一郎

Page 2: GainerとRubyで行うサーバ監視

2

自己紹介

• 豊吉隆一郎(とよしりゅういちろう)• 1981年生まれ 名古屋在住• Blog http://www.jamboree.jp• フリーランスWebプログラマー• CSNAGOYA所属

Page 3: GainerとRubyで行うサーバ監視

3

CSNAGOYAについて

• カジュアルスタディ名古屋• http://www.jamboree.jp/cs/• 2007年2月11日発足• 毎週開催

Page 4: GainerとRubyで行うサーバ監視

4

今日の発表

Page 5: GainerとRubyで行うサーバ監視

5

GainerとRubyでつくるサーバの監視ツール

Page 6: GainerとRubyで行うサーバ監視

6

サーバ監視といってもいろいろある

何を監視するか

Page 7: GainerとRubyで行うサーバ監視

7

今回は

ロードアベレージCPUの処理待ちのプロセス数

Page 8: GainerとRubyで行うサーバ監視

8

1を超えると注意一概にそうとは言えないhttp://d.hatena.ne.jp/naoya/20070518/1179492085

Page 9: GainerとRubyで行うサーバ監視

9

サーバ監視普通のやりかた

Page 10: GainerとRubyで行うサーバ監視

10

有名なツール

HobbitNagios

SNMP+MRTGRRDTool+cacti

Page 11: GainerとRubyで行うサーバ監視

11

どう使われるか

緊急時に通知が来る

Page 12: GainerとRubyで行うサーバ監視

12

こういうメールがくる

Page 13: GainerとRubyで行うサーバ監視

13

あれ?

Page 14: GainerとRubyで行うサーバ監視

14

メール来るだけ?

Page 15: GainerとRubyで行うサーバ監視

15

地味じゃない?

Page 16: GainerとRubyで行うサーバ監視

16

緊急時というのは

Page 17: GainerとRubyで行うサーバ監視

17

有名アニメの例

Page 18: GainerとRubyで行うサーバ監視

18

有名海外ドラマの例

Page 19: GainerとRubyで行うサーバ監視

19

有名潜入ゲームの例

Page 20: GainerとRubyで行うサーバ監視

20

こうあるべき

Page 21: GainerとRubyで行うサーバ監視

21

そこで

Page 22: GainerとRubyで行うサーバ監視

22

「Gainer」

Page 23: GainerとRubyで行うサーバ監視

23

Gainerとは

• IOモジュールを中心としたフィジカルコンピューティングのための環境のこと

• 「ActionScript」「Max/MSP」「Processing」「Ruby」などから簡単にセンサやアクチュエータが扱える

公式サイト http://gainer.cc/

Page 24: GainerとRubyで行うサーバ監視

24

これを使って

Page 25: GainerとRubyで行うサーバ監視

25

ロードアベレージが上がったら

Page 26: GainerとRubyで行うサーバ監視

26

パトライトを点灯

Page 27: GainerとRubyで行うサーバ監視

27

テンション↑

Page 28: GainerとRubyで行うサーバ監視

28

製作物紹介

Page 29: GainerとRubyで行うサーバ監視

29

プログラム

Page 30: GainerとRubyで行うサーバ監視

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

Page 31: GainerとRubyで行うサーバ監視

31

回路図

Page 32: GainerとRubyで行うサーバ監視

32

Gainerのanalog outの信号を5Vに増幅してリレーのスイッチを切り替えている。

Page 33: GainerとRubyで行うサーバ監視

33

デモ

Page 34: GainerとRubyで行うサーバ監視

34

まとめ

• サーバのロードアベレージを監視し、状況に応じてパトランプを点灯させるシステムを構築した

• GainerとRubyを使うことにより、IOの制御がとても簡単に行えた

Page 35: GainerとRubyで行うサーバ監視

35

今後の課題

• 既存の監視システムはいくつもあるので、それらと組み合わせるという形で、安価なパトランプ点灯ツールとして完成させる。

Page 36: GainerとRubyで行うサーバ監視

36

ご清聴有難う御座いました