文档章节

carbon进程

摩云菜
 摩云菜
发布于 2016/07/05 09:54
字数 1088
阅读 115
收藏 0
点赞 1
评论 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

安装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

聊聊 Statsd 和 Collectd 那点事!

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

OneAPM蓝海讯通 ⋅ 2015/12/10 ⋅ 0

Graphite 简介

一、 Graphite 项目简介 Graphite是一个企业级的监控工具,可以在廉价机硬件上运行。最初由Chris Davis在 Orbitz 工作时,作为一个辅助项目在2006年使用Python语言编写,最终成一个基本的监控...

龙鸟 ⋅ 2012/10/25 ⋅ 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 ⋅ 0

graphite 安装使用

简介: Graphite 是一款开源的监控绘图工具。 Graphite 可以实时收集、存储、显示时间序列类型的数据(time series data)。它主要有三个部分构成: carbon —— 基于 Twisted 的进程,用来接...

mickelfeng ⋅ 2012/11/30 ⋅ 1

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 ⋅ 0

Carbon Forum 携 Android 客户端重磅发布

客户端大体已经完成,登录、注册、看帖、发帖、回帖、通知、设置之类的基础功能都没问题了。 每个使用PHP轻论坛程序 Carbon Forum 的网站,都可以修改客户端源码中的接口信息,在三分钟内编译...

lincanbin ⋅ 2015/11/23 ⋅ 13

Carbon是什么?

Carbon是苹果电脑操作系统的应用程序编程接口(API)之一: Carbon和Cocoa,Toolbox,POSIX,JAVA并列成为Mac OS X 五个主要的API。与Cocoa相较之下,Carbon是非物件导向(Procedural)的编程...

万能的匹诺曹 ⋅ 2016/06/22 ⋅ 0

Carbon 论坛的安卓客户端--Android-Carbon-Forum

Android-Carbon-Forum 是Carbon 论坛的安卓客户端。 大体已经完成,登录、注册、看帖、发帖、回帖、通知、设置之类的基础功能都没问题了。 每个使用 PHP 轻论坛程序 Carbon Forum 的网站,都...

lincanbin ⋅ 2015/11/23 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Java 后台判断是否为ajax请求

/** * 是否是Ajax请求 * @param request * @return */public static boolean isAjax(ServletRequest request){return "XMLHttpRequest".equalsIgnoreCase(((HttpServletReques......

JavaSon712 ⋅ 25分钟前 ⋅ 0

Redis 单线程 为何却需要事务处理并发问题

Redis是单线程处理,也就是命令会顺序执行。那么为什么会存在并发问题呢? 个人理解是,虽然redis是单线程,但是可以同时有多个客户端访问,每个客户端会有 一个线程。客户端访问之间存在竞争...

码代码的小司机 ⋅ 57分钟前 ⋅ 0

到底会改名吗?微软GVFS 改名之争

微软去年透露了 Git Virtual File System(GVFS)项目,GVFS 是 Git 版本控制系统的一个开源插件,允许 Git 处理 TB 规模的代码库,比如 270 GB 的 Windows 代码库。该项目公布之初就引发了争...

linux-tao ⋅ 今天 ⋅ 0

笔试题之Java基础部分【简】【二】

1.静态变量和实例变量的区别 在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变...

anlve ⋅ 今天 ⋅ 0

Lombok简单介绍及使用

官网 通过简单注解来精简代码达到消除冗长代码的目的 优点 提高编程效率 使代码更简洁 消除冗长代码 避免修改字段名字时忘记修改方法名 4.idea中安装lombnok pom.xml引入 <dependency> <grou...

to_ln ⋅ 今天 ⋅ 0

【转】JS浮点数运算Bug的解决办法

37.5*5.5=206.08 (JS算出来是这样的一个结果,我四舍五入取两位小数) 我先怀疑是四舍五入的问题,就直接用JS算了一个结果为:206.08499999999998 怎么会这样,两个只有一位小数的数字相乘,怎...

NickSoki ⋅ 今天 ⋅ 0

table eg

user_id user_name full_name 1 zhangsan 张三 2 lisi 李四 `` ™ [========] 2018-06-18 09:42:06 星期一½ gdsgagagagdsgasgagadsgdasgagsa...

qwfys ⋅ 今天 ⋅ 0

一个有趣的Java问题

先来看看源码: public class TestDemo { public static void main(String[] args) { Integer a = 10; Integer b = 20; swap(a, b); System.out......

linxyz ⋅ 今天 ⋅ 0

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 今天 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部