Opentsdb

OpenTSDB介绍

openTSDB使用hbase作为存储中心,它无须采样,可以完整的收集和存储上亿的数据点,支持秒级别的数据监控,得益于hbase的分布式列式存储,hbase可以灵活的支持metrics的增加,可以支持上万机器和上亿数据点的采集。在openTSDB中,TSD是hbase对外通信的daemon程序,没有master/slave之分,也没有共享状态,因此利用这点和hbase集群的特点就可以消除单点。用户可以通过telnet或者http协议直接访问TSD接口,也可以通过rpc访问TSD。每一个需要获取metrics的Servers都需要设置一个Collector用来收集时间序列数据。这个Collector就是你收集数据的脚本。

OpenTSDB安装

用rpm包安装

yum -y install lzo lzo-devel gnuplot
rpm -ivh opentsdb-2.1.0RC1.noarch.rpm

编译安装opentsdb

create_table.sh

#若需指定hbase中的表名,先export如下变更
#export TSDB_TABLE='pre_tsdb'
#export UID_TABLE='pre_tsdb-uid'
#export TREE_TABLE='pre_tsdb-tree'
#export META_TABLE='pre_tsdb-meta'

env COMPRESSION=LZO HBASE_HOME=/opt/hbase/ ./src/create_table.sh
# opentsdb 2.0.0
tsdb      {NAME => 'tsdb', FAMILIES => [{NAME => 't', BLOOMFILTER => 'ROW', VERSIONS => '1', COMPRESSION => 'LZO'}]}
tsdb-meta {NAME => 'tsdb-meta', FAMILIES => [{NAME => 'name', BLOOMFILTER => 'ROW', COMPRESSION => 'LZO'}]}
tsdb-tree {NAME => 'tsdb-tree', FAMILIES => [{NAME => 't', BLOOMFILTER => 'ROW', VERSIONS => '1', COMPRESSION => 'LZO'}]}
tsdb-uid  {NAME => 'tsdb-uid', FAMILIES => [{NAME => 'id', COMPRESSION => 'LZO'}, {NAME => 'name', COMPRESSION => 'LZO'}]}

配置文件

配置:bin/opentsdb.conf,若使用rpm包安装,则配置文件是/etc/opentsdb/opentsdb.conf。

编译安装配置

tsd.network.port = 4242
tsd.network.bind = 0.0.0.0
tsd.http.staticroot = /opt/opentsdb/share/opentsdb/static
tsd.http.cachedir =
tsd.core.auto_create_metrics = true
tsd.core.meta.enable_realtime_ts=true
tsd.storage.hbase.zk_quorum = yunwei2.myit:2181

# 使用以下配置项指定hbase中的表名称
# Name of the HBase table where data points are stored, default is "tsdb"
#tsd.storage.hbase.data_table = pre_tsdb

# Name of the HBase table where UID information is stored, default is "tsdb-uid"
#tsd.storage.hbase.uid_table = pre_tsdb-uid

#tsd.storage.hbase.meta_table = pre_tsdb-meta
#tsd.storage.hbase.tree_table = pre_tsdb-tree

rpm包安装配置

opentsdb.log和opentsdb-tsdb.tyunwei-opentsdb.out中同时输出详细请求记录,浪废存储和磁盘I/O,可修改/etc/opentsdb/logback.xml如下内容屏蔽FILE输出:

  <root level="INFO">
    <appender-ref ref="STDOUT"/>
    <appender-ref ref="CYCLIC"/>
    <!--appender-ref ref="FILE"/-->
  </root>

启动脚本

/etc/init.d/opentsdb {start|stop|status|restart|condrestart|try-restart|reload|force-reload}

日志截断

# opentsdb.log自动回滚设置
cat > /etc/logrotate.d/opentsdb <<EOF
/var/log/opentsdb/opentsdb*.out /var/log/opentsdb/opentsdb*.err {
    copytruncate
    daily
    rotate 20
    compress
    missingok
    size 200M
}
EOF

访问tsdb及配置

其它

通过nginx负载调度

# Update: 2014-04-23
upstream tsdb_dev_backends {
    #ip_hash;
    server 127.0.0.1:4243 max_fails=3 fail_timeout=10s;
    server 127.0.0.1:4242 max_fails=3 fail_timeout=10s;
}

server {
    listen 14242;
    #server_name 172.17.19.80;
    charset utf-8;

    client_max_body_size 20M;

    access_log /var/log/nginx/opentsdb.access.log main;
    error_log /var/log/nginx/opentsdb.error.log warn;

    location / {
        proxy_read_timeout 30;
        proxy_connect_timeout 10;
        proxy_pass_header Server;
        proxy_set_header Host $http_host;
        #proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Scheme $scheme;
        proxy_pass http://tsdb_dev_backends;
    }
} #End server