Graphite+Grafana+InfluxDB架构

转载于http://udn.yyuap.com/thread-42721-1-1.html

Graphite+Grafana+InfluxDB架构

Graphite

Graphite 是一款开源的,易扩展的,使用简便的监控绘图工具。
Graphite 可以实时收集、存储、显示时间序列类型的数据(time series data)。它主要有三个部分构成:
Carbon:metrics 接收服务,接收到 metrics 以后调用 Whisper 进行存储

Whisper:固定大小的数据库,存储方式类似RRD (round-robin-database),用来存储收集到的 metrics

graphite-api:WSGI webapp 接口服务,grafana 在需要展现数据的时候使用其提供的 REST API 进行数据的获取

在这里插入图片描述

向 Graphite 发送数据
Graphite 的使用非常简单。我们可以定义一个被观测量(Metric)。Metric 使用键/值的数据类型。只要不断发送 观测量 : 观测值 这一键值组合,就可以得到以时间为 X 轴,观测值为 Y 轴的图。
当我们使用诸如 collectd、Sensu 之类的工具收集到数据之后,只需要向 Graphite 的服务器发送以下格式的 TCP 报文即可:

<metric name> <metric value> <metric timestamp>

例如,有一个 Metric 叫作 local.metric.random,可以用下面的 Bash 命令发送当前时刻的值 4。

PORT=2003
SERVER=graphite.your.org
echo "local.metric.random 4 `date +%s`" | nc -q0 ${SERVER} ${PORT}

类似地,使用其它编程语言时,可以使用 Socket 发送数据。
另外,Graphite 的 Metric 名称支持以 . 作为分隔符的多级嵌套。例如我可以定义下面三个 Metric。
webserver.system.cpu_usage
webserver.system.mem_load
webserver.network.input
Graphite 将以树型结构展示这三个 Metric。因此,使用 Graphite 的第一步就是给 Metric 选取一个合适的名称。关于如何组织 Metric 的名称,可以参阅文章 Practical Guide to StatsD/Graphite Monitoring。

Graphite Event
除了支持简单的键/值数据类型,Graphite 还可以通过 Events 来存储更复杂的数据。简而言之,Graphite Events 使用了 tag 和 data 两个键来存储更多的信息。
我们可以使用 HTTP POST 向 Graphite 发送一个 Event。

curl -X POST "http://graphite.your.org/events" -d '{"what": "Deployment", "tags": "webserver", "data": "Deploy webserver"}'

Grafana

鉴于 Graphite 的界面过于简单,功能比较单一,可以使用 Grafana 作为 Graphite 的控制台。 Grafana 是一款开源的图形控制台,有很多 不错的特性 ,还可以访问官网提供的 Live Demo 来体验 Grafana。

实例
我实习所在公司使用 Jenkins 部署代码。在部署完成之后,我添加了一段 post-build script 执行下面的脚本。

#!/bin/bash

HOST=http://graphite.your.org/events

echo 'Posting a deployment event to Graphite'

curl -X POST $HOST -d '{"what": "Deployment", "tags": "webserver,prd", "data": \"$BUILD_URL\"}'

这样,每次部署完成之后都会发送一个 Deployment Event 到 Graphite。接着,可以在 Graphite 里添加 drawAsInfinite(events(‘prd’)) 或者在 Grafana 里使用 Annotations Page 来绘制一幅图显示代码部署的 Events。

利用 Graphite Events 和 Metrics,我们可以将代码部署和其他指征叠加在一幅图里,从而分析每次代码部署和其它指征的关系。

比如,在 Tracking Every Release 一文中,作者使用了该方法将 PHP Warning 和 Code deploy 叠加在一幅图里。

从图中,我们可以发现第一次代码部署之后导致了大量的警告信息,经过随后的两次 Hotfix 之后,警告信息基本消除。

InfluxDB

这个轻量级数据库在Graphite+Grafana中,是为了代替Graphite的Whisper

参考文献
Graphite Tip - A Better Way to Store Events
Tracking Every Release
Making Annotations in Graphana

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值