👌

32ビットARMのエントリーモデルQNAPでInfluxDB2とGrafanaを動かす

2024/06/24に公開

やりたいこと

家庭で動かしているエントリーモデルのQNAPでGrafana+InfluxDB2による各種データの可視化を行いたい。

制限

QNAPのアーキテクチャ

QNAPはLinuxベースのNASだがCPUアーキテクチャがIntel/AMD64, ARM64/32ベースのものがあり、家庭・個人向けのエントリーモデルはARM32が多い?(現行製品はエントリーレベルも64bitになっているかも?)

https://www.qnap.com/ja-jp/product?product-group=home

私が使用しているTS-231Parm7l

$ 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対応の質問がある。とりあえずビルドできて動かした人がいる模様。

https://community.influxdata.com/t/influxdb-2-for-arm32v7-release-date/20349

Docker Hubを探してみるとメンテナンスされてないものの sequentialread/influxdb:2.1.1-armv7 が上記フォーラムで言及されたイメージっぽい。

今日現在の最新v2.7.6に対してv2.1.1ではあるが…。

自分でイメージを作る?

こちらの記事の様にQNAP Conteiner Stationでも既存イメージではなくDockerfileから作れる様だが、そもそもInfluxDB2自体32bitをサポートしていないのでInfluxDB2の最新版をビルドできるかどうかも不明(Dockerイメージではなくinfluxdb自体のバイナリーの意味)。

https://qiita.com/abeshi-X1/items/11f1d04ec85fe4cbf45e

とりあえず

動作する野良イメージを使ってとりあえずやりたいことはできた。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がロックされる模様。

https://qiita.com/int512/items/9df33203d3d6dd39c486

感想

  • とりあえずInfluxDB2は動いているがなんとかしたい
  • QNAPはバースプロキシー機能があるので簡単に外からもダッシュボードが見れて便利
  • 色々動かしだすと結構遅くなるのでいずれはARM64版のQNAPにリプレースしたい(そうすればDocker周りは解決しやすい)

Discussion