文档章节

carbon进程

摩云菜
 摩云菜
发布于 2016/07/05 09:54
字数 1088
阅读 119
收藏 0

Carbon进程

当我们谈起”Carbon”的时候,我们指的是一个或者多个carbon进程,Graphite的存储后端就由这些进程所组成。在最简单的安装场景下,只有一个carbon进程carbon-cache.py。

这份文档对carbon进程提供的功能,以及如何使用这些功能构建出复杂的存储后端进行了简要的概述。

所有的carbon进程都使用同样的协议监听并且接收时间序列数据。但是不同的进程收到这些数据后,会进行一些不同的操作。

Carbon-cache.py

carbon-cache.py接收各种协议的指标数据,并且尽可能高效地把它们写入磁盘。这就要求首先把接收到的指标缓存在RAM里面,然后定期地使用底层的whisper库把RAM里面的指标数据写入磁盘。

运行carbon-cache.py需要一些基本的配置文件:

carbon.conf

配置文件里面的[cache]部分的配置,告诉carbon-cache.py使用什么端口[2003/2004/7002],什么协议(newline delimited, pickle)以及网络协议(TCP/UFP)来监听。

storage-schema.conf

这个配置文件里面主要使用正则表达式定义了一些指标的收集规则,以及每个.wsp文件存储多长时间的数据。这些规则是给whispter数据库使用的,当.wsp文件创建的时候,会使用到这些规则。

随着数据量的增加,一个carbon-cache.py实例可能满足不了IO负载。为了扩容,可以在一台或者多台机器上运行多个carbon-cache.py实例,carbon-cache.py前面使用carbom-aggregator.py或者carbon-relay.py进行负载均衡。

警告:

如果客户端连接carbon-cache.py的时候,出现连接失败的错误,比如说连接被daemon拒绝,这种错误最常见的原因是文件句柄不够了。

在日志文件里面,如果你发现下面的日志:

Could not accept new connection (EMFILE)

或者是下面的日志:

exceptions.IOError: [Errno 24] Too many open files:

'/var/lib/graphite/whisper/systems/somehost/something.wsp'

这说明carbon-cache.py可以打开的文件数需要增加了。很多系统里面,单个进程可以打开的最大文件数默认为1024,在实际情况下可能需要配置成8129或者更高,这取决于有多少个客户端同时连接到carbon-cache.py的daemon上。

Linux系统上,可以通过sysctl来设置系统全局文件句柄数的最大值,也可以通过ulimit设置。

Carbon-relay.py

carbon-relay有两个不同的功能:集群和分区

当使用RELAY_METHOD = rules模式运行时,carbon-relay.py可以代替carbon-cache.py,然后把所有收到的指标数据转发给多个运行在后端的carbon-cache.py,这些后端的carbon-cache.py可以运行在不同的主机上的不同端口上。

当使用RELAY_METHOD = consistent-hashing模式运行时,需要配置DESTINATIONS,DESTINATIONS定义了基于后端多个carbon-cache.py的分区策略。同样的哈希列表可以通过CARBONLINK_HOSTS 提供给graphite webapp,这样对不同数据的查询就可以被分发到不同的后端carbon-cache上。

carbon-relay使用的配置文件:

carbon.conf

carbon-relay.py使用配置文件里面的[relay]部分的配置,在这里可以配置监听的主机,端口以及RELAY_METHOD。

relay-rules.conf

当使用 RELAY_METHOD = rules 启动carbon-relay.py的时候, 这个配置文件里面的pattern/servers组合定义了匹配相应正则表达式的指标数据应该发给后端的哪个主机。

Carbon-aggregator.py

carbon-aggregator.py可以运行在carbon-cache.py前面,用来缓存指标数据。当指标数据的发送频率大于事先定义好的数据收集频率时,carbon-aggregator.py就很有用,使用carbon-aggregator.py可以部署在前端用来降低IO负载和防止数据风暴。

carbon-aggregator.py使用的配置文件:

carbon.conf

carbon- aggregator.py使用配置文件里面的[aggregator]部分的配置,在这里可以配置监听的主机,端口以及目的地主机和端口。

aggregation-rules.conf

定义了一个时间间隔(秒)以及aggregation 函数(sum或者average),用来匹配收到的指标数据。在每个时间间隔的最后,会把收到的多个指标数据聚合成一个指标数据,再发给carbon-cache.py。

-----------------------------------------------------

欢迎关注我的微信公众号 ^_^

© 著作权归作者所有

共有 人打赏支持
摩云菜
粉丝 27
博文 34
码字总数 42147
作品 0
闵行
高级程序员
graphite-web只能展示最新6个小时的数据

业务需求描述:kafka的监控在grfana的展示 监控方案:kafkaoffsetmonitor + graphite + grafana kafka信息描述: kafka的0.9.x版本位移offset信息不在保存在zookeeper上面了,所有kafkaoffset...

liuhuang9496
2017/04/06
0
0
安装Collectd+Statsd + Graphite 监控openstack swift

Graphite 安装必要软件包: $ sudo apt-get install apache2 libapache2-mod-wsgi python-django python-twisted python-cairo python-pip python-django-tagging 用 pip 安装 whisper (简单......

icheer
2013/12/03
0
0
聊聊 Statsd 和 Collectd 那点事!

StatsD 是由 Etsy 开发并发布的汇总和总结应用指标的一个简单的守护进程,近些年来发展迅速,已经变成了一个用于收集应用性能指标的统一的协议。 关于 Statsd 的使用已经有很多文章介绍过,所...

OneAPM蓝海讯通
2015/12/10
266
0
Graphite 介绍

Overview 概述 What Graphite is and is not ? Graphite能做什么和不能做什么? Graphite does two things: Graphite 做两件事情: Store numberic time-series data 存储 numberic time-seri......

nao
2016/08/19
413
0
WSO2 Carbon Kernel 4.3.0 Alpha 发布

WSO2 Carbon Kernel 4.3.0 Alpha 发布,此版本现已提供下载: wso2carbon-4.3.0-SNAPSHOT.zip 更新内容: 支持可插式 log provider,简化日志记录 升级了 Hazelcast, Log4j, BouncyCastle 版...

oschina
2014/10/02
272
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

这些Spring中的设计模式,你都知道吗?

设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆。 Spring作为业界的经典框架,无论是在架构设计方面,还是在代码编写方面,都堪称行...

Java填坑之路
28分钟前
1
0
Spring Aop原理之Advisor过滤

在上文(Spring Aop之Advisor解析)中我们讲到,Spring Aop对目标bean的代理主要分为三个步骤:获取所有的Advisor,过滤当前bean可应用的Advisor和使用Advisor为当前bean生成代理对象,并且上文...

爱宝贝丶
38分钟前
0
0
JMockit学习教程

1 JMockit中文网 我觉得如果仅仅是开发自测的话,把JMockit中文网认真看一遍,就可以在项目中使用JMockit了。 http://jmockit.cn/index.htm 2 JMockit中文教程 官方文档中文版。对于不喜欢看...

SuperHeroes
50分钟前
0
0
Linux服务器几乎从不采用Arch Linux?

我们见得多的Linux服务器系统一般都是什么Ubuntu Server啊,什么Cent OS啊,什么Fedora啊,或者企业采用的Red Hat啊,为什么几乎没有Arch Linux呢?下面我将从若干个方面指出Arch Linux在服务...

linux-tao
今天
0
0
js 函数柯里化 闭包

参考 https://mp.weixin.qq.com/s/GEHL3jarDdAAcr5tQGjmDg 一个统计求和的函数 需要知道整个数组的信息,然后遍历求值 function countMoney() { let money = 0 // 温馨提示:arguments...

阿豪boy
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部