架构组成
Graphite由三部分组成
- Carbon: 监听时序数据的高性能服务
- Whisper: 用于存储时序数据的简单的数据库
- Graphite-web: 提供Graphite渲染图表及后台的用户数据及API接口
如何将指标数据写入Graphite
|
|
指标数据将存储在Whisper数据库中,位于Graphite文件系统的<prefix>/storage/whisper/foo/bar.wsp
(大多数情况下,Graphite路径前缀是/opt/graphite)。在Graphite Composer中创建新的图表后,你会发现bar以嵌套的形式存在于foo目录下
在Graphite中,指标、图、后台等使用以.
分割的命名空间结构。这对于想使用应用、服务器、数据中心、甚至是提交人等来分组和组织指标信息是极为方便的
以下推荐几种常见的写入graphite的方案
定时shell任务
有时你只是需要一个快捷的方式来记录指标,可以使用定时任务的方式来记录。
|
|
使用StstsD采集应用指标
记录应用性能信息是很有必有的。多亏了像StatsD这类工具,我们可以异步测量应用非阻塞,不必担心阻塞行为,也不必自行实现收集聚合机制
Etsy在早在2011年发布了最初的StatsD,做为一个开源的指标聚合器。到目前为止,围绕StatsD已经建立了庞大的生态系统。只需几行代码,你便可以将应用的数据以常规非阻塞的形式发往Graphite
|
|
使用Collectd采集主机指标
监控服务器信息是Graphite作为时间序数据库最常用的用法。Collected是一个非常流行的采集代理,性能好(使用C语言编写),配置简易,并拥有大量的读写库插件。
|
|
我们编写一个发送指标数据到Graphite服务器的最小配置实现。修改配置文件(/etc/collected/collectd.conf)并重启collectd
|
|
此时你应该可以在collectd命名空间下看到来自运行collectd的服务器的指标信息
其他可选传输方式
Carbon除了支持纯文本传输外,还支持AMQP、Python的Pickle格式。如果你对此不太了解的话,建议你读读官方文档)中的相关选项