1、介绍
openTSDB(见图)使用hbase作为存储中心,它无须采样,可以完整的收集和存储上亿的数据点,支持秒级别的数据监控,得益于hbase的分布式列式存储,hbase可以灵活的支持metrics的增加,可以支持上万机器和上亿数据点的采集。在openTSDB中,TSD是hbase对外通信的daemon程序,没有master/slave之分,也没有共享状态,因此利用这点和hbase集群的特点就可以消除单点。用户可以通过telnet或者http协议直接访问TSD接口,也可以通过rpc访问TSD。每一个需要获取metrics的Servers都需要设置一个Collector用来收集时间序列数据。这个Collector就是你收集数据的脚本。
2、安装好JDK并配置JAVA_HOME
JAVA_HOME=/usr/java/latest
3、安装单节点的hbase
a、下载hbase-0.94.7.tar.gz并解压缩
tar -zxf hbase-0.94.7.tar.gz
cd hbase-0.94.7/conf
vim hbase-site.xml
b、配置HBASE_HOME
export HBASE_HOME=/root/OpenTSDB/hbase-0.94.7
c、启动hbase
/bin/start-hbase.sh
d、查看hbase进程
jps查看是否有HMaster
ps aux| grep hbase
4、安装openTSDB所需的一些软件
yum install gnuplot autoconf git -y
5、安装openTSDB
a、下载opentsdb-1.1.0.tar.gz
tar -zxf opentsdb-1.1.0.tar.gz
cd opentsdb-1.1.0
./build.sh
6、运行opneTSDB
配置环境变量并建hbase表
env COMPRESSION=none HBASE_HOME=/root/OpenTSDB/hbase-0.94.7 /root/OpenTSDB/opentsdb-1.1.0/src/create_table.sh
./build/tsdb tsd --port=4242--staticroot=staticroot --cachedir=/tmp/tsdtmp &
以下是tsdb可运行的命令
usage: tsdb
Valid commands: fsck, import, mkmetric, query, tsd, scan, uid
7、测试
收集系统负载:
cat >loadavg-collector.sh <<\EOF
!/bin/bash
set -e whiletrue;
doawk -v now=date +%s
-v host=hostname
\ '{ print "put proc.loadavg.1m "now " "$1" host="host;
print "put proc.loadavg.5m "now " "$2" host="host }'
/proc/loadavg sleep 15done | nc -w 30192.168.0.754242
EOF
chmod +x loadavg-collector.sh
nohup ./loadavg-collector.sh &
然后可以在终端看见:
put proc.loadavg.1m 12889469270.36host=desktop30
put proc.loadavg.5m 12889469270.62host=desktop30
put proc.loadavg.1m 12889469420.43host=desktop30
put proc.loadavg.5m 12889469420.62host=desktop30
此时,在OpenTSDB服务器上,添加metric
/root/OpenTSDB/opentsdb-1.1.0/build/tsdb mkmetric proc.loadavg.1m proc.loadavg.5m
也可在启动时添加自动创建参数,--auto-metric,如下:
./build/tsdb tsd --port=4242--staticroot=staticroot --cachedir=/tmp/tsdtmp --auto-metric &
然后通过浏览器访问:http://192.168.0.75:4242,如下图