Installation

OpenTSDB 可以从源代码编译或从程序包安装。可以在Github上找到发行版。

Runtime Requirements

要实际运行 OpenTSDB,您需要满足以下条件:

  • Linux 系统(或具有手动构建功能的 Windows)

  • Java Runtime Environment 1.6 或更高版本

  • HBase 0.92 或更高版本

  • GnuPlot 4.2 或更高版本

Installation

首先,您需要设置 HBase。如果您是 HBase 和/或 OpenTSDB 的新手,我们建议您使用独立实例进行测试,因为这是最容易启动和运行的实例。最好的起点是遵循Apache 快速入门指南。或者,您可以尝试打包的发行版,例如Cloudera's CDHHortonworks HDPMapR

在 continue 使用 OpenTSDB 之前,请确保 Zookeeper 可以访问。一种方法是简单地 telnet 到适当的端口并执行stats命令。

root@host:~# telnet localhost 2181
Trying 127.0.0.1...
Connected to myhost.
Escape character is '^]'.
stats
Zookeeper version: 3.4.3-cdh4.0.1--1, built on 06/28/2012 23:59 GMT
Clients:

Latency min/avg/max: 0/0/677
Received: 4684478
Sent: 4687034
Outstanding: 0
Zxid: 0xb00187dd0
Mode: leader
Node count: 127182
Connection closed by foreign host.

如果无法连接到 Zookeeper,请检查 IP 和名称解析。 HBase 可能很挑剔。

如果 HBase 正在运行,则可以选择从软件包(在 Github 中的Releases下提供)或使用 GIT 或源 tarball 从源安装 OpenTSDB。

从源编译

编译要求包括:

  • Linux 系统

  • Java Development Kit 1.6 或更高版本

  • GnuPlot 4.2 或更高版本

  • Autotools

  • Make

  • Python

  • Git

  • 互联网连接

使用git clone命令下载最新版本,或从网站或 Github 下载版本。然后只需运行build.sh脚本。该脚本有助于运行编译 OpenTSDB 所需的所有进程:它运行./bootstrap(第一次签出代码时仅运行一次),然后运行./configuremake。构建过程的输出将放入build文件夹中,并将下载 OpenTSDB 所需的 JAR。

git clone git://github.com/OpenTSDB/opentsdb.git
cd opentsdb
./build.sh

如果编译成功,则您应在./build中有一个 tsdb jar 文件以及tsdb脚本。现在,您可以通过调用./build/tsdb来执行命令行工具,或者可以运行make install在系统上安装 OpenTSDB。如果您改变主意,也有make uninstall,因此没有附加条件。

如果需要将 OpenTSDB 分发到没有 Internet 连接的计算机,请调用./build.sh dist将构建目录包装到一个 tarball 中,然后可以将其复制到其他计算机上。

Source Layout

GITrepo 中有四个主要分支。

  • master 这是 OpenTSDB 的当前版本。它被标记为稳定,并且在各个发行版之间,仅应用错误修复。这始终适合在 Producing 运行。

  • 维护 这是 OpenTSDB 的先前版本,可能在各个版本之间应用了错误修复。

  • 下一页 正在开发中的 OpenTSDB 的当前版本。该版本适用于开发环境,并且可能具有新功能以及错误修复。如果候选版本已被删除,则此分支将仅包含错误修复,并且适合于登台环境。

  • 放置 当下一个分支中存在候选发布版本时,OpenTSDB 的下一版本可能具有新功能。

Debian Package

您可以通过调用sh build.sh debian来生成 Debian 软件包。包将位于./build/opentsdb-2.x.x/opentsdb-2.x.x_all.deb。然后,只需分发软件包并按常规进行安装即可。例如dpkg -i opentsdb-2.0.0_all.deb

Debian 软件包将创建以下目录:

  • / etc/opentsdb-配置文件

  • / tmp/opentsdb-临时缓存文件

  • / usr/share/opentsdb-应用程序文件

  • / usr/share/opentsdb/bin-启动 TSD 或命令行工具的“ tsdb”启动脚本

  • / usr/share/opentsdb/lib-Java JAR 库文件

  • / usr/share/opentsdb/plugins-插件文件和依赖项的位置

  • / usr/share/opentsdb/static-GUI 的静态文件

  • / usr/share/opentsdb/tools-脚本和其他工具

  • / var/log/opentsdb-日志

安装包括位于/etc/init.d/opentsdb的初始化脚本,该脚本可以启动,停止和重新启动 OpenTSDB。只需调用service opentsdb start以启动 tsd,然后调用service opentsdb stop以正常关闭。请注意,安装后,tsd 将不会运行,因此您可以编辑配置文件。编辑配置文件,然后启动 TSD。

Debian 软件包还为 TSD 创建了一个opentsdb用户和组,以在其下运行以提高安全性。 TSD 仅需要对临时目录和日志目录具有写许可权。如果您无法使用默认位置,请分别在/etc/opentsdb/opentsdb.conf/etc/opentsdb/logback.xml中进行更改,并为opentsdb用户应用适当的权限。

如果是第一次安装 OpenTSDB,则需要使用位于/usr/share/opentsdb/tools/create_table.sh的脚本来创建 HBase 表。请按照以下步骤操作。

Create Tables

如果这是第一次使用 HBase 实例运行 OpenTSDB,则首先需要创建必要的 HBase 表。提供了一个简单的脚本来创建具有启用或禁用压缩功能的适当表。执行:

env COMPRESSION=NONE HBASE_HOME=path/to/hbase-0.94.X ./src/create_table.sh

其中COMPRESSION的值为NONELZOGZIPSNAPPY。这将创建四个表:tsdbtsdb-uidtsdb-treetsdb-meta。如果您只是在评估 OpenTSDB,现在就不必担心压缩。在批量 Producing,请确保使用有效的压缩库,因为它将大大节省存储空间。

启动 TSD

OpenTSDB 2.4 可处理守护程序和命令行工具之间共享的配置文件。如果是从源代码编译的,则将./src/opentsdb.conf文件复制到Configuration中记录的适当目录,然后编辑以下必需设置:

  • tsd.http.cachedir **-将临时文件写入的路径

  • tsd.http.staticroot **-./build/staticroot中找到的静态 GUI 文件的路径

  • tsd.storage.hbase.zk_quorum **-如果 HBase 和 Zookeeper 未在同一台计算机上运行,请在此处指定主机和端口。

写入配置文件后,您可以使用以下命令启动 tsd:

./build/tsdb tsd

或者,您也可以使用以下命令来创建临时目录并仅传递命令行标志:

tsdtmp=${TMPDIR-'/tmp'}/tsd    # For best performance, make sure
mkdir -p "$tsdtmp"             # your temporary directory uses tmpfs
./build/tsdb tsd --port=4242 --staticroot=build/staticroot --cachedir="$tsdtmp" --zkquorum=myhost:2181

此时,您可以通过http://127.0.0.1:4242访问 TSD 的 Web 界面(如果它在本地计算机上运行)。

Note

“缓存目录”存储通过内置 GUI 请求图形时生成的临时文件。这些文件应定期清除以释放空间。目前,OpenTSDB 不会自动清除,但是位于tools/clean_cache.sh的脚本至少每天应作为 cron 运行一次。

从 1.x 升级

OpenTSDB 2.4 与 1.x 数据完全向后兼容。我们已竭尽全力确保您可以下载 2.4,进行编译,停止旧的 TSD 并启动新的 TSD。您现有的工具将毫无问题地读写 TSD。 2.4 向 HBase 模式引入了两个新表,用于存储元数据。从下载源的目录(如果是与 Debian 软件包一起安装的,则从 tools 目录)执行:

env COMPRESSION=NONE HBASE_HOME=path/to/hbase-0.94.X ./src/upgrade_1to2.sh

其中COMPRESSION与您现有的生产表压缩格式相同。

虽然您可以使用与 1.0 TSD 相同的命令行选项启动 2.4 TSD,但我们强烈建议您根据./src/opentsdb.conf处包含的配置创建配置文件。或者,如果您是从软件包安装的,则需要编辑随附的默认配置。配置文件包含的选项比通过命令行访问的选项多得多,并且该文件与 CLI 工具共享。有关详情,请参见Configuration

您不必同时将所有 TSD 升级到 2.4. 一些用户首先升级其只读 TSD,以获得对完整 HTTP API 的访问权限并测试新功能。稍后,您可以随意升级只写 TSD。您也可以执行滚动升级而不会出现问题。只需停止到一个 TSD 的流量,对其进行升级,还原流量,然后 continue 进行,直到升级完所有 TSD。

如果确实在具有多个 TSD 的情况下执行滚动升级,请注意以下警告:

Warning

当您同时运行 1.x 和 2.x 时,请勿写 Comments 或带有毫秒时间戳的数据点**。由于这些数据与常规数据点存储在同一行中,因此它们可能会影响压缩和查询。

在升级到 2.x 之前,您可能需要将所有 TSD 升级到 OpenTSDB 1.2. 此版本完全向前兼容,因为它将忽略 Comments 和毫秒时间戳,并按预期运行。在运行 1.2 的情况下,如果您不小心记录了 Comments 或毫秒数据点,则您的 1.2 TSD 将正常运行。

从 2.x 升级到更高的 2.x

通常,在单个主要发行分支内升级仅是更新二进制文件或程序包并重新启动 TSD 的问题。在分支内,我们将维护设置,API 和架构。但是,每个次要版本可能会添加新功能,其中包括具有有用默认值的新配置设置。

Note

到目前为止,唯一的 exception 是在 2.2.0 中引入了加盐的行。默认情况下处于禁用状态,要使用此功能,需要使用一组新的预拆分来创建一个新的 HBase 表,并修改每个 TSD 的配置以使用启用了盐析的新表。盐渍和未盐渍的表的架构不兼容,因此,如果用户在先前的表中有很多数据,则最好让一些 TSD 运行以查询旧表,并查询新的 TSD 以写入和读取新的盐渍表表。对于较小的数据量,可以使用scan工具导出和重新导入数据。

Note

与 2.3 类似,引入新的后端(Bigtable 或 Cassandra)需要设置新的存储表并迁移数据。

Downgrading

因为我们一直在努力保持向后兼容性,所以您可以关闭 2.x TSD 并重新启动旧的 1.x TSD。唯一的 exception 是,如果您已经写了 Comments 或毫秒,如上面的警告所示。在这些情况下,您必须降级到 1.2 或更高版本。如果需要,您也可以删除tsdb-treetsdb-meta表。

主版本中的降级是幂等的。

Warning

如果使用加盐表写入数据或更改了 Metrics,标记键或标记值的 UID 宽度,则无法降级。创建一个新表并从旧表中导出数据,然后使用旧的 TSD 版本将数据重新写入新表中。