メインコンテンツへスキップ

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

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

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

有益なカスタムメトリックプラグインがいろいろとあるが、ホストに紐づくカスタムメトリックではなく、サービスに紐づくサービスメトリックへ連携したいことがたまにある。どのような方法があるのかを考えていたときに、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 などでも動かすことができるはずである。