32ビットARMのエントリーモデルQNAPでInfluxDB2とGrafanaを動かす
やりたいこと
家庭で動かしているエントリーモデルのQNAPでGrafana+InfluxDB2による各種データの可視化を行いたい。
制限
QNAPのアーキテクチャ
QNAPはLinuxベースのNASだがCPUアーキテクチャがIntel/AMD64, ARM64/32ベースのものがあり、家庭・個人向けのエントリーモデルはARM32が多い?(現行製品はエントリーレベルも64bitになっているかも?)
私が使用しているTS-231Pはarm7l
$ cat /proc/cpuinfo | grep model
model name : Annapurna Labs Alpine AL212 Dual-core ARM Cortex-A15 CPU @ 1.70GHz
model name : Annapurna Labs Alpine AL212 Dual-core ARM Cortex-A15 CPU @ 1.70GHz
$ uname -m
armv7l
コンテナーイメージ
Grafanaにの公式Dockerイメージ関してはlinux/amd64, linux/arm/v7, linux/arm64が用意されているので問題なし。
しかし、InfluxDB v2に関しては32bitサポートを終了したためlinux/amd64, linux/arm64しかイメージが用意されていない。(v1までは32bitをサポートしていた)
対応
野良イメージを使う
influxdataのフォーラムで32bit対応の質問がある。とりあえずビルドできて動かした人がいる模様。
Docker Hubを探してみるとメンテナンスされてないものの sequentialread/influxdb:2.1.1-armv7 が上記フォーラムで言及されたイメージっぽい。
今日現在の最新v2.7.6
に対してv2.1.1
ではあるが…。
自分でイメージを作る?
こちらの記事の様にQNAP Conteiner Stationでも既存イメージではなくDockerfileから作れる様だが、そもそもInfluxDB2自体32bitをサポートしていないのでInfluxDB2の最新版をビルドできるかどうかも不明(Dockerイメージではなくinfluxdb自体のバイナリーの意味)。
とりあえず
動作する野良イメージを使ってとりあえずやりたいことはできた。QNAP ARM32版で動くComposeファイルを貼っておく。
version: "3"
services:
influxdb:
image: sequentialread/influxdb:2.1.1-armv7
container_name: influxdb
ports:
- "8086:8086"
volumes:
- ./docker/influxdb/data:/var/lib/influxdb2
- ./docker/influxdb/config:/etc/influxdb2
grafana:
image: grafana/grafana-enterprise:10.4.4
container_name: grafana
restart: unless-stopped
ports:
- "3000:3000"
volumes:
- grafana-storage:/var/lib/grafana
depends_on:
- influxdb
- postgres
environment:
- GF_DATABASE_TYPE=postgres
- GF_DATABASE_HOST=postgres
- GF_DATABASE_NAME=grafana
- GF_DATABASE_USER=grafana_user
- GF_DATABASE_PASSWORD=p@ssw0rd
postgres:
image: postgres:12.19
container_name: postgres
environment:
- POSTGRES_USER=grafana_user
- POSTGRES_PASSWORD=p@ssw0rd
- POSTGRES_DB=grafana
volumes:
grafana-storage: {}
PostgreSQLが必要なのは次の記事の様に自分の使っているQNAPでもラズパイ同様にデフォルトのSQLite3がロックされる模様。
感想
- とりあえずInfluxDB2は動いているがなんとかしたい
- QNAPはバースプロキシー機能があるので簡単に外からもダッシュボードが見れて便利
- 色々動かしだすと結構遅くなるのでいずれはARM64版のQNAPにリプレースしたい(そうすればDocker周りは解決しやすい)
Discussion