Sensuホストの状態をStatusPage形式で表示するWebアプリをGo言語で作ってみました.
名前の由来
前回のSensu CLIではohgi(扇)でした.
今回もsensu(扇子)に関係する単語ということで,chikurin(竹林)にしました.
Uchiwaとの比較
Sensu標準のダッシュボードであるUchiwaは,管理者向けではないかと思います.
(EventやClientの削除ができる,ClientやCheckの詳細情報を閲覧できる,など.)
そこで,一般ユーザ向けにStatusPage.ioのように表示できないかと考えました.
現在発生中のEventに限り,「いつから」と「監視結果」を見られるようにします.
各自に関係するサーバのページだけ教えておき,何かあったら見て貰うようにします.
Clientなどの一覧表示
Sensu配下にあるClientの一覧表示と,絞り込みも実装しました.
また,複数のSensu API(Datacenter)にも対応しているので,その一覧表示も可能です.
この機能は設定(~/.chikurin.json)で有効・無効を切り替えられます.
(show_datacentersとshow_clients.)
無効にすることで,関係しない・隠したい情報へのアクセスを制限できます.
chikurinの使い方
Releasesから最新版をダウンロードし,READMEを参考に設定を書いてください.
chikurinを実行すると,デフォルトで8000番ポートで起動します.
/がDatacenter一覧,/:datacenterがクライアント一覧,/:datacenter/:clientがStatusPageです.
また,chikurin {start|stop|status}でデーモンとしても使用可能です.
設定のlogでログファイルを指定すると,gojiのログを吐き出します.
Sensu status page by golang
https://github.com/hico-horiuchi/chikurin
Usage:
chikurin [flags]
chikurin [command]
Available Commands:
start Start chikurin daemon
stop Stop chikurin daemon
status Show status of chikurin daemon
version Print and check version of chikurin
help Help about any command
Flags:
-h, --help=false: help for chikurin
Use "chikurin help [command]" for more information about a command.
使ったライブラリ
- Rubyのbundlerライクにライブラリを
_venderにインストールする. - ライブラリを
Gomfileに列挙,グルーピングも可能.
- シンプルなWebアプリケーションフレームワーク.
-
net/httpと両立可能,Middlewareを簡単に実装できる(らしい).
- SlimライクなHTMLテンプレートエンジン,
templateを生成. - 後述のgo-bindata対応なのが嬉しい.
- プログラムを簡単にデーモン化できるが,機能は最小限.
- Assets(CSS, JS)やTemplateをバイナリに同梱する.
- Webアプリでもバイナリだけでデプロイ可能になる.

