mackerel.io のグラフをターミナルで見る mkr-graph を書いた

Mackerel は言わずと知れたサーバ管理、監視のサービスです。ブラウザから綺麗なグラフを見れるのが特徴ですが、ブラウザで URL を開いたり、切り替えたりするのが面倒なこともあります(ディスプレイサーバがなくて GUI が使えない場合もありますね)。

GitHub — i2tsuki/mkr-graph: Draw lightweight ASCII line graph in your terminal from mackerel.io metrics.

コマンド実行の様子を見てもらうのが早いと思います。

$ go get github.com/i2tsuki/mkr-graph
$ export MACKEREL_APIKEY="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
$ HOSTID="xxxxxxxxxxx"
$ mkr-graph describe --host ${HOSTID}
custom.linux.ss.SYN-RECV
custom.ec2.cpucredit.surplus_charged
..
$ mkr-graph describe --host ${HOSTID} | grep -E '^cpu' --color=none | mkr-graph show --host ${HOSTID}
1.00 ┼
0.92 ┤
0.83 ┤ ╭╮
0.75 ┤ ╭╮ ╭╮ ╭╮╭╮ ││ ╭╮
0.67 ┤ ││ ╭─╮ │╰╮││││╭──╯│╭╮╭───╯│╭
0.58 ┤╭──╮╭───╮╭──╮ ╭─╯│ ╭╯ │ ╭─╮ ╭───╮│ ╰╯╰╯╰╯ ││╰╯ ││
0.50 ┤│ ╰╯ ╰╯ ╰─╯ ╰─╯ ╰────╯ ╰─╯ ╰╯ ╰╯ ╰╯
0.42 ┼╯
0.33 ┤
0.25 ┤
0.17 ┤
0.08 ┤
0.00 ┤
cpu.system.percentage
1.19 ┼ ╭╮
1.09 ┤ ││
0.99 ┤ ││
0.89 ┤ ││
0.79 ┤ ││
0.69 ┤ ││
0.60 ┤ ││
0.50 ┤ ││
0.40 ┤ ││ ╭
0.30 ┤ ││ ╭╮ │
0.20 ┤ ││ ╭╮ ╭╮ ││ ╭╮ ╭╮ ╭╮ │
0.10 ┤ ╭╮ ││ ╭╮ ││ ││ ││ ╭╮ ││ ││ ││ │
0.00 ┼─╯╰───╯╰───╯╰───╯╰───╯╰───╯╰───╯╰───╯╰────────╯╰───╯╰───╯
cpu.steal.percentage
..
# フォントによっては綺麗に表示されていないかもしれません

こんな風に CPU のメトリックの一覧を描画することができます。

GitHub — guptarohit/asciigraph: Go package to make lightweight ASCII line graph ╭┈╯ in command line apps with no other dependencies. が話題になったちょうど 1 ヶ月前くらいに適当にコードを書こうかと思ったのですが、モダンなコマンドの実装を考えはじめて kubectl のソースコードを読んでいました。そちらがいつの間にかメインになってしまい(+ その間に誰かが書くんじゃないかと思っていたりで)コードを放置していたのですが、会社の期末になったところで手を動かして形にしました。

現状は Web での見た目と異なり、一つのメトリックしか 1 つのグラフの中にしか描画できなかったり、色がなかったり、自動でメトリックが更新されなかったりと足りない部分があるのですが、描画はパッとできるので気軽に見たいときには便利です。

というわけで、足りない機能はこれからということで今回は骨格を書きました。やりたいこと、できることは色々増やしていけると思うので、これからも少しずつ手を加えていきたい(asciigraph パッケージに手を入れていきたい)と思います。