ゆるふわなリソース監視ツール作った
概要
監視したいサーバの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
ファイルに記載したユーザ名:パスワードで認証を突破しましょう。
すると以下のように確認できます。
本当に見るだけですね。
どうでもいいけどItamae
の勉強の残り香が。。。
デーモンを殺したい場合は以下の通りです。
$ simptus kill
所感
良い点
- ふわっとリソース監視できる。私はRaspberry Piに仕掛けてます。
- Agentlessだから対象ホストを汚さない。
悪い点
- SSHでコマンドを投げているので、intervalに1秒とか指定しても1秒毎に記録できない可能性がある。
- 初動がめっちゃくそ重い。
simptus
って叩くだけで1Core 100%とかになる。 - コードがはちゃめちゃ。とんでもないスパゲティコードになってる。
- 上記に伴って拡張性が皆無。
- 英語がダメ。
- 日本語もダメ。
悪いところを上げると止まらなくて私の心が折れるので、とりあえずこんな感じです。
とりあえず動く状態なので、もうちょっとでいいから(ツール的にもコード的にも)ちゃんとしたものになるように修正したいと思います。
Github
どうでもいいですが、名前の由来?は「Simple + Status」です。
Statusってちょっと意味違うような気が今してきました。
感想とかいただけるととてもうれしいです。 ご指摘いただけると泣いて喜びます。
そもそも、「その用途ならこんなツールあるよ」ってのがあったら、教えていただけるとうれしいです。