黒縁眼鏡は海を飛ぶ

IT中心にそこはかとなく

ゆるふわなリソース監視ツール作った

概要

監視したいサーバのCPU使用率とメモリ空き容量をCUIでもWebGUIでも確認できるSimptusというツールを作りました。 Ruby製です。


何故作ったか

ミドルウェアの勉強やアプリ開発用に管理しているサーバのリソース監視を既存の監視ツールでやっていて、自分の用途だとオーバースペックかな?と思うタイミングがちょくちょくありました。
お勉強用のサーバなのでOSの入れ直しが少なくない回数発生することもあり、そのたびAgent入れるのも面倒だったので、じゃあRubyの勉強も兼ねてAgentlessなツール作ればいいじゃんというのが動機です。


何ができるのか

「ゆるふわな」の言葉通り、できることはCPU使用率(全コアの平均)とメモリ空き容量の確認だけです。
監視対象ホストにSSH接続してリソース情報を持ってくるので、Agentは必要ありません。


どう使うのか

gemとして配布していないので、Githubのページからcloneします。

$ git clone https://github.com/ryoana14/simptus.git
$ cd simptus
$ rake install
simptus 0.3.0 built to pkg/simptus-0.3.0.gem.
simptus (0.3.0) installed.

インストールできたらコマンドが生成されているはずです。

$ simptus
simptus command -d [INTERVAL](sec)  # Start command mode. Default interval is 600(sec).
simptus daemon -d [INTERVAL](sec)   # Start daemon mode. Default interval is 600(sec).
simptus help [COMMAND]              # Describe available commands or one specific command
simptus init                        # Initialize.
simptus kill -s [SIGNAL]            # Kill process of Simptus.
simptus server -p [PORT]            # Start web server
simptus status                      # Check Simptus's status

まずは初期化処理しましょう

$ simptus init

simptus initを実行すると、実行ユーザのホームディレクトリ配下に.simptusディレクトリが作成され、simptus.iniファイルとsimptus_authファイルも作成されます。
監視対象ホストの情報はsimptus.iniファイルに書いていきます。

[localhost]                 #監視対象ホストの名前
ip=127.0.0.1                #ホストのIPアドレス
user=hoge                   #SSH接続できるユーザ名
key=/home/hoge/.ssh/id_rsa  #SSH接続用の公開鍵

simptus_authファイルはWebGUI用の認証ファイルです。

username:password

初期化処理ができたらCUIモードで動かしてみましょう。 デフォルトだと600秒(!)間隔なので、短めに動かしてみます。

$ simptus command -d 3
Start Simptus Command mode at 3-second intervals
localhost, 4.79 %, 6123 MB

デーモンとしても動かせます。

$ simptus daemon -d 3
Start Simptus Daemon mode at 3-second intervals
テーブルが存在しないため、新規に作成します。

初回実行するとsqliteのDBがないので作成してくれます。 怪しい英語と日本語が混在していてなかなかにカオスですね。

デーモンの稼働状況も確認できたりします。

$ simptus status
Simptus is runnning.

動いている間は$HOME/.simptus/simptus.sqlite3にどんどんレコードを追加していくので、動かし続ける場合はディスク容量と相談するのがいいかと思います。

WebGUIも試してみましょう。

$ simptus server
Thin web server (v1.6.4 codename Gob Bluth)
Maximum connections set to 1024
Listening on localhost:3000, CTRL+C to stop

いつもお使いのWebブラウザで127.0.0.1:3000にアクセスしてみましょう。
認証ダイアログが出てくるので、simptus_authファイルに記載したユーザ名:パスワードで認証を突破しましょう。
すると以下のように確認できます。

f:id:ryo14_ana:20160321222052p:plain

本当に見るだけですね。
どうでもいいけどItamaeの勉強の残り香が。。。

デーモンを殺したい場合は以下の通りです。

$ simptus kill


所感

  • 良い点

    • ふわっとリソース監視できる。私はRaspberry Piに仕掛けてます。
    • Agentlessだから対象ホストを汚さない。
  • 悪い点

    • SSHでコマンドを投げているので、intervalに1秒とか指定しても1秒毎に記録できない可能性がある。
    • 初動がめっちゃくそ重い。simptusって叩くだけで1Core 100%とかになる。
    • コードがはちゃめちゃ。とんでもないスパゲティコードになってる。
    • 上記に伴って拡張性が皆無。
    • 英語がダメ。
    • 日本語もダメ。

悪いところを上げると止まらなくて私の心が折れるので、とりあえずこんな感じです。

とりあえず動く状態なので、もうちょっとでいいから(ツール的にもコード的にも)ちゃんとしたものになるように修正したいと思います。


Github

Simptus

どうでもいいですが、名前の由来?は「Simple + Status」です。
Statusってちょっと意味違うような気が今してきました。

感想とかいただけるととてもうれしいです。 ご指摘いただけると泣いて喜びます。

そもそも、「その用途ならこんなツールあるよ」ってのがあったら、教えていただけるとうれしいです。