Monday, February 1, 2016

MacにMackerelをインストールして負荷を可視化する (OS X El Capitan‎)

サーバのリソース可視化サービスのひとつであるMackerelを使って、Macの負荷をグラフで見れるようにします。エージェントプログラムをMacにインストールして、データを送信するところまでやってみます。
上のグラフはCPUの使用状況をMackerelで見れるようにしたときのキャプチャです。他にも、情報が色々取れます。これらは、Macのアクティビティモニタでも取れる情報ではありますが、Mackerelだと無料枠で、1日分の情報を保存しておけるので、より大きな範囲の情報が見ることができます。たとえば、午前と午後でのPCの使いかたの違いなど、面白い発見があるかもしれません。

以下、Mackerelのエージェントソフト(mackerel-agent)のインストール方法です。
OSは、OS X El Capitanです。
brewをあらかじめ使えるようにしてある前提です。

brewでmackerel-agentをインストール
$ brew tap mackerelio/mackerel-agent
==> Tapping mackerelio/mackerel-agent
Cloning into '/usr/local/Library/Taps/mackerelio/homebrew-mackerel-agent'...
remote: Counting objects: 8, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 8 (delta 1), reused 4 (delta 0), pack-reused 0
Unpacking objects: 100% (8/8), done.
Checking connectivity... done.
Tapped 2 formulae (34 files, 140K)
$ sudo brew install mackerel-agent
==> Installing mackerel-agent from mackerelio/homebrew-mackerel-agent
==> Downloading https://github.com/mackerelio/mackerel-agent/releases/download/v0.27.1/mackerel-agent_darwin_amd64.zip
==> Downloading from https://github-cloud.s3.amazonaws.com/releases/19845168/6034e660-b61d-11e5-8055-d1fd7f0c32d6.zip?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAISTNZFOV
######################################################################## 100.0%
==> Caveats
You must append `apikey = {apikey}` configuration variable to /usr/local/etc/mackerel-agent.conf
in order for mackerel-agent to work.

To have launchd start mackerelio/mackerel-agent/mackerel-agent at login:
  ln -sfv /usr/local/opt/mackerel-agent/*.plist ~/Library/LaunchAgents
Then to load mackerelio/mackerel-agent/mackerel-agent now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mackerel-agent.plist
Or, if you don't want/need launchctl, you can just run:
  mackerel-agent -conf /usr/local/etc/mackerel-agent.conf
==> Summary
  /usr/local/Cellar/mackerel-agent/0.27.1: 4 files, 8.1M, built in 6 seconds
※ 以下のエラーが出るときは、Xcodeのライセンスに同意する必要があります。
You have not agreed to the Xcode license agreements, please run 'xcodebuild -license' (for user-level acceptance) or 'sudo xcodebuild -license' (for system-wide acceptance) from within a Terminal window to review and agree to the Xcode license agreements.
Error: Failure while executing: /usr/bin/otool -L /usr/bin/install_name_tool
表示に従ってコマンドを打ちます。
$ xcodebuild -license
ライセンスが表示されます。[q]で抜けます。
By typing 'agree' you are agreeing to the terms of the software license agreements. Type 'print' to print them or anything else to cancel, [agree, print, cancel] agree
ライセンスに同意するか聞かれるので [agree] と入力してEnter。
これでもう一度、mackerel-agentをインストールしてみてください。

設定ファイルを編集
MackerelのAPIキーをコピーして、apikeyを入力します。
$ sudo emacs /usr/local/etc/mackerel-agent.conf
apikey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

deamon化して自動で起動
launchctlの設定ファイル(plistファイル)が添付されているので、これを~/Library/LaunchAgentsディレクトリに配置。
launchctl loadでサービスを開始します。
$ sudo ln -sfv /usr/local/opt/mackerel-agent/*.plist ~/Library/LaunchAgents
$ sudo launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mackerel-agent.plist
プロセスを確認します。
$ sudo launchctl list | grep mackerel
8563 0 homebrew.mxcl.mackerel-agent
エラーログを確認します。
$ tail -f /usr/local/var/log/mackerel-agent.log
※以下の様なエラーが出ているときは、データの送信に失敗しています。設定ファイルのapikeyなどを見なおしましょう。
2016/01/29 11:20:15 INFO 
Starting mackerel-agent version:0.27.1, rev:06d85e6, apibase:https://mackerel.io 2016/01/29 11:20:15 WARNING API error. status: 401, msg: status code is not 200 2016/01/29 11:20:15 CRITICAL
Failed to prepare host: Failed to find this host on mackerel (You may want to delete file "Library/mackerel-agent/id" to register this host to an another organization): API error. status: 401, msg: status code is not 200
ストップするには以下のコマンドを打ちます。
$ sudo launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mackerel-agent.plist
$ sudo launchctl stop homebrew.mxcl.mackerel-agent
しばらくすると、Mackerelのコンソール上に情報が表示されてきます。
うまく表示されたでしょうか?

まとめ
MacにMackerelエージェントをインストールして、Mackerelでリソース情報を見れるようにしました。brewを使ってインストールできるので、Mackerelエージェント起動までの手順が少なくてよかったです。
MackerelのAPIの仕様がわかりやすいので、たとえば、室温や湿度センサーの情報をMacに入力して、Mackerelで見たりしたら面白そうだと思いました。

See Also
mackerel-agentをMacに簡単にインストール可能になりました、ホスト数の表示の改善しました・ほか - Mackerel ブログ #mackerelio
http://blog-ja.mackerel.io/entry/2015/02/27/141105
A launchd Tutorial
http://launchd.info/
Undocumented Mac OS X:第1回 initを置き換えるlaunchd【前編】 (1/3) - ITmedia エンタープライズ
http://www.itmedia.co.jp/enterprise/articles/0704/26/news009.html