Mackerel のカスタムメトリックプラグインをサービスメトリックに連携
この記事は Mackerel Advent Calendar 2020 の 6 日目の記事である。
Mackerel ではカスタムメトリックプラグインを利用することで自分たちに必要なミドルウェアのメトリックを収集できることだと考えている。Mackerel エージェントをインストールした状態ではシステムメトリックのみの取集となるため、必要なミドルウェアのメトリックを取集するためには、カスタムメトリックプラグインを利用することになる。カスタムメトリックは下記から探すことができるはず。
- 公式プラグイン集
- 公式プラグインレジストリ
- 登録されているプラグインは少ないかも…
- GitHub で検索
有益なカスタムメトリックプラグインがいろいろとあるが、ホストに紐づくカスタムメトリックではなく、サービスに紐づくサービスメトリックへ連携したいことがたまにある。どのような方法があるのかを考えていたときに、Mackerel の CRE である @a-know さんが mackerel-remora を使うことを思いついた。
mackerel-remora ではカスタムメトリックプラグインの出力形式でサービスメトリックに連携してくれる素晴らしいツールである。
今回は mackerel-plugin-nature-remo をサービスメトリックに連携してみることにした。
連携方法 #
mackerel-remora では Docker イメージが公開されているので、Docker Compose で起動することにした。
適当なディレクトリに設定ファイルとプラウグインを次のように配置する。
├── config.yml
├── docker-compose.yml
└── plugins
└── mackerel-plugin-nature-remo_linux_amd64
├── README.md
└── mackerel-plugin-nature-remo
config.yml は次のような内容である。
apikey: { { Mackerel の API キー } }
plugin:
servicemetrics:
home:
nature-remo:
command: /app/plugins/mackerel-plugin-nature-remo_linux_amd64/mackerel-plugin-nature-remo -access-token {{ Nature Remo のアクセストークン }}
また、docker-compose.yml は次のような内容である。
version: "3"
services:
remora:
image: aknow/mackerel-remora:latest
restart: always
volumes:
- .:/app
environment:
MACKEREL_REMORA_CONFIG: /app/config.yml
そして、Docker コンテナーを起動する。
$ docker-compose up -d
しばらくすると、サービスメトリックに Nature Remo が収集した温度や湿度が連携されるようになる。

まとめ #
Mackerel のカスタムメトリックプラグインをサービスメトリックへ連携するために mackerel-remora を使ってみた。今回は Docker Compose でホストディレクトリをマウントして、設定ファイルとプラグインを読み込んだが、Docker イメージ内にそれらを含めることで AWS Fargate などでも動かすことができるはずである。