stefafafan の fa は3つです

"すてにゃん" こと id:stefafafan のブログです

ISUCON向けにMackerelやMackerelのプラグイン導入

ISUCONでMackerel使いたいとなったときのための手順です。
isucon.net
mackerel.io

OSはUbuntuという前提で書きます。

mackerel-agent 入れる

https://mackerel.io/orgs/{ORG_NAME}/instruction-agent 辺りにエージェント入れるためのコマンドが載ってるのでそれを全てのサーバ上で実行する

# こんな感じのコマンドが載ってるはずです
$ wget -q -O - https://mackerel.io/file/script/setup-all-apt-v2.sh | MACKEREL_APIKEY='YOUR_API_KEY' sh

ISUCONではサーバが3台くらい与えられたりするので、全台で同時にこのコマンド実行できるようにしておくと便利 (Broadcast Input)。上記叩いただけでしばらくするとMackerel Web UI上にホストが登録されます。

mackerel-agentのログを見たり再起動したり

エージェントインストール終わったら勝手に起動してるはずで、journalctlで様子が見れます。

$ sudo journalctl -u mackerel-agent.service

再起動とかはsystemctlで

$ sudo systemctl restart mackerel-agent

mackerel-agent-plugins導入

ISUCONだとMySQLやnginxのメトリックもより詳細にみたくなるので、mackerel-agent-pluginsを入れる。これも全台で実行する。

mackerel.io

Ubuntuの場合はこれで公式プラグインが全部入って、パスも通るためおもむろに mackerel-plugin-mysqlとかを手で実行できる

$ sudo apt-get install mackerel-agent-plugins
mackerel-plugin-mysql

デフォルトの状態ではusernameやpasswordが指定されてなくてISUCONのWebサービスのDBに繋がらないはずなので、アプリのDB接続情報を調べてから以下のようなコマンドで試す。

# usernameとpasswordがともにisuconのことが多そうだけどそうとは限らないかも
$ mackerel-plugin-mysql -username=isucon -password=isucon

上記実行したら標準出力にメトリックの数字が表示されるので、よさげであれば /etc/mackerel-agent/mackerel-agent.conf を書き換える。全台同時にやりましょう。

$ sudo vim /etc/mackerel-agent/mackerel-agent.conf
- # [plugin.metrics.mysql]
- # command = "mackerel-plugin-mysql"
+ [plugin.metrics.mysql]
+ command = "mackerel-plugin-mysql -username=isucon -password=isucon"

confの中身は最初全部コメントアウトされているので、plugin.metrics.mysql の部分のコメント外しつつ、commandとしてはさっき試して上手くいったコマンドを貼り付ける。

上記の状態でmackerel-agentを再起動してログを見て、エラーでてなさげなら少し待てばMackerel Web UIのホストの画面にMySQL系のメトリックが「カスタムメトリック」として増えているはず。

$ sudo systemctl restart mackerel-agent
$ sudo journalctl -u mackerel-agent.service
mackerel-plugin-nginx

mackerel-plugin-nginxは /nginx_status を叩いてメトリックを取得するという形になっているため、nginx.confのどこかにこのエンドポイントを定義し、nginx再起動します。

# こういうのを書き足す
server {
    listen 8080;
    server_name localhost;
    location /nginx_status {
        stub_status on;
        access_log off;
        allow 127.0.0.1;
        deny all;
    }
}

nginx再起動し、curlで確認

$ sudo systemctl restart nginx
$ curl http://localhost:8080/nginx_status

上記完成したら、引数なしで mackerel-plugin-nginx がメトリック返すようになる。

$ mackerel-plugin-nginx

あとはmackerel-agentのconfを再度コメント外し、再起動するとMackerelのWeb UIでカスタムメトリックとして増える。

$ sudo vim /etc/mackerel-agent/mackerel-agent.conf
- # [plugin.metrics.nginx]
- # command = "mackerel-plugin-nginx"
+ [plugin.metrics.nginx]
+ command = "mackerel-plugin-nginx"
$ sudo systemctl restart mackerel-agent
$ sudo journalctl -u mackerel-agent.service