使用graphite-ng或InfluxDB通过Go扩展Graphite
作者:Todd Persen / 产品
2015年9月30日
导航至
如果您观看了Coda Hale的流行视频《Metrics, Metrics Everywhere》,您知道他演讲的主要收获之一是数据可以帮助您做出更好的决策,数据必须被衡量,才能有效地管理。
数据,或者更具体地说,您系统中的指标可以为您提供对整个堆栈的深入了解,触及许多领域。如果您要为所有移动的物体添加指标,您最好有基础设施来支持。
在这篇文章中,我们将探讨一些使用Go特定技术(包括graphite-ng和InfluxDB)扩展graphite安装的方法。
认识Graphite
Graphite是一个用Python编写的流行的实时指标存储和绘图工具,允许您存储数字时间序列数据,并按需进行绘图。您需要为指标活动带来一种发送数据到graphite的方式。您可以使用收集代理如collectd来完成此操作。从高层次来看,典型graphite设置的架构包括三个主要组件
- carbon - 一个监听指标数据的守护进程
- whisper - 存储库,用于存储这些数据
- graphite web - 一个按需渲染图形的Web应用程序
标准的graphite设置,其中carbon将指标写入whisper,并在graphite-web中可视化存储
此配置在小型规模上通常表现良好,其中carbon守护进程监听指标并向whisper存储数据库报告。但随着您达到更高的规模,例如每秒数千到数百万个指标,添加更多的时间线,并希望聚合您的指标,您将开始遇到架构的限制。您可能会遇到carbon因为无法处理其上的负载而丢弃指标,或者无法管理在whisper中持久化的不同时间线所需的不同文件句柄的情况。因此,如果您已经超越了这种基本设置的极限,下一步是什么?
介绍graphite-ng - 肌肉发达的Graphite
为了解决基本graphite基础设施中的一些可扩展性问题,Dieter Plaetinck 用Go语言重写了graphite服务器,这种语言使编写并发程序更容易、更高效。
Graphite-ng优于标准的graphite安装,并且可以轻松处理每秒数百万个指标。随着指标流进graphite-ng系统,它可以对所有传入的数据指标进行前置验证,因此您不必担心在后期后台清理指标。它还可以在需要时即时将多个指标系列合并为新的系列,其功能允许更快地聚合所需指标。
使用Go编写的Graphite-ng和Carbon-relay-ng的高级架构图,后端使用Whisper。
值得注意的是,石墨烯-ng可以被配置为将数据复制到多个后端,例如ceres和Elasticsearch,提供冗余或分区数据,以平衡负载。
InfluxDB正在开发一个更可扩展的解决方案
为了优化您的整个石墨烯堆栈,选择合适的后端数据库来存储度量标准很有帮助。在考虑使用哪种后端基础设施时,以下是一些您数据库需要具备的较高层次特性
- 可扩展 - 寻找支持数百万个并发写入操作的后端
- 高可用性 - 一个处于关闭状态的后端不允许您存储或可视化数据
- 支持时间序列 - 确保后端可以原生处理时间序列数据,并能高效地存储和提供服务
Whisper,默认的石墨烯存储引擎,不幸地不符合所有这些要求。它是用Python编写的,在重写场景下无法扩展。它还占用大量内存,并同时在每个度量标准上保持多个文件描述符打开。
InfluxDB旨在在即将发布的版本中解决这些问题。InfluxDB 0.8.8版本使用LevelDB作为底层存储引擎,其性能优于Whisper。即将发布的0.9系列版本将借鉴LevelDB的经验,旨在在存储引擎方面超过0.8版本的性能,同时引入集群以实现高可用性和横向可扩展性。
基于go的carbon-relay-ng向InfluxDB提供信息的整体架构
InfluxDB设计得易于安装和配置。当集群支持变得普遍可用时,您将能够运行一个多节点集群,并在节点间完全复制数据以提高可用性。当然,您现在可以开始测试集群,但它尚未准备好投入生产使用。InfluxDB还提供了多种将数据写入数据库的方法,包括行协议、几个客户端库以及用于常见格式的插件,如graphite。
除了石墨烯-ng项目之外,Dieter还有一个使用Docker简化使用InfluxDB后端安装和配置石墨烯系统过程的酷炫仓库。在这里查看。
Docker设置基本上可以归结为
1) 在您的系统上安装Docker
2) 创建一个新的目录,并在其中放入自己的Dockerfile,看起来像这样
FROM vimeo/graphite-api-influxdb
3) 在此目录中放置一个自定义的graphite-api.yaml,您可以从此存储库中的graphite-api.yaml开始
4) 构建!
docker build .
5) 运行!
docker run -p 8000:8000 <image-id>
下一步是什么?
在托管环境中寻找InfluxDB的所有优点和可扩展性,以及Grafana,一个功能丰富的石墨烯指标仪表板和图形编辑器?那么免费试用Hosted InfluxDB + Grafana,它可以在几秒钟内启动并运行!
抓住这个机会,获取您的InfluxDB卫衣!
您的公司是否有使用InfluxDB在生产中运行的酷炫应用程序或产品?我们非常乐意在influxdb.com上展示它,并在社交媒体上为您鼓掌。作为“感谢”礼物,我们将寄送您一件InfluxDB卫衣和一包贴纸。只需填写此简单表格,我们将告知您的条目何时上线以及卫衣何时邮寄。如果您有任何问题,请通过[email protected]与我们联系。感谢您的支持!