Mackerel を使って10分でメトリクス監視を始める手順

# はじめに

[Mackerel](https://mackerel.io/) というと、皆さんこんなイメージをお持ちかもしれません。

* エージェントを入れないといけない
* サービス側で色々設定しないといけない
* 今ある値をグラフにして欲しいだけなのに

こんな風に思っておられるかもしれません。ですが Mackerel は独自のグラフを作るのであれば、大した設定もいらないし、エージェントをインストールする必要もないのです。

本記事では、今ある値を最速でグラフにする手順を示したいと思います。なお Mackerel のアカウントは既にある前提で説明します。今回は Twitter フォロワ数の増加をグラフにしてみたいと思います。

筆者は普段 Twitter でフォロワ数などを全く気にしない人なのですが、先日以降 Twitter の通知欄に「フォローされた」通知が沢山くるのを確認していました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">昨日は自分がプログラミングを始めた頃からずっと尊敬しているプログラマの1人 <a href="https://twitter.com/mattn_jp?ref_src=twsrc%5Etfw">@mattn_jp</a> さんに初めてお会いできたんだけど、緊張のあまり何か聞かなきゃと思って咄嗟に「なんでそんなに面白いんですか？」と聞いてしまった</p>&mdash; Shunya Shishido (@sisidovski) <a href="https://twitter.com/sisidovski/status/1203909552602636291?ref_src=twsrc%5Etfw">December 9, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">sisidovski さんの「尊敬していた」ツイート以降、何故かどんどんフォロワが増えてきてて「尊敬するってどんなプログラマだろう」みたいなお気持ちで皆さんフォロー頂いたのだろうけど、実際は単なるダジャレオジサンなので過度の期待をしてはいけない。</p>&mdash; mattn (@mattn_jp) <a href="https://twitter.com/mattn_jp/status/1204569080780320769?ref_src=twsrc%5Etfw">December 11, 2019</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

言ってしまうと、ここで「これ Mackerel Advent Calendar のネタにできる」と思いついてしまったのです。すいませんすいません。

# サービスを作る

ダッシュボードの Services をクリックし、画面右上の「サービスを追加」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/6d2b6eb2-0e39-b036-a451-6879e0bd8fe7.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/64ecd9b0-4c66-c1f9-6a47-a7005412e3a8.png)


サービス名に適当(後から変えられません)な名前を入力し「作成」をクリック。もうこれだけで Mackerel サービス側の準備が完了してしまったのです。

「なにそれ何もしてないじゃん！」

そうなんです。後は送信されるメトリクスに合わせて Mackerel が綺麗なグラフを生成してくれるのです。

# メトリックをポストする

ではさっそくメトリックをポストしましょう。画面の左 Services に先ほど作ったサービスが追加されているはずなので、そこをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/0535f3e5-16d0-46bb-3d4e-99519e95e08d.png)

「サービスメトリック」タブを選ぶと以下の様に表示されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/4b3775db-0774-3e7a-5948-fbb273075ad7.png)

メトリックをポストする為の curl コマンドのサンプルコードが書かれていて、既に本物の APIKEY まで埋め込まれているではないですか。超便利。

これを改造して自分の値をポストすればいいだけです。気をつけなければならないのは以下の通り。

* ポストする JSON は配列でなければならない
* name を付けなければならない
* name を XXX.YYY にすると XXX でグルーピングできる

「後からメトリクスを足したい」と思うことがあるかもしれないので、予めグループ名を考えておくと良いと思います。

詳しくは[ドキュメント](https://mackerel.io/ja/api-docs/entry/service-metrics)を参照ください。

今回はサンプルとして、Twitter のフォロワ数の推移をグラフにしてみます。seekmetrics-server というサービスから Twitter のユーザ情報を得て、jq でフォロワ数として数値化します。

あとは下記の様に送信するデータに埋め込むだけです。

```bash
#!/bin/bash

TWITTER_FOLLOWERS=$(/usr/bin/curl -s https://seekmetrics-server.herokuapp.com/api/v1/search -H 'Content-Type: application/json' --data '{"network":"twitter","term":"mattn_jp"}' | jq '.[0].followers')
/usr/bin/curl -s https://api.mackerelio.com/api/v0/services/twitter-followers/tsdb -H 'X-Api-Key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' -H 'Content-Type: application/json' -X POST -d '[{"name": "followers.twitter", "time": '$(date +%s)', "value": '$TWITTER_FOLLOWERS'}]'
```

めちゃくちゃ簡単ですね。cron で1日毎に起動しましょう。

3日待ってみたらこんなグラフが出来ました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/d5ad2fec-4a14-4f76-4e8d-ed7c2d4e7ea5.png)

ただこれ、もともと1万人以上 Twitter のフォロワがいるのでグラフの変化が分かりませんよね。そこでグラフ式を使います。

# カスタムグラフを作る

ダッシュボードに戻り、ギアアイコンをクリック

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/c91383ff-2832-23b8-bff3-953b49ac092a.png)

グラフアイコンをグリッド上にドロップします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/3ae4f854-c910-344d-711c-7837e28d1e42.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/47415a24-509c-3a83-621d-5c49e5897728.png)

式グラフを選択し、以下の式を入力します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/2455b22f-950d-8e00-e00a-6741cb579ced.png)

```
offset(service('twitter-followers', followers.twitter), -14900)
```

Mackerel のグラフで扱える式の一覧は以下から参照できます。

https://mackerel.io/ja/docs/entry/advanced/advanced-graph

作成をクリックすると、綺麗なグラフができあがりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665/773756f0-2a45-7f8e-a6c1-557eca448b97.png)


これを見る限り、sisidovski さんにツイート頂いた9日の2日後からの Twitter フォロワ数増加は、80～100 くらいだったのかなぁと推測できます。

# おわりに

Mackerel を使うと今ある値をメトリクスとしてグラフにする事ができます。また式グラフを使う事で独自のグラフを作成できます。超便利。