Centos7.4にMetabaseのインストールをするまで

Centos7.4にMetabaseをインストールして基本設定するまでのメモ

# 目的
とあるシステムを作ってる時に単純にデータベースに入ってるデータをグラフとして出力したかっただけです。
他の選択肢としては、

* Re:dash
* Chart.js
* kibana
* etc...

など色々あると思います。
他のものとこれから色々比較してみようかと思い、メモに残すことにしました。

# 環境
| OS | 7.4 |
|:-:|:-:|:-:|
| Metabase | 0.27.2 |

[Metabase 公式](https://www.metabase.com/)

# Metabaseとは？
オープンソースのビジネスインテリジェンスツールでいわゆる意思決定などに使う補助ツール？
MacやAWSなど対応OSは広そうです。

# インストール
Ubuntuと全然変わらないです。
やることは，全部で２つ

* Java8 のインストール
* MetaBase のダウンロード＆インストール

## Javaのインストール
古い環境のJavaがないか確認します。

```
　　　　$ java -v
　　　　bash: java: command not found
```
上記のコマンドで古いJavaがなければ、yumでインストールします。

```
　　　　$ yum install -y java-1.8.0-openjdk
　　　　$ java -version
　　　　openjdk version "1.8.0_xx"
```
と表示されていれば終了。

## MetaBaseのインストール
curl コマンドなどでパッケージのダウンロードをします。

```
　　　　$ curl -LO http://downloads.metabase.com/v0.27.2/metabase.jar
```
後は、`java -jar /ダウンロードで指定したパス/metabase.jar`でインストールは終了です。
アクセスは、`http://localhost:3000/setup/`です。

## 注意事項
Centosは、selinuxやfirewalldなどが始めから起動しているバージョンもあるため、必ずサービスをストップまたはサービス同士の共存をさせてからMetabaseを動かすようにして下さい。

```
　　　　$ setenforce 0
　　　　$ systemctl stop firewalld
```
# 基本設定
ログインするとこの画面にwelcomeページに行くと思います。
<img width="887" alt="スクリーンショット 2018-01-16 17.33.19.png" src="https://qiita-image-store.s3.amazonaws.com/0/43574/6ed4e993-56ab-88f7-ad36-a6a62fac195b.png">

後は、入力フォームに従って情報を入力して下さい。
<img width="860" alt="スクリーンショット 2018-01-16 19.51.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/43574/d1bd5046-509a-83e8-f66f-dbd49e9a4002.png">

２のフォームでは、Metabaseがアクセスするデータベースの情報を選択、入力します。
用意していない人は後でを選択することもできます。
<img width="855" alt="スクリーンショット 2018-01-16 19.53.28.png" src="https://qiita-image-store.s3.amazonaws.com/0/43574/9bdcf9f3-0e17-da38-0f88-71aa5d60fefa.png">

最後に「Next」を押して基本的な設定は完了です。
<img width="861" alt="スクリーンショット 2018-01-16 19.57.37.png" src="https://qiita-image-store.s3.amazonaws.com/0/43574/ea7303c7-3fdf-d001-c3a6-f2f597946f34.png">

基本的な使い方は、機会があれば別の記事に書きます。

追記[2018/11/09]：
久しぶりに構築する機会があったので構築してみると以下のエラーが出て失敗...

```
11-09 16:36:43 ERROR metabase.core :: Metabaseの初期化に失敗しました
java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3236)
	at java.io.ByteArrayOutputStream.toByteArray(ByteArrayOutputStream.java:191)
	at java.util.jar.JarVerifier.processEntry(JarVerifier.java:260)
	at java.util.jar.JarVerifier.update(JarVerifier.java:230)
	at java.util.jar.JarFile.initializeVerifier(JarFile.java:383)
	at java.util.jar.JarFile.getInputStream(JarFile.java:450)
	at sun.net.www.protocol.jar.JarURLConnection.getInputStream(JarURLConnection.java:164)
	at liquibase.resource.ClassLoaderResourceAccessor.getResourcesAsStream(ClassLoaderResourceAccessor.java:53)
	at liquibase.util.StreamUtil.singleInputStream(StreamUtil.java:186)
	at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:27)
	at liquibase.changelog.DatabaseChangeLog.include(DatabaseChangeLog.java:525)
	at liquibase.changelog.DatabaseChangeLog.includeAll(DatabaseChangeLog.java:490)
	at liquibase.changelog.DatabaseChangeLog.handleChildNode(DatabaseChangeLog.java:368)
	at liquibase.changelog.DatabaseChangeLog.load(DatabaseChangeLog.java:293)
	at liquibase.parser.core.yaml.YamlChangeLogParser.parse(YamlChangeLogParser.java:78)
<domain type='kvm'>
	at liquibase.Liquibase.getDatabaseChangeLog(Liquibase.java:217)
	at liquibase.Liquibase.listUnrunChangeSets(Liquibase.java:1281)
	at liquibase.Liquibase.listUnrunChangeSets(Liquibase.java:1274)
	at liquibase.Liquibase.listUnrunChangeSets(Liquibase.java:1270)
	at metabase.db$has_unrun_migrations_QMARK_.invokeStatic(db.clj:147)
	at metabase.db$has_unrun_migrations_QMARK_.invoke(db.clj:140)
	at metabase.db$migrate_up_if_needed_BANG_.invokeStatic(db.clj:177)
	at metabase.db$migrate_up_if_needed_BANG_.invoke(db.clj:168)
	at metabase.db$migrate_BANG_$fn__15423.invoke(db.clj:288)
	at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:747)
	at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:717)
	at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:782)
	at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:717)
	at clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:730)
	at clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:717)
	at metabase.db$migrate_BANG_.invokeStatic(db.clj:276)
	at metabase.db$migrate_BANG_.invoke(db.clj:257)
11-09 16:36:43 INFO metabase.core :: Metabaseをシャットダウン中...
11-09 16:36:43 INFO metabase.core :: Metabseのシャットダウンが完了しました
```
文章見ているとメモリが足りていないよう
動作させている間のメモリ使用率を確認してみると

```
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
10665 root      20   0 3096720 701364  22236 S 99.5  40.7   2:30.10 java
```
cpu周りが足りていない感じ？
このときのメモリとCPUは最低限だったので単純に二倍にしてみたら最後まで動作しました。