最近在写一个服务端daemon程序,需长驻运行,很想知道它的一些性能指标,比如qps啥的,最好呢还能通过前端图表的方式来展现出来。得知collectd+influxdb+grafana可能能满足我的需求,所以特来一试。目前表现还不尽人意,有时间会持续更新
collectd
安装好说,版本5.5,直接yum install即可,当然也可编译安装
配置文件/etc/collectd.conf,支持很多插件,前面一个#代表系统目前支持的插件,前面有两个##的代表系统目前不支持,因为缺乏相关的包。
为了方便起见,可以先暂时只开启cpu,memory,load等一些常见plugin。具体做法也简单,去掉LoadPlugin cpu, Plugin cpu的注释
为了与influxdb通知,collectd要作为客户端,连接influxdb的25826端口,所以要打开network plugin并配置server属性;为了让influxdb能够识别collectd的数据,要安装rrdtool插件,否则/var/lib/collectd/rrd目录不会生成
最后终端执行collectd
其实collectd也支持很多web前端,我只试了其中一个叫collectd graph panel,感觉不怎么样,只看见一些密密麻麻的线,本来可以用滚轮展开,可一刷新又成了密密麻麻,体验不好。界面如下图所示:
influxdb
直接下载rpm安装,版本0.13
配置文件
###
### [collectd]
###
### Controls one or many listeners for collectd data.
###
[[collectd]]
enabled = true
bind-address = "10.77.44.158:25826"
database = "collectd"
typesdb = "/usr/share/collectd/types.db"
# These next lines control how batching works. You should have this enabled
# otherwise you could get dropped metrics or poor performance. Batching
# will buffer points in memory if you have many coming in.
batch-size = 5000 # will flush if this many points get buffered
batch-pending = 10 # number of batches that may be pending in memory
batch-timeout = "10s" # will flush at least this often even if we haven't hit buffer limit
read-buffer = 0 # UDP Read buffer size, 0 means OS default. UDP listener will fail if set above OS max.
浏览器查看
/etc/init.d/influxdb start启动,用浏览器查看8083端口即可访问influxdb前端,并可用类似sql命令来访问数据
查看最新数据:
注意influxdb显示的时间应该是UTC格式的,离本地时间差了8个小时,目前还不知道怎么配置成本地时间,所以只能这样了。
CLI查看
终端执行influx可进入influxdb 命令行
上面几个命令非常类似于sql语法,只不过没了分号。干的事情就是创建了test了数据库,往一个类似table的measurement里插入了一条数据,有两个tag名叫host和region,有一个field名叫value
刷新浏览器查看:
grafana
直接下载rpm安装,版本3.1
浏览器查看3000端口,即可访问grafana前端
配置data source
配置query editor
正如上图所示,显示的数值确实有问题,也不知道percentile函数到底行不行
暂且抛砖引玉,关于grafana的更多函数还得再细细研究。