Mackerelにログインしてからなんとなくわかったつもりになるまで


## 概要

サーバ監視ツール[Mackerel](https://mackerel.io/ja/)にログインしてから
実運用の一歩手前までをまとめました。

入門記事としてご利用下さい。
とはいえ、日本語ドキュメントが充実しているので、そもそも学習コストは低いです。
記事に記載した作業も2時間以内には完了します。

## 準備

登録は[サインアップ](https://mackerel.io/signup)ページから行います。
（手順はひたすら書いてある手順に従うのみなので割愛）

2週間はトライアル期間として有料のStandardプランと同等に使用でき
期間が終了すると自動的に無料のFreeプランに切り替わるようです。
プライベートの用途であれば、無料プランでも十分事足ります。
（この場合、外形監視ができないのは残念）

試しに使ってみるにしても、監視する対象のサーバは必要です。
筆者はAWSのインスタンスを1個だけ立ててこの記事を書きました。

## やったこと

### 0. 2段階認証を設定する

実際に機能を使用する前に、自身のアカウントのセキュリティを担保します。
右上のメニューから「アカウント設定」を開き、その先で「2段階認証」を選択。
お好きなデバイス（アプリ）を使って設定を完了します。

![mockmockのダッシュボード_·_mockmock.png](https://qiita-image-store.s3.amazonaws.com/0/43116/863c385e-073e-de6b-36d3-f912bdd238d2.png "mockmockのダッシュボード_·_mockmock.png")

### 1. スタートガイドに従う

左側のメニューの中にさりげなくスタートガイドへのリンクがあります。

![amockmockのダッシュボード_·_mockmock.png](https://qiita-image-store.s3.amazonaws.com/0/43116/b5bec9ec-ae4b-cec4-5fe2-2b2342f0a148.png "amockmockのダッシュボード_·_mockmock.png")

クリックすると以下のような手順を紹介されるので、素直に従います。

1. 最初のオーガニゼーションを作成
2. 新規ホストを登録する
3. サービスを作ってみましょう
4. ロールをつくる
5. ホストにロールを紐付ける

手順の中でカタカナがいくつか出てきますが、まずはとにかく手を動かします。

作業はほとんどがご覧になっているコンソール上で済み、
唯一黒い画面などで作業する内容も、以下のように丁寧に説明されます。
自分に合った環境用のガイドを選択し、コピペベースで進められます。

![新規ホストの登録_·_mockmock.png](https://qiita-image-store.s3.amazonaws.com/0/43116/de8bbcc2-536b-7d48-26d2-6be7502bd460.png "新規ホストの登録_·_mockmock.png")


### 2. 「もう一歩進んだ使い方」を押さえる

上記の手順を終えるともうお祝いされてしまいますが
まだサーバの数値を取得できるようになっただけで、監視とは言えません。

「おめでとうございます！」の下にある2つの作業を行います。

* ホストやサービスなどの監視をする
* アラートの通知先を振り分ける

![Mackerelをはじめよう_·_mockmock.png](https://qiita-image-store.s3.amazonaws.com/0/43116/8de3da41-7fab-2679-17fd-1218a50c871e.png "Mackerelをはじめよう_·_mockmock.png")

アラート通知の検証ではメトリックを異常値にしたいため
[LinuxでCPU使用率を上げるコマンド](http://d.hatena.ne.jp/yohei-a/20141007/1412690972)を参考に作業しました。

通知先としてChatworkとSlackを試してみましたが
グラフをそのまま描画でき、見た目も直感的なSlackの方がオススメです。

![general___mockmock_Slack.png](https://qiita-image-store.s3.amazonaws.com/0/43116/aedcdd32-ca11-9597-dfca-8feb2bf6fb87.png "general___mockmock_Slack.png")


これで、サーバの特定の部分が異常状態になった際に
好みの方法で通知を行うことができるようになりました。

### 3. 用語を整理する

ドキュメント内に公式の[用語集](https://mackerel.io/ja/docs/entry/glossary)が存在します。
一息つきながら、「サービス」や「ロール」などのことばの意味と関係性を整理します。

### 4. 公式プラグイン集を導入する

ここまでの設定ではロードアベレージやcpuなどの
基本的なメトリックしか監視することができませんでした。

その他のミドルウェア監視などを行うために
Mackerelでは[公式プラグイン](https://mackerel.io/ja/docs/entry/howto/mackerel-agent-plugins)が提供されています。

[ソースコード](https://github.com/mackerelio/mackerel-agent-plugins)のREADMEに記載がある通り
Linux、Nginx、Redisなど、様々なミドルウェアの監視項目が提供されています。

例えばLinuxサーバの監視を行う際は、公式プラグインのインストール後に
以下のような設定を行います。（コメントアウトを解除するだけ）

```shell:/etc/mackerel-agent/mackerel-agent.conf
# Plugin for Linux
[plugin.metrics.linux]
command = "mackerel-plugin-linux"
```

これでスワップの状況やログインユーザ数など
Linuxに即したメトリックを取得することができるようになりました。

![ip-10-0-0-97_·_mockmock.png](https://qiita-image-store.s3.amazonaws.com/0/43116/eaca7ea9-f788-ea84-3970-d374837c37ea.png "ip-10-0-0-97_·_mockmock.png")


### 5. ログやプロセスの監視方法を学ぶ

Mackerelではメトリックだけではなく、ログやプロセスも監視できます。
この用途においても、[公式プラグイン](https://mackerel.io/ja/docs/entry/howto/mackerel-check-plugins)が提供されています。

インストールしたら、使用しているミドルウェアや設定に応じて
`mackerel-agent.conf`に記載し、監視を適用します。
これらを導入してもまだ物足りない場合には
[スクリプトによるチェック監視項目の追加](https://mackerel.io/ja/docs/entry/custom-checks)で対応するのが良さそうです。

## まとめ

ここまでの内容で、大抵のサーバは監視できると思います。
AWSのフルマネージドサービス、Heroku、Dockerなどの特殊な環境に関しても
[ヘルプ](https://mackerel.io/ja/docs/)の記事を読めば対応できそうです。

ドキュメントが充実しているだけではなく、触っていて気持ちいいUIなので
本来シリアスな監視の設定も楽しみながら設定することができました。