安装Metabase:
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运行时。
- OpenJDK下载
- Oracle的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’s get started
按钮,如果想更深入的了解,请继续往下看。
配置应用程序数据库
应用程序数据库是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将路径指定; 不要包括你的路径!换句话说,MB_DB_FILE应该是类似的东西/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=
export MB_DB_PASS=
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=
export MB_DB_PASS=
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。在某些生产环境中,您可能想要在不同的界面上进行监听,这可以通过使用MB_JETTY_HOST环境变量来完成:
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=
export MB_DB_PASS=
export MB_DB_HOST=localhost
java -jar -Duser.timezone=UTC metabase.jar
更详细的配置请参考官方文档:https://www.metabase.com/docs/latest/operations-guide/start.html