Armadilloフォーラム

コンテナ内にインストールした「InfluxDB_v2」の設定を行うにはどうすればいいか

takeshita_kyouhei

2024年3月8日 21時46分

Armadillo-IoT G4のコンテナないにInfluxDB_v2(Ver.2.7.4-1)をインストールしてデータを蓄積、利用することとなりました

InfluxDB_v2についてはコンテナ内にインストールすることができましたが、セットアップを行うには「http://influxdbインストール先のIPアドレス:8086」にアクセスし、
GUI上でセットアップを行うことが必要となるようです

この場合、ABOSDE等で事前に設定した状態のSWUを作成することは現実的に可能なのでしょうか?
 InfluxDB_v1であれば設定ファイルを持っているため、差し替えをDockerfileに記述することで実現可能と思います

コメント

at_shiita.ishigaki

2024年3月11日 11時21分

石垣です。

> InfluxDB_v2についてはコンテナ内にインストールすることができましたが、セットアップを行うには「http://influxdbインストール先のIPアドレス:8086」にアクセスし、
> GUI上でセットアップを行うことが必要となるようです
>
> この場合、ABOSDE等で事前に設定した状態のSWUを作成することは現実的に可能なのでしょうか?
>  InfluxDB_v1であれば設定ファイルを持っているため、差し替えをDockerfileに記述することで実現可能と思います

InfluxDB_v2 も設定ファイルを配置することで設定をすることは可能のようです。
こちらの設定ファイルを配置すれば InfluxDB_v1 と同様の手順で設定することができると思われます。
https://docs.influxdata.com/influxdb/v2/reference/config-options/#influ…

GUI 上でセットアップを行う場合ですが、Armadillo で influxDB を起動し、influxDB の設定を変更することは可能です。
ただし、その設定ファイルが /vol_app もしくは /vol_data の下に保存されない場合は、
development swu もしくは release swu を Armadillo にインストールしたときに設定ファイルが消えてしまいます。
もし、設定ファイルの保存先を変えられる場合はこちらの手段も使うことができるかと思います。
Armadillo で InfluxDB の GUI を表示する手順を以下に示します。(vscode でプロジェクトを開いているものとします。)

1. コンテナ内のポートを ABOS のポートに接続するため config/app.conf に以下の内容を記載

add_ports 8086:8086

2. コンテナ起動時に InfluxDB を起動するため config/app.conf の set_command を変更

set_command influxd run

3. Armadillo で動作している InfluxDB にアクセスするため、下記 URL を WEB ブラウザに入力
(複数の armadillo がローカルネットワークに存在する場合は armadillo.local-2 等に置き換えてください)

http://<Armadiilo の IP アドレス もしくは armadillo.local>:8086

以上の手順で、InfluxDB の GUI を使って設定を行うことができます。
また、現在の InfluxDB の設定を確認するには :8086/api/v2/config にアクセスすると確認できるようです。
https://docs.influxdata.com/influxdb/v2/reference/config-options/#view-…

以上、よろしくお願いいたします。

takeshita_kyouhei

2024年3月12日 12時12分

本件、ご回答いただきありがとうございます
> 石垣です。
>
> > InfluxDB_v2についてはコンテナ内にインストールすることができましたが、セットアップを行うには「http://influxdbインストール先のIPアドレス:8086」にアクセスし、
> > GUI上でセットアップを行うことが必要となるようです
> >
> > この場合、ABOSDE等で事前に設定した状態のSWUを作成することは現実的に可能なのでしょうか?
> >  InfluxDB_v1であれば設定ファイルを持っているため、差し替えをDockerfileに記述することで実現可能と思います
>
> InfluxDB_v2 も設定ファイルを配置することで設定をすることは可能のようです。
> こちらの設定ファイルを配置すれば InfluxDB_v1 と同様の手順で設定することができると思われます。
> https://docs.influxdata.com/influxdb/v2/reference/config-options/#influ…
InfluxDBは起動時に「設定ファイルパスにファイルがあるかどうかチェックし、あればそれに従う」という動作であるため、
1.Dockerfileに「export INFLUXD_CONFIG_PATH=/etc/influxdb/」などを記述
2.作成した設定ファイルをSWU作成時に1で指定したフォルダパスに置く
という流れで設定できそうではあります
 動作はまだ未確認

ただ、ここで設定できる設定ファイルでは「Organization」、「Bucket」、「Token」などInfluxDB_v2に対して読み書きを行うため必要な設定ができないため、ここをどのように解決すべきであるかがわかっていません
 「Organization」、「Bucket」は手動(influxというCLIツールを使う)で設定できますが、「Token」は左記を設定した際に自動生成される
 =DBアクセスに必要な情報ですが、コンテナが再起動されるたびに変化してしまう値になり、Pythonプログラムでアクセスする難易度が非常に高い

上記について解決手法等の知見がありましたら教えていただけますと幸いです

> GUI 上でセットアップを行う場合ですが、Armadillo で influxDB を起動し、influxDB の設定を変更することは可能です。
> ただし、その設定ファイルが /vol_app もしくは /vol_data の下に保存されない場合は、
> development swu もしくは release swu を Armadillo にインストールしたときに設定ファイルが消えてしまいます。
> もし、設定ファイルの保存先を変えられる場合はこちらの手段も使うことができるかと思います。
> Armadillo で InfluxDB の GUI を表示する手順を以下に示します。(vscode でプロジェクトを開いているものとします。)
>
> 1. コンテナ内のポートを ABOS のポートに接続するため config/app.conf に以下の内容を記載
>

> add_ports 8086:8086
> 

> 2. コンテナ起動時に InfluxDB を起動するため config/app.conf の set_command を変更
>

> set_command influxd run
> 

> 3. Armadillo で動作している InfluxDB にアクセスするため、下記 URL を WEB ブラウザに入力
> (複数の armadillo がローカルネットワークに存在する場合は armadillo.local-2 等に置き換えてください)
>

> http://<Armadiilo の IP アドレス もしくは armadillo.local>:8086
> 

>
> 以上の手順で、InfluxDB の GUI を使って設定を行うことができます。
> また、現在の InfluxDB の設定を確認するには :8086/api/v2/config にアクセスすると確認できるようです。
> https://docs.influxdata.com/influxdb/v2/reference/config-options/#view-…
>
> 以上、よろしくお願いいたします。
上記について参考にさせていただきます
 手動で設定したInfluxDB_v2関連ファイルを永続化領域に移動させれば、先の問題は解消される?

at_shiita.ishigaki

2024年3月12日 13時18分

石垣です。

> ただ、ここで設定できる設定ファイルでは「Organization」、「Bucket」、「Token」などInfluxDB_v2に対して読み書きを行うため必要な設定ができないため、ここをどのように解決すべきであるかがわかっていません
>  「Organization」、「Bucket」は手動(influxというCLIツールを使う)で設定できますが、「Token」は左記を設定した際に自動生成される
>  =DBアクセスに必要な情報ですが、コンテナが再起動されるたびに変化してしまう値になり、Pythonプログラムでアクセスする難易度が非常に高い
>
> 上記について解決手法等の知見がありましたら教えていただけますと幸いです
>

実際に試してはいないのですが、ドキュメントを見る限り REST API から Token の生成は行えるようです。
https://docs.influxdata.com/influxdb/v2/admin/tokens/create-token/#crea…
https://docs.influxdata.com/influxdb/v2/api/#operation/PostAuthorizatio…
こちらのドキュメントでは linux の curl コマンドを使った例になっておりますが、
python の urllib や requests ライブラリを使えば同様のことを行えるかと思います。
urlib: https://docs.python.org/ja/3/library/urllib.html
requests: https://pypi.org/project/requests/

運用方法によると思いますが、 Token の値を電源再投入時に消したくない場合は、
コンテナ内の /vol_data の下に保存するという方法が取れると思います。

参考になりましたら、幸いです。
以上よろしくお願いいたします。