第三十三章 metrics(1) - graphite搭建 + whisper存储模式 +
组件介绍:
软件版本:(不要按照官网进行安装,有很多坑,尤其是版本的坑)
一、安装 1、安装基本依赖
2、安装3个组件
2.1、安装carbon
2.2、安装whisper
2.3、安装graphite-web
三、创建配置文件
四、初始化数据库
五、启动carbon
六、启动graphite-web
所有软件安装并启动成功!!! 七、测试
至此,graphite-web安装成功!!! 八、部分API使用 在执行如上测试之后,会生成一个metrics.wsp文件,可以通过如下命令来查看该wsp文件的元数据信息。
1 maxRetention: 86400 2 xFilesFactor: 0.5 3 aggregationMethod: average 4 fileSize: 17308 5 6 Archive 0 7 retention: 86400 8 secondsPerPoint: 60 9 points: 1440 10 size: 17280 11 offset: 28
1 Meta data: 2 aggregation method: average 3 max retention: 86400 4 xFilesFactor: 0.5 5 6 Archive 0 info: 7 offset: 28 8 seconds per point: 60 9 points: 1440 10 retention: 86400 11 size: 17280 12 13 Archive 0 data: 14 0: 1475296140,10112 15 1: 1475296200,10 16 2: 0,0 17 3: 0,0 18 ... 19 1439: 0,0 再执行一遍,echo "1001.carbon.zjg.metrics1 101011 `date +%s`" | nc localhost 2003 会看到,除了第一个数据点有数据之外,还有1353: 1475377320,101010 九、whisper存储模式 1、存储模式 当Whisper文件被创建时,将拥有一个固定的文件尺寸,这个尺寸永远不会再改变。在Whisper文件中可能会包含多个用于不同分辨率的数据点的“存储区(bucket)”,这些存储区是在配置文件storage-schemas.conf中定义的, 例如:
每个存储区还拥有一个保留期(retention)属性用于标识该存储区中的数据点应该保留的时间长度。例如:
根据上述两种信息,Whisper可以进行一些简单的数学计算,计算出在每个存储区中实际需要保存多少数据点。
如果根据这个存储模式配置创建Whisper文件,该文件大小是56KB。如果在这个文件上执行whisper-dump.py脚本,会有如下输出。需要注意的是,一个archive对应一个存储区,每点秒数(seconds per point)和点数(points)属性则与我们之前的计算相匹配。 2、默认存储模式 包含carbon和default_1min_for_1day两个section。storage-schemas.conf: 1 # Schema definitions for Whisper files. Entries are scanned in order, 2 # and first match wins. This file is scanned for changes every 60 seconds. 3 # 4 # [name] 5 # pattern = regex 6 # retentions = timePerPoint:timeToStore,timePerPoint:timeToStore,... 7 8 # Carbon's internal metrics. This entry should match what is specified in 9 # CARBON_METRIC_PREFIX and CARBON_METRIC_INTERVAL settings 10 [carbon] 11 pattern = ^carbon. 12 retentions = 60:90d 13 14 [default_1min_for_1day] 15 pattern = .* 16 retentions = 60s:1d 说明:
注意:
3、修改存储模式 1 [default_1min_for_1day] 2 pattern = .* 3 retentions = 10s:6h,60s:1d,10m:7d 说明:存储模式与1中一样 whisper-info查看 1 maxRetention: 604800 2 xFilesFactor: 0.5 3 aggregationMethod: average 4 fileSize: 55348 5 6 Archive 0 7 retention: 21600 8 secondsPerPoint: 10 9 points: 2160 10 size: 25920 11 offset: 52 12 13 Archive 1 14 retention: 86400 15 secondsPerPoint: 60 16 points: 1440 17 size: 17280 18 offset: 25972 19 20 Archive 2 21 retention: 604800 22 secondsPerPoint: 600 23 points: 1008 24 size: 12096 25 offset: 43252 说明:每个Archive对应一个存储区。 十、聚合方式 1、聚合 当数据从一个较高精度的存储区移动到一个较低精度的存储区时,聚合开始发挥作用。让我们以前一个示例中的存储区A和存储区B为例:
我们可能有一个每10秒钟发布一个数据点的应用程序。在存储区A中可以找到6小时之内发布的任何数据点。不过,如果我开始查询6小时之前发布的数据点,就可以在存储区B中找到它们。 注意:查询是从高精度到低精度去依次查找。 聚合方式:实际上,最开始carbon以每10秒一次的速度记录应用和业务指标项。这种10秒一次的数据会保存6小时。6小时后,这些数据将被聚合为1分钟数据并保存1天。最后,1天之后,这些数据将被聚合为10分钟数据并再保存7天。 2、数据点如何从高精度的存储区A移动到存储区B 2.1、获取聚合点数 用高精度值除以低精度值,以确定需要聚合的数据点的数量。 60秒(存储区B)/10秒(存储区A)= 6个数据点需要聚合 注:Whisper需要较高精度的值能够整除较低精度的值(也就是说,相除的结果必须是整数)。否则聚合的结果可能会不准确。 2.2、聚合函数选择 聚合数据时,Whisper从存储区A中读取6个10秒数据点,然后将函数应用于这些数据点上,得出一个将被存储在存储区B中的60秒数据点。有5个聚合函数选项:average,sum,max,min和last。聚合函数的选择取决于需要处理的数据点。例如,第95百分位的值可能应该用max函数聚合。另一方面,对于计数器来说,sum函数可能更合适。 2.3、xFilesFactor 在聚合数据点时,Whisper还处理了xFilesFactor的概念。xFilesFactor表示为了保证聚合准确,一个存储区必须包含的数据点比率。在我们之前的示例中,Whisper确定了它需要聚合6个10秒数据点。由于网络问题,应用重启等原因,可能只有4个数据点有数据而其他2个数据点是空值。 如果我们的Whisper文件的xFilesFactor是0.5,这意味着只有存在至少50%的数据点时,Whisper才会聚合数据。如果超过50%的数据点为空时,Whisper会创建一个空值聚合。在我们的例子中,即6个数据点中的4个——也就是66%。聚合函数会被应用在非空数据点上,创建聚合值。 你可以将xFilesFactor设置为0到1之间的任意值。值0表示即使只有一个有效数据点,就会执行聚合。值1则表示只有全部的数据点都有效,才会执行聚合。 3、默认聚合规则配置(storage-aggregation.conf) 1 # Aggregation methods for whisper files. Entries are scanned in order, 2 # and first match wins. This file is scanned for changes every 60 seconds 3 # 4 # [name] 5 # pattern = <regex> 6 # xFilesFactor = <float between 0 and 1> 7 # aggregationMethod = <average|sum|last|max|min> 8 # 9 # name: Arbitrary unique name for the rule 10 # pattern: Regex pattern to match against the metric name 11 # xFilesFactor: Ratio of valid data points required for aggregation to the next retention to occur 12 # aggregationMethod: function to apply to data points for aggregation 13 # 14 [min] 15 pattern = .min$ 16 xFilesFactor = 0.1 17 aggregationMethod = min 18 19 [max] 20 pattern = .max$ 21 xFilesFactor = 0.1 22 aggregationMethod = max 23 24 [sum] 25 pattern = .count$ 26 xFilesFactor = 0 27 aggregationMethod = sum 28 29 [default_average] 30 pattern = .* 31 xFilesFactor = 0.5 32 aggregationMethod = average 说明:4个条目
注意:
1 maxRetention: 604800 2 xFilesFactor: 0.0 3 aggregationMethod: sum 4 fileSize: 55348 5 6 Archive 0 7 retention: 21600 8 secondsPerPoint: 10 9 points: 2160 10 size: 25920 11 offset: 52 12 13 Archive 1 14 retention: 86400 15 secondsPerPoint: 60 16 points: 1440 17 size: 17280 18 offset: 25972 19 20 Archive 2 21 retention: 604800 22 secondsPerPoint: 600 23 points: 1008 24 size: 12096 25 offset: 43252 aggregationMethod是sum,xFilesFactor是0。
十一、graphite-web 配置文件读取 graphite-web启动的时候会读取local_settings.py和settings.py(注意,local_settings.py的配置会覆盖settings.py的) 十二、安装并集成StatsD 1、下载
2、移动
3、编写配置文件
1 { 2 port: 8125, 3 4 graphitePort: 2003, 5 graphiteHost: "127.0.0.1", 6 flushInterval: 10000, 7 8 backends: [ "./backends/graphite" ], 9 graphite: { 10 legacyNamespace: false 11 } 12 } 4、启动
5、发包测试
十三、安装并集成grafana 1、安装
安装后的路径:
2、修改配置文件
3、启动
4、浏览器访问ip:3000并登陆 5、配置graphite 5.1、添加数据源datasource 5.2、创建一个dashboard(这里直接引入,可以自己创建) 5.3、点击该dashboard查看数据 至此,statsd+graphite+grafana集成完毕!!! 参考:http://www.infoq.com/cn/articles/graphite-intro (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |