ArchでのMackerel設定など

手元で管理しているLinuxは大抵Archディストリビューションを利用している。
Archでも正しく動作するし、取り立てて問題はなさそうだが備忘のためにメモしておく。

インストール

公式サイトから実行ファイルをダウンロードしてくる

https://mackerel.io/orgs/your-organization/instruction-agent

執筆時点での導入方法は以下のとおり

1
2
curl -O http://file.mackerel.io/agent/tgz/mackerel-agent-latest.tar.gz
tar xvzf mackerel-agent-latest.tar.gz

設定ファイル(mackerel-agent.conf)が同梱されているが、記法の参考程度にとどめておけば良さそう。
実際の設定ファイルは上記mackerelサイトに記載されている以下のようなコマンド

1
2
3
4
5
sudo sh << SCRIPT
cat >>/etc/mackerel-agent/mackerel-agent.conf <<'EOF';
apikey = "<your api key>"
EOF
SCRIPT

を実行する。

systemdのサービスとして登録する

mackerel-agent/mackerel-agentが実行ファイルだが、これをサービスとして利用可能にする。

/usr/lib/systemd/system/mackerel.serviceのようなファイルを作成し、以下のように編集する。

この設定を行っておくと、mackerel-agentファイルを直接実行する代わりに

1
2
sudo systemctl enable mackerel.serivce
sudo systemctl start mackerel.service

などで管理できるようになる。

公式プラグインを使ってみる

折角なので公式プラグインも使用してみる。
CentOSやDebianには公式パッケージが用意されているが、Archにはないのでビルドする。

mackerelio/mackerel-agent-plugins

Goの導入

Goが導入されていない場合はpacman経由で入れる。(gvm, goenvといったenv系を使っても良いかもしれない)

1
sudo pacman -Sy go

導入後、環境変数GOPATHを設定する。これはgo getなどでライブラリの置き場に使ったりするのだがどこでも良い。

1
2
export GOPATH="$HOME/.go"
export PATH="$GOPATH/bin:$PATH"

$HOME/.zshrcなどに追加しておく。

ビルドする

1
2
3
git clone https://github.com/mackerelci/mackerel-agent-plugins
cd mackerel-agent-plugins
make build
  • もし仮にgoxが無いと言われたらmake goxする。
  • buildフォルダが作られ、その中に各プラグインの実行形式ファイルが生成される。

mackerel-agent.confで使用するプラグインを指定する

今回はnginxのプラグイン(mackerel-plugin-nginx)を使ってみる。
対応するnginx側モジュールはngx_http_stub_status_module
pacmanで入るnginxでは有効になっている様子。

nginx.confにて、情報を出力するルートを設定する。例えば以下の通り。

1
2
3
location /basic_status {
stub_status;
}

nginxを再起動後、正しく情報が取れるかどうかを確認しておく。

1
./mackerel-plugin-nginx --host="<your domain/ip>" --port=80 --path="/basic_status"

TSV形式で情報が出力されていればOK。
続いて/etc/mackerel-agent/mackerel-agent.confを編集する。

1
2
[plugin.metrics.nginx]
command = "/opt/mackerel-agent-plugins/build/mackerel-plugin-nginx --host='<your domain/ip' --port=80 --path='/basic_status'"

mackerel.serviceを再起動し、mackerelのWebページを確認する。