Mackerel（マカレル）を使って自分のMacを監視して、アラートが発生したらslackに通知させてみる

最近はやりの[Mackerel](https://mackerel.io/ja/)を使って、自分のMacを監視してみます。（特にディスクの使用率は役立つかも・・・）
そして、監視設定を入れてMacに問題が発生すると、slackに通知させます。

その前に簡単にMackerelの説明をします。

# Mackerelとは
**エージェント常駐型**のサーバ監視ツールです。
ホストのリソース状況などをグラフに可視化し、障害発生時には自動でアラートが記録されます。
作成されたアラートは、

* メール
* [slack](https://slack.com/)
* [pagerduty](https://www.pagerduty.com/)

などと言った外部ツールと連携させ、通知することができます（連携も超かんたん！）

[API](https://mackerel.io/ja/api-docs/)も用意されており、chat opsが捗りそうです。
また、オリジナルのプラグインも自身で作成することができます。

## 料金は無料！

以下のプラン体系が用意されています。
Macを監視するなら、**無料枠（Trial, Free）**で十分！

<img width="975" alt="スクリーンショット 2016-08-05 10.39.24.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/062800de-5741-3197-8b24-52016d57343a.png">


# 監視するまでにやること（目安: 3分）
* [Mackerel](https://mackerel.io/ja/)にアクセスして、アカウント登録をしましょう。
<img width="687" alt="スクリーンショット 2016-08-05 10.37.44.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/0353deb8-d84a-e842-822b-6fb0acec367d.png">

* 次にオーガニゼーションの登録します
<img width="534" alt="スクリーンショット 2016-08-05 10.54.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/c6f29204-7b92-356b-546c-b5830bd30d90.png">


* 最後にプラン選択をします（ここでは、Trialプランを選びましょう！）
<img width="956" alt="スクリーンショット 2016-08-05 10.54.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/9f2abca4-235b-b7c4-3402-82b2f811e686.png">

* この画面が表示されたら一旦終わりです。
<img width="898" alt="スクリーンショット 2016-08-05 10.55.23.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/d215660e-c3aa-b676-3278-59e1eb2effb9.png">


# MacにMackerelの導入！（目安: 5分）
### brewからMackerelをインストールする

```sh:brewからMackerelをインストール
$ brew tap mackerelio/mackerel-agent
$ brew install mackerel-agent
```

### API KEYの設定をします。
自分のオーガニゼーションのAPI KEYを確認しましょう。

* 画面右上から[アカウント設定]をクリック
<img width="423" alt="スクリーンショット 2016-08-05 11.13.03.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/ad61e40c-386e-468e-2c76-14fdf82366ca.png">

* メニューからオーガニゼーションを選び、[設定]をクリックします
<img width="803" alt="スクリーンショット 2016-08-05 11.13.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/f1361781-c522-ce7f-5382-d113b29de8c0.png">

* タブから[APIキー]を選び、矢印で指しているボタンをクリックします
  * 自動でクリップボードにコピーされます。
<img width="903" alt="スクリーンショット 2016-08-05 11.13.41.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/0ba54a76-3428-9ba3-bd56-4bfc7be19271.png">

* `<API-KEY>`を、先ほどコピーしたAPI KEYに書き換えてコマンドを実行しましょう。


```sh:設定ファイルにAPI-KEYを追加する
$ echo 'apikey="<API-KEY>"' >> /usr/local/etc/mackerel-agent.conf
```

### LaunchAgentsに登録・起動する
* LaunchAgents とはログインしたユーザの権限で起動時にプログラムを実行するための機能です。
    * `launchctl`コマンドは、daemonやagentを管理することができます。

```sh:LaunchAgentsに登録・起動
# LaunchAgentsにシンボリックリンクを張る
$ ln -sfv /usr/local/opt/mackerel-agent/*.plist ~/Library/LaunchAgents

# 設定ファイルを読み込む
$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mackerel-agent.plist

# jobを開始
$ launchctl start homebrew.mxcl.mackerel-agent
```

これでmacを起動するたびに、`mackerel-agent`が自動で起動します。

# 導入後の確認
* [Hosts]をクリックします。そして、ホストが追加されていることがわかります。
<img width="739" alt="スクリーンショット 2016-08-05 11.33.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/f94559ec-b5b3-e7ae-d50a-ef450a75f200.png">

* 次に、ホスト名をクリックして、データが取れているか確認します（**反映までに10分くらいかかります**）
  * 正常にグラフが取れるとこんな感じにグラフが描画されます。
<img width="543" alt="スクリーンショット 2016-08-05 11.33.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/a53f8df7-d8a9-39ac-1500-c97cf578ac55.png">

# 監視ルールを入れる（目安: 3分）
* [Monitors]をクリックします
* 監視ルールには、`connectivity`がデフォルトで入っています。

では、新しく監視ルールを追加してみましょう。右上の[監視ルールを追加]をクリックします。
<img width="1114" alt="スクリーンショット 2016-08-05 11.40.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/6406bb59-8711-3db0-91e2-9733decccdf0.png">


手始めに、CPUに関する監視ルールを作成してみます。

* 監視対象のメトリックから「CPU %」を選択します。
* アラートの発生条件を入力します。
* 最後に[作成]を押して完了です！
<img width="462" alt="スクリーンショット 2016-08-05 11.44.49.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/2f54cf86-9c65-1ad6-c9f6-ad7049e02ea7.png">

# slackに通知させてみよう（目安: 5分）
## 設定
* [Monitors]をクリックします
* [チャンネル設定]をクリックします
<img width="938" alt="スクリーンショット 2016-08-05 11.50.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/0f95eac6-beeb-c100-a981-b179dc19147b.png">

次に、[通知グループ/通知チャンネルを追加]をクリックします。
<img width="886" alt="スクリーンショット 2016-08-05 11.52.35.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/fe9df716-78bd-243f-6616-e7d215423c52.png">

一覧からSlackを選択し、必要な情報を入力します

* URLの取得方法は下記を参考に！
    * https://mackerel.io/ja/docs/entry/howto/alerts/slack
    * アラート通知に使えるテキストは、slackの絵文字も利用できます（例えば、`:email:`など）
 
<img width="563" alt="スクリーンショット 2016-08-05 12.01.26.png" src="https://qiita-image-store.s3.amazonaws.com/0/49238/76d88111-11c0-f3ae-01e8-b8cd8a8ef3e7.png">

* 最後に、[作成]をクリックして完了です！

## アラートが起きると・・・slackに通知がきます。
![スクリーンショット 2016-08-05 13.23.57.png](https://qiita-image-store.s3.amazonaws.com/0/49238/15d15059-013c-0fe5-350e-f75aa91fdab8.png)

# まとめ
最近はやりのMackerelをMacに入れて監視する設定を入れました。
無料で試せるので、ぜひ皆さんも遊んでみましょう〜