ダイスボットを作りはじめた - koudenpaのブログで使っているAzure IoT EdgeはDockerコンテナとしてモジュールを動かしている。のでそのメトリクスを取っておきたい。
MackerelでのDockerコンテナのメトリクス取得には mackerel-plugin-docker を使えばいい。これは mackerel-agent-plugins に同梱されている。
のだが、雰囲気Raspberry PiのCPUに対応したパッケージはリリースされていないようだった。
雰囲気、なのはその辺完全には理解していないため。
完全には理解していないとはいえ、それならいそれなりにできることはある。
mackerel-agent-pluginsはGoで書かれているので、ビルドすれば動くだろ。と思ってビルドしたら実際に動いた。
以下やったこと。
Goのインストール
Raspberry Pi向けのGoパッケージは用意されていないようなので適当にダウンロードする。以下の記事を参考にした。
$ 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-blugin-docker でIoT Edgeモジュール毎のCPU使用率がとれた。画像の認識している時は1コア占有しているみたいだ。
— 光電/7474 (@koudenpa) 2020年9月23日
Docker Memoryは全 0 ! なんもわからん。 pic.twitter.com/pI0J2XMAss
mackerel-agent をコンテナで動かす?
Raspberry Pi向けのコンテナイメージが良く分っていないので、そういう概念は取り合えず忘れることにした。
コンテナで動かせるならmackerel-agentもAzure IoT Edgeのモジュールとして動かせそうなので、クラウドから送り込めそうで面白味はある。
設定ファイルの配置辺りには難があるかもは知れない。
とは言え忘れる。プラグインが動いてよかった。