koudenpaのブログ

趣味のブログです。株式会社はてなでWebアプリケーションエンジニアをやっています。職業柄IT関連の記事が多いと思います。

Raspberry Piでmackerel-agent-pluginを使う

ダイスボットを作りはじめた - koudenpaのブログで使っているAzure IoT EdgeはDockerコンテナとしてモジュールを動かしている。のでそのメトリクスを取っておきたい。

mackerel.io

MackerelでのDockerコンテナのメトリクス取得には mackerel-plugin-docker を使えばいい。これは mackerel-agent-plugins に同梱されている。

のだが、雰囲気Raspberry PiのCPUに対応したパッケージはリリースされていないようだった。

雰囲気、なのはその辺完全には理解していないため。

完全には理解していないとはいえ、それならいそれなりにできることはある。

mackerel-agent-pluginsはGoで書かれているので、ビルドすれば動くだろ。と思ってビルドしたら実際に動いた。

以下やったこと。

Goのインストール

Raspberry Pi向けのGoパッケージは用意されていないようなので適当にダウンロードする。以下の記事を参考にした。

qiita.com

$ wget https://golang.org/dl/go1.15.2.linux-armv6l.tar.gz
$ sudo tar -C /usr/local -xzf go1.15.2.linux-armv6l.tar.gz
$ cat /usr/local/go/VERSION
go1.15.2
$ vi ~/.bashrc
$ cd
$ source .bashrc
$ cd tmp/
$ vi hello.go
$ go run hello.go
# command-line-arguments
./hello.go:6:2: undefined: fmt.Pringf

Hello WorldコードのTypoコンパイラが指摘してくれたのでGoの展開はうまく行っているだろう。

mackerel-agent-plugins のビルドと配置

GoをインストールしたRaspberry Pi上で git clone しておもむろに go build すると実行ファイルである mackerel-agent-plugins ができる。

/usr/local/bin にコピーした。

mackerel-agent への設定

mackerel-agent-plugins複数のプラグインが1つのバイナリに同居していて引数でどのプラグインを動かすか指定する形になっている。

なので /etc/ への設定はこのようになる。

[plugin.metrics.docker]
command = "/usr/local/bin/mackerel-agent-plugins docker -name-format name"

これで取りあえずDockerコンテナのメトリクスが取れた。めでたしめでたし。

mackerel-agent をコンテナで動かす?

Raspberry Pi向けのコンテナイメージが良く分っていないので、そういう概念は取り合えず忘れることにした。

コンテナで動かせるならmackerel-agentもAzure IoT Edgeのモジュールとして動かせそうなので、クラウドから送り込めそうで面白味はある。

設定ファイルの配置辺りには難があるかもは知れない。

とは言え忘れる。プラグインが動いてよかった。