ラズパイにサーバーを構築し、metabaseでグラフを見る方法についてまとめました。
環境
環境は、下記の通りになります。
MariaDB version 10.3.31-MariaDB-0+deb10u1
Python version: 3.7.3
OS: Raspbian 10.0
1.1 apacheのインストール
apacheをインストールします。
$ sudo apt-get update
$ sudo apt-get install apache2
1.2 apacheの確認
下記コマンドを実行し、inetに書かれているIPアドレスを確認します。
$ ifconfig wlan0
Chromeなどのブラウザからhttp://[、inetに書かれているIPアドレス]を入力してください。
成功すると、このようなwebページが出てきます。
1.3 apacheディレクトリ権限の変更
デフォルトの状態でApacheは、/var/www/html/ディレクトリ内にあるファイルを表示します。
下記を入力し、ディレクトの権限を変更します。
$ cd /var/www
$ sudo chmod 777 html/
1.4 PHPのインストール
下記コマンドでPHPをインストールしてください。
$ sudo apt install php libapache2-mod-php -y
2.1 データベース、metabaseの環境構築
データベースは、MariaDBを使用することにしました。MariaDBを見ると、mySQLよりも機能が高く、セキュリティ面が良いらしいので、試しに使ってみます。
MariaDB、セットアップ方法は、こちらを参考にさせていただきました。
2.2 metabaseの設定
metabaseのインストール
サイトからmetabase.jarをダウンロードし、作成したフォルダに配置します。私は、windows端末からダウンロードし、winSCPを経由してラズパイのディレクトリに置きましたおきました。
$ sudo mkdir -p /apps/java
$ cd /apps
$ sudo chmod 777 java
$ pwd
/apps/java/metabase.jar
2.3 OSのユーザー設定
metabase実行用のユーザを定義して権限等の設定をします。
$ sudo groupadd -r metabase
$ sudo useradd -r -s /bin/false -g metabase metabase
$ sudo chown -R metabase:metabase /apps/java
$ sudo touch /var/log/metabase.log
$ sudo chown metabase:metabase /var/log/metabase.log
$ sudo touch /etc/default/metabase
$ sudo chmod 640 /etc/default/metabase
2.4 サービス作成
metabaseをサービスとして登録します。
$ sudo touch /etc/systemd/system/metabase.service
$ sudo nano /etc/systemd/system/metabase.service
[Unit]
Description=Metabase server
After=syslog.target
After=network.target
[Service]
WorkingDirectory=/apps/java/
ExecStart=/usr/bin/java -jar /apps/java/metabase.jar
EnvironmentFile=/etc/default/metabase
User=metabase
Type=simple
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=metabase
SuccessExitStatus=143
TimeoutStopSec=120
Restart=always
[Install]
WantedBy=multi-user.target
2.5 syslogファイル作成とMetabaseサービス登録
$ sudo touch /etc/rsyslog.d/metabase.conf
$ sudo nano /etc/rsyslog.d/metabase.conf
以下をmetabase.conf内に以下を追記します。
if $programname == 'metabase' then /var/log/metabase.log
& stop
syslogを再起動し、サービスを設定します。
$ sudo systemctl daemon-reload
$ sudo systemctl start metabase.service
$ sudo systemctl enable metabase.service
2.6 接続確認
下記コマンドを実行し、chromeでhttp://:3000でアクセスできるかどうかを確認します。
エラーが発生して場合、2.7を見てください。
$ java -jar /apps/java/metabase.jar
2.7 ポート重複によるエラー回避
私の環境では、3000のポートが使用していたため下記のようなエラーが出てしまいました。
WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
2022-03-16 14:13:54,552 INFO metabase.util :: Maximum memory available to JVM: 948.0 MB
2022-03-16 14:14:32,072 INFO util.encryption :: Saved credentials encryption is DISABLED for this Metabase instance. 🔓
For more information, see https://metabase.com/docs/latest/operations-guide/encrypting-database-details-at-rest.html
2022-03-16 14:14:44,643 INFO driver.impl :: Registered abstract driver :sql 🚚
⮦ Load driver :sql took 2.3 s
2022-03-16 14:14:44,716 INFO driver.impl :: Registered abstract driver :sql-jdbc (parents: [:sql]) 🚚
Load driver :sql-jdbc took 2.4 s
2022-03-16 14:14:44,736 INFO driver.impl :: Registered driver :h2 (parents: [:sql-jdbc]) 🚚
2022-03-16 14:14:44,797 INFO driver.impl :: Registered driver :mysql (parents: [:sql-jdbc]) 🚚
2022-03-16 14:14:44,852 INFO driver.impl :: Registered driver :postgres (parents: [:sql-jdbc]) 🚚
2022-03-16 14:14:53,939 INFO metabase.core ::
Metabase v0.42.2 (d6ff494 release-x.42.x)
Copyright © 2022 Metabase, Inc.
Metabase Enterprise Edition extensions are NOT PRESENT.
2022-03-16 14:14:53,968 INFO metabase.core :: Starting Metabase in STANDALONE mode
2022-03-16 14:14:54,103 INFO metabase.server :: Launching Embedded Jetty Webserver with config:
{:port 3000}
2022-03-16 14:14:54,183 ERROR metabase.core :: Metabase Initialization FAILED
java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:3000
metabase.comを確認すると、3000番が使われてたら、jarを走らす前にMB_JETTY_PORT
を使って別のところ使ってね。と記載があります。なので、下記のように変更し、走らせます。chromeでは、http://:3100でアクセスします。
$ java -DMB_JETTY_PORT=3100 -jar /apps/java/metabase.jar
3.1 データベースの追加
metabaseを起動すると、初期設定をするようなっています。それほど難しい項目はないので、この部分は割愛します。
metabaseへmySQLのデータを登録します。mySQL内でのデータベースの作成方法については、以前の記事に記述しています。
下記の記事を参照してください。
pythonでcsvのデータをデータベースへ書き込む。
3.2 データベースの登録
- 右上にある歯車マークをクリックし、管理者設定 -> データベースを追加する を選択する。
- 下記の項目に必要な情報を入力する。
データベースのタイプ: MySQL
表示名: 適当に入力(metabase内のタイトルになります)
ホスト名: localhost
ポート: 3306
データベース名: 適当に入力(設定したものを入力)
ユーザー名: root(設定したものを入力)
パスワード: xxx(設定したものを入力)
※ポート番号について
mySQL(MariaDB)にアクセスし、下記コマンドを入力すると、mySQLのポート番号を確認することができます。
MariaDB[(none)]> show variables like 'port';
3.3 グラフ作成
適当に操作して、グラフ、ダッシュボートを作成します。下記は、作成例です。
Link
下記サイトを参照させていただきました。
Raspberry PiにMetabaseをインストール
mariadb mysql ポート番号を調べる