Metabase是作為Java jar文件構建和打包的,可以在有Java環境的任何地方運行。下面我們提供有關如何在各種常見配置中安裝和運行Metabase的詳細說明。
本篇只介紹jar安裝方式,其他方式請參考官方文檔:https://www.metabase.com/docs/latest/operations-guide/start.html#installing-and-running-metabase
運行jar文件:這是運行Metabase的最簡單和最基本的方式。這裡將介紹運行Metabase的一般要求,並介紹如何定製安裝。
要運行Metabase jar文件,需要在系統上安裝Java。目前Metabase需要Java 7或更高版本,並且可以在OpenJDK或Oracle JDK上運行。
Metabase團隊傾向於儘可能使用開源解決方案。
下載 Metabase下載地址:http://www.metabase.com/start/jar.html
驗證Java已安裝在啟動應用程式之前,必須驗證是否安裝了Java:
java -version
你應該看到如下輸出:
java version "1.8.0_31"
Java(TM) SE Runtime Environment (build 1.8.0_31-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.31-b07, mixed mode)
如果你沒有看到上面的輸出,而是看到一個錯誤或者你的Java版本低於1.7,那麼你需要安裝Java運行時。
啟動Metabase現在您已經有了一個可運行的Java Runtime,現在可以通過以下方式從終端運行jar:
java -jar metabase.jar
很簡單,使用默認設置啟動Metabase應用程式,應該看到一些日誌條目開始在終端窗口中運行,顯示應用程式啟動時的進度。一旦Metabase完全啟動,將看到如下確認信息:
2015-10-14 22:17:50,960 [INFO ] metabase.core :: Metabase Initialization COMPLETE
2015-10-14 22:17:51,004 [INFO ] metabase.core :: Launching Embedded Jetty Webserver with config:
{:port 3000, :host "localhost"}
2015-10-14 22:17:51,024 [INFO ] org.eclipse.jetty.server.Server :: jetty-9.2.z-SNAPSHOT
2015-10-14 22:17:51,049 [INFO ] org.eclipse.jetty.server.ServerConnector :: Started ServerConnector@30aba609{HTTP/1.1}{localhost:3000}
2015-10-14 22:17:51,050 [INFO ] org.eclipse.jetty.server.Server :: Started @35910ms
此時最簡單的安裝方式已經完成了,現在訪問 localhost:3000 試試吧!
第一次啟動Metabase,會看到:
這個時候我們可以去試用Metabase了,但是還不能在生產環境運行,如果好奇心重,可以點擊 Let’sgetstarted 按鈕,如果想更深入的了解,請繼續往下看。
配置應用程式資料庫應用程式資料庫是Metabase存儲用戶信息,保存的問題,儀錶板以及運行應用程式所需的任何其他數據的地方。默認設置使用嵌入式H2資料庫,但這是可配置的。
註:在應用程式運行時,您無法更改應用程式資料庫。這些值在應用程式啟動時只讀一次,並在應用程式的整個運行過程中保持不變。
注意:目前Metabase不提供將數據從一個應用程式資料庫遷移到另一個應用程式資料庫的自動化支持,所以如果您從H2開始然後想要遷移到Postgres,則必須從H2中轉儲數據並將其導入Postgres,然後再重新啟動應用。
H2(默認)Metabase實例使用H2資料庫,不需要做其他配置。當應用程式首次啟動時,它將嘗試在啟動應用程式的相同文件系統位置創建一個新的H2資料庫。
您可以從終端看到這些資料庫文件:
ls metabase.*
您應該看到以下文件:
metabase.db.h2.db # Or metabase.db.mv.db depending on when you first started using Metabase.
metabase.db.trace.db
如果出於任何原因想要在啟動Metabase的位置的單獨位置使用H2資料庫文件,則可以使用環境變量。例如:
export MB_DB_TYPE=h2
export MB_DB_FILE=/the/path/to/my/h2.db
java -jar metabase.jar
需要注意的是H2自動追加.mv.db或.h2.db將路徑指定; 不要包括你的路徑!換句話說,MBDBFILE應該是類似的東西/path/to/metabase.db,而不是類似的東西/path/to/metabase.db.mv.db(儘管這是實際創建的文件)。
Postgres對於Metabase的生產安裝,我們建議用戶用更強大的選項(如Postgres)替換H2資料庫。當Metabase與許多用戶一起運行時,這提供了更高程度的性能和可靠性。
您可以使用幾個簡單的環境變量來更改應用程式資料庫以使用Postgres。例如:
export MB_DB_TYPE=postgres
export MB_DB_DBNAME=metabase
export MB_DB_PORT=5432
export MB_DB_USER=<username>
export MB_DB_PASS=<password>
export MB_DB_HOST=localhost
java -jar metabase.jar
這將告訴Metabase使用提供的Postgres連接信息查找其應用程式資料庫。
MySQL如果你更喜歡使用MySQL,我們已經介紹了你。您可以使用這些環境變量將應用程式資料庫更改為使用MySQL。例如:
export MB_DB_TYPE=mysql
export MB_DB_DBNAME=metabase
export MB_DB_PORT=3306
export MB_DB_USER=<username>
export MB_DB_PASS=<password>
export MB_DB_HOST=localhost
java -jar metabase.jar
這將告訴Metabase使用提供的MySQL連接信息來查找其應用程式資料庫。
自定義Metabase Jetty Web伺服器在大多數情況下,沒有理由修改Metabase運行其嵌入式Jetty Web伺服器來託管應用程式的任何設置,但是如果您希望直接使用Metabase伺服器運行HTTPS,或者需要在另一個埠上運行,那就是全部可配置。
在另一個埠上運行Metabase默認情況下,Metabase將在埠3000上啟動,但是如果您希望在另一個埠上運行應用程式,則可以通過設置以下環境變量來實現:
export MB_JETTY_PORT=12345
java -jar metabase.jar
在本例中,一旦應用程式啟動,您將在埠上訪問它,12345而不是默認埠3000。
監聽特定的網絡接口默認情況下,元資料庫將在偵聽localhost。在某些生產環境中,您可能想要在不同的界面上進行監聽,這可以通過使用MBJETTYHOST環境變量來完成:
export MB_JETTY_HOST=0.0.0.0
java -jar metabase.jar
處理Metabase中的時區元資料庫盡最大努力確保在您想要的任何時區進行正確和準確的報告,但時區是一個複雜的野獸,所以遵守下面列出的一些建議以確保您的報告按預期發布非常重要。
以下設置時區的地方都會影響您看到的數據:
Database - 包括全局資料庫時區設置,特定列類型設置,甚至包括單個數據值。OS & JVM - 在任何運行Metabase的系統上,作業系統的時區設置以及Java虛擬機都會影響您的報告。Metabase - 在Metabase中報告時區設置(如果設置)將影響您的數據報告方式。為了確保正確的報告,重要的是在所有地方始終如一地設置時區。配置資料庫推薦以下設置:
確保所有資料庫列都已正確設置,以包含時區知曉。
除非您有特殊需要,否則最好將資料庫報告時區設置為UTC並將所有與日期/時間相關的值存儲為UTC。配置您的JVM以使用您想要用於報告的相同時區,這在理想情況下也應該與資料庫的時區匹配。將元資料庫設置Report Timezone為與要查看報告的時區相匹配,再次,這應該與您所做的其他時區設置相匹配。常見陷阱:
您的資料庫使用的日期/時間列沒有任何時區信息。通常,當發生這種情況時,您的資料庫將假定所有數據來自資料庫配置的任何時區,或者可能只是默認為UTC(請檢查資料庫供應商是否確定)。您的JVM時區與您的元資料庫Report Timezone選擇不同。這是一個非常常見的問題,可以通過啟動java來-Duser.timezone=正確地設置選項來匹配元資料庫報告時區。
配置日誌記錄級別默認情況下,Metabase會記錄相當多的信息。幸運的是,Metabase使用了Log4j,意味著日誌記錄是完全可配置的。
元資料庫的默認日誌配置可以在這裡找到。您可以覆蓋此屬性文件,並-Dlog4j.configuration在運行Metabase時通過傳遞參數來告訴Metabase使用您自己的日誌記錄配置文件:
java -Dlog4j.configuration=file:/path/to/custom/log4j.properties -jar metabase.jar開始自定義日誌記錄的最簡單方法是使用log4j.properties與上面連結的默認文件的副本並進行調整以滿足您的需求。請記住,您需要重新啟動Metabase才能使文件的更改生效。
通過JMX監控診斷性能相關問題可能是一個挑戰。幸運的是,JVM附帶了可以幫助診斷許多常見問題的工具。啟用JMX並使用像VisualVM這樣的工具可以幫助診斷與內存耗盡,掛起的元資料庫實例以及響應時間緩慢相關的問題。有關設置的更多信息,請參閱通過JMX監控。
Java版本配置資料庫將運行在Java版本7或更高版本上,但Java 8是最簡單和最常見的chioce。Java 7已於2015年4月由Oracle終身使用,因此,Metabase對Java 7的支持已被棄用。我們鼓勵用戶升級到Java 8,因為我們將在未來版本中放棄對Java 7的支持。有關安裝/升級Windows或MacOS系統的更多信息,請參閱Oracle安裝說明。Linux用戶可能會發現OpenJDK更易於安裝/升級,更多信息可在OpenJDK安裝頁面上找到。
在Java 7上運行在Java版本7上運行Metabase需要Java調用的附加參數:
java -XX:+CMSClassUnloadingEnabled -XX:+UseConcMarkSweepGC -XX:MaxPermSize=256m -jar metabase.jar
請注意,這些額外的參數在Java 8上不是必需的。對Java 7的支持已被棄用,並且鼓勵用戶進行升級。
在Java 8上運行在Java 8上運行是運行Metabase的最簡單途徑。沒有額外的參數要求,如果從Jar啟動,下面的調用將會起作用:
java -jar metabase.jar
在Java 9上運行Java版本9引入了一個新的模塊系統,對類加載有一些額外的限制。元資料庫(和它的依賴)仍然依賴於舊的行為。Metabase在Java 9上運行,但需要額外的參數才能解決模塊系統中的這些更改:
java --add-opens=java.base/java.net=ALL-UNNAMED -jar metabase.jar
生產環境配置建議:export MB_DB_TYPE=mysql
export MB_DB_DBNAME=metabase
export MB_DB_PORT=3306
export MB_DB_USER=<username>
export MB_DB_PASS=<password>
export MB_DB_HOST=localhost
java -jar -Duser.timezone=UTC metabase.jar
更詳細的配置請參考官方文檔:https://www.metabase.com/docs/latest/operations-guide/start.html
《全棧架構》