えいのうにっき

a-knowの日記です

Mackerel 新カスタムダッシュボードの便利tips・4選

この記事は、Mackerel アドベントカレンダー(全部CRE)の5日目の記事です。

先日リリースされた新カスタムダッシュボードですが、みなさん、活用してますか?!

mackerel.io

私もさっそく、自分で運用しているサービスのダッシュボードを作って毎日眺めてはニヤニヤするという日々を過ごしています(ダッシュボードフェチ)。

f:id:a-know:20181204180511p:plain
塗りつぶしばかりですみません汗

今日は、この新カスタムダッシュボードのちょっとした便利tips・4選、ということでご紹介したいと思います!

マークダウンウィジェットでの見出し表記が便利!

上記ダッシュボード内で以下のように書いている部分ですが、

f:id:a-know:20181204180551p:plain

おわかりのとおり、これは2つのマークダウンウィジェットで表現されています。内部的には↓こんなかんじで書いてます。

# Content
- [Pixela](#anchor=widget-content-Pixela)
- [grass-graph](#anchor=widget-content-grass-graph)
# Pixela
<hr>

このように書くことで、「ここからは Pixela に関するメトリックグラフだよ〜」と明示的に区切りとして表現できるだけでなく、さらにそこに対してアンカーを貼る( [Pixela](#anchor=widget-content-Pixela) みたいに書く)こともできちゃいます!便利!

数値ウィジェットには式も指定できる!

最新の値をデカデカとした数字で表示できる数値ウィジェット。これ、待望でしたよね!私も使ってます。

ホストメトリックやサービスメトリックを指定すると、そのメトリックの最新値を表示してくれるわけなんですが、これ、実は「式」を指定することもできます!「式」についてご存じない方は、以下のヘルプをご覧あれ。

mackerel.io

僕が運営しているサービスでは、その時その時のユーザー数をサービスメトリックとして投稿しています。ただ、こういうダッシュボードで見るときには、例えば「直近24時間でどれくらいのユーザー数が増えたのか」みたいな見方がしたい。

そんなときには、数値ウィジェットの「式」として以下のような式を指定してみてください。

alias(
    diff(
        service(<service_name>, <metric_namae>),
        timeShift(service(<service_name>, <metric_namae>), 1d)
    ), ユーザー数増分(24h前比較)
)

すると、こんな↓かんじで表示されます!

f:id:a-know:20181204180700p:plain

インパクトがあっていいですね!「この何時間かで、これだけのユーザーが増えたのか!」と、モチベーションアップにも貢献しそうです!便利!!

設定済みウィジェットは簡単に複製できる!

カスタムダッシュボードのウィジェットを作っていると、対象のメトリックだけが微妙に異なるウィジェットを大量に配置する、といった作業が必要になること、ありませんか??

そういうときは、作成済みのウィジェット上で Alt キーを押しながら、作成済みのウィジェットを選択すると、カーソルの種類が変化します。そのままドラッグ&ドロップすると、そのウィジェットが複製されるので、あとは変更したい点だけちょいちょいと変更してやることで、よりスムーズに目的のウィジェット群を配置することができるかと思います。便利!!!

まぁ、ヘルプに書いてあるんですけどね......。。

mackerel.io

ボードまるごとの複製も API でラクラク!

旧カスタムダッシュボードでは、 mkr (Mackerelのコマンドラインツール)でのエクスポート・インポート(YAML形式)に対応していましたが、新カスタムダッシュボードでは2018年12月現在、未対応です。ですが、Web API では既に対応をしています!

mackerel.io

ここでは、APIを使って既存のダッシュボードをまるっとコピーする、ということをやってみましょう。

まずは ダッシュボードの一覧取得API で、目的のダッシュボードの id を確認して......。。

$ curl -XGET "https://mackerel.io/api/v0/dashboards" -H 'X-Api-Key:<API_KEY>'
{"dashboards":[{"id":"<id>","createdAt":1542267592,"updatedAt":1543833594,"title":"Hobby Products","urlPath":"hobby-products","memo":"趣味プロダクトの主要メトリック"},{"id":(省略)

その id を指定して、そのダッシュボードの定義だけを ダッシュボードの取得API で取得。

$ curl -XGET "https://mackerel.io/api/v0/dashboards/<id>" -H 'X-Api-Key:<API_KEY>'
{"id":"<id>","createdAt":1542267592,"updatedAt":1543833594,"title":"Hobby Products","urlPath":"hobby-products","memo":"趣味プロダクトの主要メトリック","widgets":[{"type":"markdown",(省略)

このレスポンスを元に、 ダッシュボードの作成API をリクエストします。 id は自動採番されるので指定は不要です。

$ curl -XPOST "https://mackerel.io/api/v0/dashboards" -H 'X-Api-Key:<API_KEY>' -H "Content-Type: application/json" -d '{"title":"Hobby Products(コピー)","urlPath":"hobby-products-copy","memo":"趣味プロダクトの主要メトリック(コピー)","widgets":[{"type":"markdown",(省略)'

おっ。

f:id:a-know:20181204182603p:plain

おおっ。

f:id:a-know:20181204182738p:plain

おおおーっ。便利!!!!

まとめ

新しいカスタムダッシュボード、超見やすくてインターフェースも便利なように工夫しているので、どしどし使って、ばしばしフィードバックくださいです!!!(するとダッシュボードがより良いものになっていきます!!!)