# Metabase Windwos 環境安裝 ## 簡介 Metabase 是一個開源的商業智慧工具,它提供了一個直觀、易於使用的界面,讓使用者能夠輕鬆地探索、分析和視覺化數據,而無需撰寫複雜的查詢或程式碼。 Metabase 支援多種數據來源,包括關係型數據庫(如MySQL、PostgreSQL、SQL Server)、NoSQL 數據庫(如MongoDB)、以及其他常見的數據存儲和服務(如Google Analytics、Amazon Redshift)。透過這些數據來源的連接,Metabase 可以輕鬆地從不同來源中提取數據並將其組織成易於理解和探索的格式。 Metabase 的使用者界面非常直觀,使用者可以透過瀏覽器訪問 Metabase,並以視覺化的方式建立報表、圖表和儀表板。使用者可以自由地拖放和編輯元素,以創建自己的數據視覺化。Metabase 提供了各種常見的圖表類型,如長條圖、折線圖、餅圖等,使用者可以根據需要選擇適合的圖表來呈現數據。 此外,Metabase 還支援數據濾選、排序和分組等功能,這使得使用者能夠更深入地分析數據並發現潛在的趨勢和模式。Metabase 還具備查詢編輯器,允許使用者自定義複雜的查詢以滿足特定的需求。 Metabase 的設置和管理也相對簡單。它提供了一個直觀的管理界面,讓管理員可以輕鬆地管理使用者、數據庫連接和訪問權限。同時,Metabase 還支援許多擴展和整合,例如與Slack、電子郵件等工具的整合,以便使用者能夠方便地分享和通知數據分析結果。 ## 初始環境準備 * 安裝 Java Runtime , 這邊我選擇 [Microsoft 提供的 OpenJDK 17](https://learn.microsoft.com/zh-tw/java/openjdk/download),Oracle 提供的那個之前有些授權問題。 * 下載[nssms](https://nssm.cc/download),解壓後把 `win64\nssm.exe` 丟到 C:\Windwos 下方便後續操作。 * 上[metabase官網](https://www.metabase.com/)下載 [metabase.jar](https://www.metabase.com/docs/latest/installation-and-operation/running-the-metabase-jar-file) 檔。 * 假設預計工作目錄為 `D:\Metabase` ,先把 metabase.jar 丟進去。 ## 開始安裝 * 在工作目錄下建立 `InstallMetabaseService.ps1` 內容如下 ```bash # 檢查當前是否以系統管理員身分執行 $isAdmin = ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) # 如果不是,則重新以系統管理員身分執行 if (-not $isAdmin) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs exit } # 透過 ps1 所在位置推算服務預設的工作目錄 $scriptPath = $PSCommandPath $AppDirectory = Split-Path -Path $scriptPath -Parent # 建立 Logs 目錄放置服務 Log mkdir $AppDirectory\Logs # 設定服務名稱 $ServerName="Metabase" nssm install $ServerName "java.exe" nssm set $ServerName AppDirectory "$AppDirectory" # 預設 metabase 最多吃 1GB RAM ,透過 -Xmx2g 放大到 2GB nssm set $ServerName AppParameters "-Xmx2g -jar metabase.jar" # 設定 Listen IP 與 Port nssm set $ServerName AppEnvironmentExtra MB_JETTY_PORT="3000" MB_JETTY_HOST="0.0.0.0" # 服務 std I/O 與日誌 Rotate 設定 nssm set $ServerName AppStdout "$AppDirectory\Logs\metabase.log" nssm set $ServerName AppStderr "$AppDirectory\Logs\metabase.err" nssm set $ServerName AppStdoutCreationDisposition 4 nssm set $ServerName AppStderrCreationDisposition 4 nssm set $ServerName AppRotateFiles 1 nssm set $ServerName AppRotateOnline 0 nssm set $ServerName AppRotateSeconds 86400 nssm set $ServerName AppRotateBytes 1048576 #nssm start $ServerName ``` * 執行 `InstallMetabaseService.ps1` 基本上就完成安裝了。後續可以去服務中啟動服務,或者透過 nssm 啟動服務都OK。 * `InstallMetabaseService.ps1` 主要只是讓 nssm 服務註冊批次處理,要透過 nssm 的 GUI 界面設定基本也是可以的。 ## 其他說明 * 這邊提供的是 Windwos 環境的安裝,在 Linux 基本用 Dokcer 裝會更乾淨,官網上也有教學說明。 * Windwos 主要透過 nssm 去做服務的註冊,不過整體來說東西也還算乾淨,以上面設定範例所有東西最後都會集中在`D:\Metabase`,未來要遷移也不會太複雜。 * Metabase 報表支援的資料來源常見的 `mysql` `postgresql` `mssql` `Mongodb` `SQLite` 基本都有。 * Metabase 主機設定部份支援的就比較少只有 `H2` `mysql` `postgresql` 三種,預設使用的是`H2`,跟 SQLite 有點像的檔案型態DB ,沒特別調整的話檔案就在 `D:\Metabase` 下面。 * Metabase 支援的圖表不如 Superset 多,不過產生的圖表可以直接嵌入現有的系統中,不用另外帳號驗證,這點目前 Superset 還沒辦法。 * 安裝上除了 nssm java 環境,其實就一個 metabase.jar,佈署上算相當輕巧方便了。 ## 參考資料 * [metabase官網](https://www.metabase.com/) * [Metabase 基本介紹](https://jerrytechblog.com/metabase-%E5%9F%BA%E6%9C%AC%E4%BB%8B%E7%B4%B9/) * [介紹好用工具:優異的 nssm 服務管理員 (Non-Sucking Service Manager) ](https://blog.miniasp.com/post/2021/09/15/Useful-tools-the-Non-Sucking-Service-Manager)