KairosDB 需要运行在java1.6及以上版本。以及设置java环境变量。
KairosDB 下载地址:https://github.com/kairosdb/kairosdb/releases
1. 将KairosDB解压到你想位于的目录下
2. 编辑conf/kairosdb.properties文件,更改 kairosdb.service.datastore属性,决定你要使用的数据库。默认是内存H2数据库,这个比较慢。
3. 执行./kairosdb run启动KairosDB。
1
2
3
|
# vim /etc/security/limits.conf
*
soft
nofile
65536
*
hard
nofile
65536
|
KairosDB 后端数据存储可以有多个选择。在默认情况下KairosDB使用内存H2数据库来存储数据点数据。要更改存储方式编辑kairosdb.properties 文件修改kairosdb.service.datastore属性。
1
|
kairosdb
.
service
.
datastore
=
org
.
kairosdb
.
datastore
.
h2
.
H2Module
|
这是默认情况下,在开发环境下,可以这么来配置。生产环境下不建议。
kairosdb.datastore.h2.database_path | H2数据库目录 |
删除数据库目录和重新启动KairosDB会导致数据丢失。
1
|
kairosdb
.
service
.
datastore
=
org
.
kairosdb
.
datastore
.
cassandra
.
CassandraModule
|
对Cassandra的默认配置是使用宽行。每一行设置为包含3周的数据,原因是如果你每毫秒写一个指标,3周的数据量刚刚超过10亿列。而Cassandra有一个20亿列的限制。
行的大小有点小的疑惑。当查询数据时,越多的数据位于当行上执行的效率高。这并不意味着Cassandra只能保存3周的数据,而是意味着在写入到新行前将3周的数据写入到同一行。 这个可以看看Cassandra模式。
更改read_repair_chance,这个值告诉Cassandra多久需要进行读修复。读修复默认是1,也就100%改变。推荐值为0.1,10%的改变。登录cassandra-cli执行下面的命令更改:
1
2
3
4
|
>
use
kairosdb
;
>
update
column
family
data_points
with
read_repair_chance
=
0.1
;
>
update
column
family
row_key_index
with
read_repair_chance
=
0.1
;
>
update
column
family
string_index
with
read_repair_chance
=
0.1
;
|
kairosdb.datastore.cassandra.host_name | Cassandra 的主机名或IP |
kairosdb.datastore.cassandra.port | Cassandra 服务端口号 |
kairosdb.datastore.cassandra.replication_factor | 当数据写入Cassandra时复制因子 |
kairosdb.datastore.cassandra.row_width | 在一行里的毫秒数。默认为7257600000,也就是12周。加载数据后更改此值会导致意想不到的结果。 |
kairosdb.datastore.cassandra.write_delay | 将数据写入到Cassandra,后台线程等待的时间。允许批量插入数据到存储。 |
kairosdb.datastore.cassandra.single_row_read_size | 当读单行时的列数。在性能与内存之间平衡。当查询行健索引和最初多获取后的持续查询时使用。 |
kairosdb.datastore.cassandra.multi_row_read_size | 一个查询读取初始多个get的列数。如果数据有极少的标记,该值设置大些。如果你的指标有很多标记组合低于该值,可能会遇到内存不足的问题。 |
1
|
kairosdb
.
service
.
datastore
=
net
.
opentsdb
.
kairosdb
.
HBaseModule
|
需要手动创建表。创建表的脚本位于源码目录下./src/scripts/create_hbase_table.sh
注意:HBase目前只支持秒级别数据。
kairosdb.datastore.hbase.timeseries_table | 时间序列表名 |
kairosdb.datastore.hbase.uinqueids_table | 唯一ID表名 |
kairosdb.datastore.hbase.zoo_keeper_quorum | zoo keeper quorum主机名 |
kairosdb.datastore.hbase.zoo_keeper_base_dir | |
kairosdb.datastore.hbase.auto_create_metrics | 自动创建指标 |
1
|
kairosdb
.
service
.
datastore
=
org
.
kairosdb
.
datastore
.
remote
.
RemoteModule
|
将远程的KairosDB服务器作为本地的KairosDB实例的存储并将数据发送到远程。数据以JSON格式存储在目录下。可配置的后台线程将压缩数据并将数据点上传到远程KairosDB实例上。
kairosdb.datastore.remote.data_dir | 数据点目录,默认当前目录。 |
kairosdb.datastore.remote.remote_url | 将数据发送到KairosDB 实例的URL,如: http://10.10.10.10:8080 |
kairosdb.datastore.remote.schedule | Quartz cron schedule 上传收集数据的频率 |
通过kairosdb.sh脚本来完成。
在前台启动服务:
1
|
# ./kairosdb.sh run
|
在后台启动服务:
1
|
# ./kairosdb.sh start
|
停止服务:
# ./kairosdb.sh stop
简单的收集些数据。
1
2
3
4
5
6
7
8
9
|
#!/bin/bash
set
-
e
while
true
;
do
awk
-
v
now
=
$
(
(
$
(
date
+
%
s
%
N
)
/
1000000
)
)
-
v
host
=
'www.ttlsa.com'
\
'{ print "put proc.loadavg.1m " now " " $1 " host=" host;
print "put proc.loadavg.5m " now " " $2 " host=" host;
print "put proc.loadavg.15m " now " " $3 " host=" host }'
/
proc
/
loadavg
sleep
1
done
|
nc
-
w
30
10.0.101.145
4242
|
KairosDB自带了一个可视化界面,不过与OpenTSDB的可视化界面对比,感觉比较糟糕。
访问地址:http://10.0.101.145:8080/index.html