1、介绍
OpenTSDB是一个架构在Hbase系统之上的实时监控信息收集和展示平台。它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易的接入到现有的报警系统里。OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化,图形化等。
2、安装
安装Gnuplot
Gnuplot 是一个命令行的交互式绘图工具(command-driven interactive function plotting program)。用户通过输入命令,可以逐步设置或修改绘图环境,并以图形描述数据或函数,使我们可以借由图形做更进一步的分析。
yum install gnuplot
如果是下载压缩包压缩包的话,解压后进入目录分别执行 ./configure; make; make check; make install
下载压缩包安装过程如下:
# based on a minimal installation, you need some packages in order to compile, I suggest
yum install gcc gcc-c++ make libX11 xauth
yum install cairo-devel pango-devel freetype-devel gd-devel
cd /usr/local/src/
wget http://sourceforge.net/projects/gnuplot/files/gnuplot/4.4.2/gnuplot-4.4.2.tar.gz/download
tar xzf gnuplot-4.4.2.tar.gz
cd gnuplot-4.4.2
less INSTALL
# start compiling. I usually install self-compiled stuff at /opt/[PKG-NAME]
./configure --prefix=/opt/gnuplot442
make
# make sure the shipped version of gnuplot is removed (this is probably not necessary but prevents version mix-up)
yum remove gnuplot
make install
# you might want to add a symlink
ln -s /opt/gnuplot442/bin/gnuplot /usr/bin/gnuplot
安装完成后执行gnuplot,确认支持png :执行set terminal可以查看
如果不支持则opentsdb在画图时会报错
安装完后可以验证是否可以正常画出png图片,画png图片示例如下:
[root@centos]#vim test.log
23:14 506.877
23:19 501.068
23:24 493.254
23:29 469.184
23:34 460.161
23:39 426.065
23:44 429.734
23:49 409.255
23:54 423.512
23:59 390.676
然后编写gnuplot的配置文件如下:
[root@centos]#vim log.conf
set terminal png truecolor size 550,250 #指定输出成png图片,且图片大小为550×250,需要ligpng支持,采用默认颜色设定
set output "log.png" #指定输出png图片的文件名
set autoscale #轴向标记自动控制
set xdata time #X轴数据格式为时间
set timefmt "%H:%M" #时间输入格式为"小时:分钟"
set style data lines #数据显示方式为连线
set xlabel "time per day" #X轴标题
set ylabel "Mbps" #Y轴标题
set title "image.tuku.china.com flow" #图片标题
set grid #显示网格
plot "test.log" using 1:2 title"access_flow" #从test.log文件中读取第一列和第二列作为X轴和Y轴数据,示例名"log_flow"
最后运行catlog.conf | gnuplot命令,就生成了log.png文件,如下:
画png图需要有arial字体支持,centos中arial字体安装方法如下:
经常运行一些生物信息软件的时候,提示:Could not find/open font when opening font “arial”, using internalnon-scalable font等信息。此时,表示CentOS系统缺乏相应的字体文件。需要安装,步骤如下:
1.widonws下载字体文件到Linux
windows的字体比较多,其字体文件位于 C:\WINDOWS\Fonts。从其中copy相应的字体到Linux系统的 /usr/share/font/下的文件夹中。以arial字体为例:
# mkdir/usr/share/fonts/arial
# cp arial*.ttf/usr/share/fonts/arial/
2. 为刚加入的字体设置缓存使之有效
# cd/usr/share/font/arial
# mkfontscale
# mkfontdir
# fc-cache -fv
经过这样的设置后,即可在Gnome界面的系统——首选项——外观——字体中进行字体的选择了。
3. 设置gunplot对arial的选择路径
本文首页提示的错误是由于程序调用gunplot造成,必须让gunplot识别arial字体所在的路径才行。
$ exportGDFONTPATH=/usr/share/fonts/arial
$ exportGNUPLOT_DEFAULT_GDFONT="arial"
gnuplot画图技巧
http://blog.csdn.net/wdzxl198/article/details/8970521
安装autoconf
Autoconf是一个用于生成可以自动地配置软件源代码包以适应多种Unix类系统的 shell脚本的工具。由Autoconf生成的配置脚本在运行的时候与Autoconf是无关的, 就是说配置脚本的用户并不需要拥有Autoconf。
yum install autoconf
安装git
yum -y install zlib-devel openssl-devel perl cpio expat-devel gettext-devel
yum install git
下载opentsdb2.0.0源码
//git clone git://github.com/stumbleupon/opentsdb.git
https://github.com/OpenTSDB/opentsdb/releases/tag/v2.0.0RC1
cd opentsdb
./build.sh
执行过程报错,错误信息如下
Can't exec "aclocal": No such file or directory at/usr/share/autoconf/Autom4te/FileUtils.pm line 326.
网上搜了一下,发现缺少automake工具
yum install automake
安装完antomake后进入opentsdb目录再次执行
./build.sh
3.设置&运行
先启动hadoop和hbase集群
配置环境变量,在shell中执行如下命令:
env COMPRESSION=none HBASE_HOME=/usr/hadoop/bbase0941
./opentsdb/src/create_table.sh
在hbase伪分布环境下貌似要修改create_table.sh,否则建表会卡住:
exec"$hbh/bin/hbase" shell <
create'$UID_TABLE','id', 'name'
# {NAME => 'id', COMPRESSION =>'$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'},
# {NAME => 'name', COMPRESSION =>'$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
create'$TSDB_TABLE','t'
# {NAME => 't', VERSIONS => 1,COMPRESSION => '$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
create'$TREE_TABLE','t'
# {NAME => 't', VERSIONS => 1,COMPRESSION => '$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
create'$META_TABLE','name'
# {NAME => 'name', COMPRESSION =>'$COMPRESSION', BLOOMFILTER => '$BLOOMFILTER'}
启动tsd服务
./build/tsdb tsd --port=4242--staticroot=build/staticroot --cachedir=/tmp/tsdtmp –zkquorum=localhost
tsd服务运行参数说明:
Usage: tsd --port=PORT --staticroot=PATH --cachedir=PATH
Starts the TSD, the Time Series Daemon
--async-io=true|false Use async NIO (default true) or traditionalblocking io
--auto-metric Automatically add metrics to tsdb as they are inserted. Warning:this may cause unexpected metrics to be tracked
--cachedir=PATH Directory underwhich to cache result of requests.
--flush-interval=MSEC Maximum time for which a new data point canbe buffered (default: 1000).
--port=NUM TCPport to listen on.
--staticroot=PATH Web root from which toserve static files (/s URLs).
--table=TABLE Nameof the HBase table where to store the time series (default: tsdb).
--uidtable=TABLE Name of theHBase table to use for Unique IDs (default: tsdb-uid).
--worker-threads=NUM Number for async io workers(default: cpu * 2).
--zkbasedir=PATH Path underwhich is the znode for the -ROOT- region (default: /hbase).
--zkquorum=SPEC Specificationof the ZooKeeper quorum to use (default: localhost).
以下是tsdb可运行的命令
usage: tsdb
Valid commands: fsck, import, mkmetric, query, tsd, scan, uid
4.测试
保存标签
./build/tsdb mkmetric proc.loadavg.1mproc.loadavg.5m
编写脚本并运行
cat >loadavg-collector.sh <<\EOF
#!/bin/bash
set -e
while true; do
awk -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 15
done | nc -w 30 192.168.145.1294242
EOF
chmod +x loadavg-collector.sh
nohup ./loadavg-collector.sh &
红字部分换成启动tsd服务的服务器IP和端口
vimnohup.out 可能显示-bash nc: not command found需要安装nc
yuminstall nc
每隔15秒会输出如下信息到tsd
put proc.loadavg.1m 1288946927 0.36 host=foo
put proc.loadavg.5m 1288946927 0.62 host=foo
put proc.loadavg.1m 1288946942 0.43 host=foo
put proc.loadavg.5m 1288946942 0.62 host=foo
使用浏览器登陆 192.168.145.129:4242,在from、to中选择好时间范围,在metrics里输入 “proc.loadavg.1m”,就能在图表中看到监控信息,如下图
5.总结opentsdb的表设计特点可以满足时间序列的数据存储在hbase中并能秒级相应。适合于以固定时间间隔的数据采集,例如系统软件和硬件的监控。结合logstash可以监控应用log日志信息。
官方网站:http://opentsdb.net/getting-started.html(更新autoconf,automake到最新版)
1.安装gnuplot-4.4.6:http://www.gnuplot.info/
wgethttp://nchc.dl.sourceforge.net/project/gnuplot/gnuplot/4.6.0/gnuplot-4.6.0.tar.gz
cd gnuplot-4.4.6
./configure
make
make install
2.安装git:http://my.oschina.net/lgc/blog/5370
yum -y install zlib-devel openssl-devel perlcpio expat-devel gettext-devel
wgethttp://www.codemonkey.org.uk/projects/git-snapshots/git/git-latest.tar.gz
tar xzvf git-latest.tar.gz
cd git-{date}
autoconf
./configure --with-curl=/usr/local
make & make install
3.安装opentsdb
git clonegit://github.com/stumbleupon/opentsdb.git
cd opentsdb
./build.sh
env COMPRESSION=noneHBASE_HOME=path/to/hbase-0.92.X ./src/create_table.sh
修改/usr/local/opentsdb/build/tsdb
vi /usr/local/opentsdb/build/tsdb
将
abs_srcdir=
abs_builddir=
修改为如下
abs_srcdir='/usr/local/opentsdb/build/..'(opentsdb安装位置)
abs_builddir='/usr/local/opentsdb/build'(opentsdb安装位置)
tsdtmp=${TMPDIR-'/tmp'}/tsd # Forbest performance, make sure
mkdir -p "$tsdtmp" # your temporary directory uses tmpfs
./build/tsdb tsd --port=4242--staticroot=build/staticroot --cachedir="$tsdtmp"--zkquorum=10.96.80.156,10.96.80.152
zkquorum表示zookeeper的位置
编译期:
MainClass:com.google.gwt.dev.Compiler
Arguments:-war staticroot QueryUi,其中staticroot是编译后的静态文件的存放目录;
QueryUi是QueryUi.gwt.xml的名字,必须放在src目录下。
Eclipse的debug configuration中的classpath中必须包括src目录,因为compiler需要有源代码。
QueryUi.gwt.xml的内容如下:
其中,tsd.client.QueryUi是类全名。类全名中必须有client。
开发期Eclipse运行:
MainClass:
net.opentsdb.tools.TSDMain
Arguments:
--port=4242
--staticroot=staticroot/QueryUi
--cachedir=cachedir
--zkquorum=192.168