文档章节

carbon进程

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

精选30+云产品,助力企业轻松上云!>>>

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。

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

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

摩云菜
粉丝 26
博文 34
码字总数 42147
作品 0
闵行
高级程序员
私信 提问
加载中
请先登录后再评论。
graphite在centos7上的部署搭建

Graphite安装笔记 实验环境: CentOS7.5 x64 部署python的程序推荐使用virtualenv这列的虚拟环境来进行,防止污染系统自带的python包。 安装一些必要的rpm包 yum install cairo -- 另外的2个...

我的二狗呢
2019/09/14
0
0
graphite-web只能展示最新6个小时的数据

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

liuhuang9496
2017/04/06
0
0
Graphite 安装

StatsD只是一个数据收集进程,如果要查看数据历史记录,就需要一个后端的数据存储系统,graphite是一个老牌的监控系统,以至于上一次更新都在2012-5-31,graphite由三部分组成:graphite-we...

China_OS
2016/05/04
39
0
聊聊 Statsd 和 Collectd 那点事!

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

OneAPM蓝海讯通
2015/12/10
290
0
ganglia-gmetad 配置文件

gmetad 主要用来收集和汇聚gmond所收集的指标数据的守护进程,通过tcp端口8651监听其他gmetad连接,并向授权的主机提供xml格式的网络状态,gmetad通过tcp端口8652 对交互式请求作出应答。 其...

osc_u6io2wi5
2018/08/17
5
0

没有更多内容

加载失败,请刷新页面

加载更多

在Python中从字符串转换为布尔值? - Converting from a string to boolean in Python?

问题: Does anyone know how to do convert from a string to a boolean in Python? 有谁知道如何在Python中从字符串转换为布尔值? I found this link . 我找到了此链接 。 But it doesn't......

javail
24分钟前
19
0
中国饭店协会数据表明

记者了解到,中国饭店协会数据表明,2018年全国餐饮收入42716亿元,同比增长9.5%.根据国家统计局数据显示,截至2017年底,限额以上餐饮行业的从业人数达到2232万人,巨大的餐饮市场背后,餐饮行业的...

asd369
46分钟前
29
0
OSChina 周六乱弹 —— 日本的丧尸光天化日之下都开始……

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《風の手枕》- 増田俊郎 手机党少年们想听歌,请使劲儿戳(这里) @码界农民工 :...

小小编辑
58分钟前
34
0
Hacker News 简讯 2020-07-11

更新时间: 2020-07-11 02:01 The TikTok app is no longer permitted on mobile devices that access Amazon email - (twitter.com) TikTok应用程序不再允许在访问亚马逊电子邮件的移动设备上......

FalconChen
今天
155
0
是否有可能从另一个git存储库中挑选一个提交? - Is it possible to cherry-pick a commit from another git repository?

问题: I'm working with a git repository that needs a commit from another git repository that knows nothing of the first. 我正在使用一个git存储库,需要从另一个不知道第一个存储库......

技术盛宴
昨天
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部