Graphite详解

Graphite详解

作者:chszs,未经博主允许不得转载。经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs

Graphite是一个开源实时的、显示时间序列度量数据的图形系统。Graphite并不收集度量数据本身,而是像一个数据库,通过其后端接收度量数据,然后以实时方式查询、转换、组合这些度量数据。Graphite支持内建的Web界面,它允许用户浏览度量数据和图。

Graphite有三个主要组件组成:

  • 1)Graphite-Web
    这是一个基于Django的Web应用,可以呈现图形和仪表板
  • 2)Carbon
    这是一个度量处理守护进程
  • 3)Whisper
    这是一个基于时序数据库的库

Graphite的整体架构图

一、Graphite的应用场景

Graphite通常用于监控基础设施级别的度量,比如CPU、内存、I/O利用率、网络吞吐量和延迟,当然Graphite在应用程序级的度量和业务级的度量方面也很不错。

Collectd是一个著名的、持续很久的Linux项目,它用于收集基础设施级的度量,在2012年被Graphite打包到项目中,作为Graphite的“写插件”。Collectd自带了很多采集插件,可以捕获从CPU到电池利用率方面度量数据,还可以度量Java和Redis方面。

通常度量不会直接发送给Graphite的后端,而是发送一次一个度量或采样给度量采集服务。StatsD是另一个开源项目,是一个著名的度量采集服务。它可以聚合接收到的采样数据,做计算统计,求平均值、标准差和其他一些统计,周期性地刷新数据到度量数据库。Graphite是StatsD的默认后端。

出于可视化的目的,内建Web界面是目前主流的选择。创建光滑的仪表板并不难,Grafana首先从Graphite获取信息,而且还可以与其它几个流行的度量数据库协同工作,比如InfluxDB、OpenTSDB和Premetheus。

当度量数据超过了预期的边界时,Graphite自身并不提供提醒功能。这方面有几个方案可以解决此问题。Cabot就是一个流行的选择,还可以使用另一个选择StackState,它提供了同样的功能。Cabot和StackState之间提醒功能的不同之处在于StackState集成了多个监控解决方案,它可以运行检查,不仅检查Graphite数据,而且检查各种以组合的监控数据。

二、Graphite的优点

  • 1)Graphite非常快,它的架构是模块化可规模化的
  • 2)Graphite很著名,有庞大的社区和广泛的支持
  • 3)有很多与Graphite相互协作的开源工具
  • 4)Graphite完成单个工作且做得很好
  • 5)Graphite采用Apache 2.0许可证

三、Graphite的不足

  • 1)Graphite不能对数据进行分片,因此要解决这个问题就是采用多个Graphite实例
  • 2)Graphite的安装是一个很复杂的任务,尽管目前有了完整的Docker映像可以一次性安装Graphite及其依赖

你可能感兴趣的:(collectd,grafana,Graphite,statsd,Cabot)