Mackerelのグラフを端末で描画するコマンドmkrgを作りました

Mackerelのグラフを端末で見れたらいいなと思ったので作ってみました。

github.com

使い方

 $ go get -u github.com/itchyny/mkrg/cmd/mkrg
 $ mkrg

コマンドを叩くと、そのホストのメトリックを取ってきてグラフを表示します。 f:id:itchyny:20181014233825p:plain 何も考えずにコマンドを叩けば、システムメトリックのグラフを表示してくれます。 私はiTerm2を使っているので、とりあえずiTerm2では画像を表示できるようにしています。それ以外の端末では点字を使って頑張って表示します。 f:id:itchyny:20181017235153p:plain

Mackerel サーバ監視[実践]入門

Mackerel サーバ監視[実践]入門

似たような目的のコマンドとしては、同僚の作ったmkr-graphというコマンドがあります。 medium.com

実装

Mackerelは各種APIを揃えていて、中でもメトリックを取得するAPIを使うと、時系列データを引くことができます。 Mackerelのweb画面を見ながら必要なメトリックを調べて、データを引っ張ってきて、グラフに表示すれば完成です。

iTerm2での画像の表示は以下のページを見れば分かります。画像データをbase64で出力するだけなので、とても簡単です。 www.iterm2.com

一応Sixel用の実装も用意してますが動作は見てません。

点字文字コードですが、Braille Patterns - Wikipediaを読めばわかるように、\u2800をベースにして各点に対してビットを立てれば狙ったパターンの文字コードを得ることができます。ユニコードできちんと並んでいて助かります。

言語はGoを使っています。便利な言語です。

みんなのGo言語[現場で使える実践テクニック]

みんなのGo言語[現場で使える実践テクニック]

今後

一昨日から作りはじめてシュッと動いてくれてわりと満足しています。カスタムメトリックのグラフやロールグラフ、サービスメトリックのグラフなんかも表示できると楽しいかもしれません。

個人的には、iTerm2の画像を表示するAPIがすごい単純だということがわかったのが一番の収穫でした。

宣伝

はてなではシステムのメトリクスを見るのが好きなエンジニアを募集しています。