文档章节

carbon进程

摩云菜
 摩云菜
发布于 2016/07/05 09:54
字数 1088
阅读 125
收藏 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
PHP向服务器错误记录、文件或远程目标发送一个错误

一、用到的函数说明 1语法: error_log(error, type, destination, headers) 2 参数说明: error: 必需, 要记录的错误消息 type: 可选。规定错误记录的类型, 可能的看记录类型: 0 - 默认...

雪之丞
2015/01/12
0
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

没有更多内容

加载失败,请刷新页面

加载更多

Cointext在阿根廷和土耳其推出比特币现金短信钱包

Cointext于10月15日开始在土耳其和阿根廷提供新的基于SMS的比特币现金钱包服务,这两个国家的加密货币使用量急剧上升,以应对严峻的经济形势。 移动钱包 通过短信处理BCH交易 “比特币是更好...

lpy411
8分钟前
0
0
大数据早课-0918

9.18日早课 1.全局搜索含有abc的文件名称或文件夹的命令 2.当前目录一般用什么表示 3.切换到上一次和上一层命令分别是什么 4.pwd是查看当前目录的什么 5.隐藏文件或文件夹的标识是什么? 怎样...

hnairdb
8分钟前
0
0
mybatis学习笔记一

一、mybaits需要的项目依赖 <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artif......

wuyiyi
9分钟前
0
0
CentOS6 安装 GraphicsMagick

1.安装相关依赖: yum install -y gcc libpng libjpeg libpng-devel libjpeg-devel ghostscript libtiff libtiff-devel freetype freetype-devel 2.下载并解压到目录/usr/local/ wget ft......

凯文加内特
11分钟前
0
0
RabbitMq集群使用Nginx做负载均衡

1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版本后 新增了stream 模块用于一般的 TCP 代理和负载均衡,之前版本不支持 修改Nginx配置文件ngi...

zhaochaochao
16分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部