CLI Tools
OpenTSDB 由单个 JAR 文件组成,该文件使用 Shell 脚本来确定用户想要执行的操作。虽然最常见的操作是使用tsd
命令启动 TSD,以便它可以一直运行并处理 RPC,但其他命令也可用于处理 OpenTSDB 数据。这些命令包括:
从编译 OpenTSDB 之后构建的tsdb
文件的位置执行访问 CLI 工具。缺省情况下,tsdb 文件位于build
目录中,因此您可以通过./build/tsdb
访问它。提供./build/tsdb tsd
中的 CLIUtil 的名称。
Common Parameters
所有命令行 Util 共享一些常见的命令行参数:
Name | Data Type | Description | Default | Example |
---|---|---|---|---|
--config | String | OpenTSDB Configuration文件的完整或相对路径。如果未提供此参数,该命令将尝试加载默认配置文件。 | See Configuration | --config=/usr/local/tempconfig.conf |
--table | String | 存储数据点的 HBase 表的名称 | tsdb | --table=prod-tsdb |
--uidtable | String | 存储 UID 信息的 HBase 表的名称 | tsdb-uid | --uidtable=prod-tsdb-uid |
--verbose | Boolean | 对于某些 CLI 工具,此命令将允许按 logback.xml 配置进行 INFO 以及更高级别的日志记录。否则,如果没有此标志,则某些工具可能仅记录警告消息。 | ||
--zkbasedir | String | -ROOT-区域的 znode 所在的路径 | /hbase | --zkbasedir=/prod/hbase |
--read-only | Boolean | 设置 OpenTSDB 的模式 | false | --read-only |
--zkquorum | String | ZooKeeper 仲裁要使用的规范,即 ZooKeeper 集群中服务器和/或端口的列表 | localhost | --zkquorum=zkhost1,zkhost2,zkhost3 |
Site-specific Configuration
所有 CLI 命令都需要上面的公共参数。一遍又一遍地手动键入它们可能很麻烦。您可以将通常使用的值存储在文件./tsdb.local
中。该文件应该是 Shell 脚本,如果存在,将以./tsdb
来源。
设置通用参数的默认值
例如,如果您的 ZooKeeper 仲裁位于 DNS 名称“ zookeeper.example.com”(具有 5 条 A 记录的名称)的后面,而不是每次都将--zkquorum=zookeeper.example.com
传递给 CLI 工具,则可以使用创建以下内容:
#!/bin/bash
MY_ARGS='--zkquorum=zookeeper'
set x $MY_ARGS "$@"
shift
覆盖 TSD 的时区
服务器经常使用 UTC 作为时区。默认情况下,TSD 使用服务器的本地时区来绘制图形。您可以通过在./tsdb.local
中指定时区来覆盖此设置,以在本地时间显示图形。例如,如果您在加利福尼亚 State,这将迫使 TSD 使用您的时区:
echo export TZ=PST8PDT >>tsdb.local
在大多数 Linux 和 BSD 系统上,您可以在/usr/share/zoneinfo
下查找系统上支持的时区名称。
更改 JVM 参数
您可能想要调整 JVM 参数,例如打开 GC 活动日志记录或设置各种内存区域的大小。为此,只需在./tsdb.local
中设置变量 JVMARGS 即可。
这是推荐用于生产的示例:
GCARGS="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps\
-XX:+PrintTenuringDistribution -Xloggc:/tmp/tsd-gc-`date +%s`.log"
if test -t 0; then # if stdin is a tty, don't turn on GC logging.
GCARGS=
fi
# The Sun JDK caches all name resolution results forever, which is stupid.
# This forces you to restart your application if any of the backends change
# IP. Instead tell it to cache names for only 10 minutes at most.
FIX_DNS='-Dsun.net.inetaddr.ttl=600'
JVMARGS="$JVMARGS $GCARGS $FIX_DNS"