Mackerel のカスタムメトリックプラグインをサービスメトリックに連携

この記事は Mackerel Advent Calendar 2020 の6日目の記事です。

Mackerel ではカスタムメトリックプラグインを利用することで自分たちに必要なミドルウェアのメトリックを収集できることだと考えています。Mackerel エージェントをインストールした状態ではシステムメトリックのみの取集となるため、必要なミドルウェアのメトリックを取集するためには、カスタムメトリックプラグインを利用することになるのです。カスタムメトリックは下記から探すことができると思います。

有益なカスタムメトリックプラグインがいろいろとあるのですが、ホストに紐づくカスタムメトリックではなく、サービスに紐づくサービスメトリックに連携したい思うことがたまにあります。どのような方法があるののかを考えていたときに、Mackerel の CRE である @a-know さんが mackerel-remora を使うことを思いつきました。

github.com

blog.a-know.me

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: {{ Mackrel の 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 が収集した温度や湿度が連携されるようになります。

f:id:holidayworking:20201202204058p:plain

まとめ

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