graphite-web只能展示最新6个小时的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了graphite-web只能展示最新6个小时的数据相关的知识,希望对你有一定的参考价值。
业务需求描述:kafka的监控在grfana的展示
监控方案:kafkaoffsetmonitor + graphite + grafana
kafka信息描述:
kafka的0.9.x版本位移offset信息不在保存在zookeeper上面了,所有kafkaoffsetmonitor监控在kafka0.9.X之后不能再抓取offset的监控信息。
问题描述:
在grafana做图形展示的时候,发现kafka的数据只能获取得到最新6个小时内的数据超过6个小时就没有任何数据展示。
问题的排查:
1.首先排除grafana自身的原因,因为在这里grafana只做数据的展示,不做任何的处理
2.问题首先定位在graphite上面。
在问题定位在graphite上的时候,第一想法就是想到了graphite的存储whisper,查看whisper的配置文件信息
[[email protected] conf]$ more storage-schemas.conf
# Schema definitions for Whisper files. Entries are scanned in order,
# and first match wins. This file is scanned for changes every 60 seconds.
#
# [name]
# pattern = regex
# retentions = timePerPoint:timeToStore, timePerPoint:timeToStore, ...
# Carbon‘s internal metrics. This entry should match what is specified in
# CARBON_METRIC_PREFIX and CARBON_METRIC_INTERVAL settings
[carbon]
pattern = ^carbon\.
retentions = 60:90d
#[kafka]
#pattern = ^kafka\.*
#retentions = 60s:180d,300s:180d
[default_1min_for_1day]
pattern = .* 匹配所有
# retentions = 60s:6h 默认是60s获取一次数据,保存6个小时的数据。
retentions = 30s:180d
在配置文件中的 [default_1min_for_1day] 这个模块当中可以看到在之前retentions这个参数的值是60s:6h,这个就是因为graphite只能展示6个小时数据的原因。
发现这个问题之后我将retentions更改成 30s:180d。然后重启carbon-cache.py。但是重启之后发现还是没有更改,在graphite-web上面还是只能展示最近6个小时的数据。
3.然后在查看graphite进程的时候ps -ef | grep graphite
在上面截图中看到了一个statsdaemon这个进程,这个是statsd服务的进程。然后查询了一波,得到了下面的信息:
Buckets
当一个 Whisper 文件被创建,它会有一个不会改变的固定大小。在这个文件中可能有多个 "buckets" 对应于不同分别率的数据点,每个 bucket 也有一个保留属性指明数据点应该在 bucket 中应该被保留的时间长度,Whisper 执行一些简单的数学计算来计算出多少数据点会被实际保存在每个 bucket 中。
就上述所描述了,当一个存储文件创建之后,它的保留时间长度是有它文件本身保存的,所以我认为我更改whisper存储文件的配置信息重启之后无法生效的原因是因为存储文件已经存在,并且已经记录了保留时间的信息。所有想要存储信息对现有的生效,那么就必须删除原有的存储文件
rm /opt/graphite/storage/filename
删除文件之后,重新生成,一段时间之后就可以查看6个小时以上的数据了
以上是关于graphite-web只能展示最新6个小时的数据的主要内容,如果未能解决你的问题,请参考以下文章
Django基于PythonWeb的Django框架设计实现天天生鲜系统-1