我试图输入一个罕见的(<1minute)指标流,并能够在过去的许多小时内查询它。不幸的是,尽管我尝试了我能在Google中找到的通常的技巧,但我不能看到超过6小时。我的配置有什么问题?下面是我用来设置环境的文件。
.storage -aggregation.conf(存储聚合)
[min]
pattern = \.lower$
xFilesFactor = 0
aggregationMethod = min
[max]
pattern = \.upper(_\d+)?$
xFilesFactor = 0
aggregationMethod = max
[sum]
pattern = \.sum$
xFilesFactor = 0
aggregationMethod = sum
[count]
pattern = \.count$
xFilesFactor = 0
aggregationMethod = sum
[count_legacy]
pattern = ^stats_counts.*
xFilesFactor = 0
aggregationMethod = sum
[default_average]
pattern = .*
xFilesFactor = 0
aggregationMethod = average
.docker-compose.yml。
version: '3.3'
services:
graphite:
image: graphiteapp/graphite-statsd
container_name: 'graphite'
ports:
- '2003:2003'
volumes:
- ./persistence/graphite/storage:/opt/graphite/storage
- ./storage-aggregation.conf:/opt/graphite/conf/storage-aggregation.conf
- ./storage-schemas.conf:/opt/graphite/conf/storage-schemas.conf
grafana:
build: './grafana'
ports:
- '3000:3000'
links:
- graphite
.storage-schemas.conf。
[carbon]
pattern = ^carbon\.
retentions = 10s:6h,1m:90d
[default_1min_for_1day]
pattern = .*
retentions = 10s:1800d,1m:1800d,10m:1800d
.grafanaprovisioningdatasourcesall.yml。
datasources:
- name: 'graphite'
type: 'graphite'
access: 'proxy'
org_id: 1
url: 'http://graphite:8080'
is_default: true
version: 1
editable: true
.grafanaprovisioningdashboardsall.yml。
- name: 'default'
org_id: 1
folder: ''
type: 'file'
options:
folder: '/var/lib/grafana/dashboards'
.grafanaDockerfile
FROM grafana/grafana:7.0.0
ADD ./provisioning /etc/grafana/provisioning
ADD ./config.ini /etc/grafana/config.ini
ADD ./dashboards /var/lib/grafana/dashboards
USER 0
RUN chmod a+w /var/lib/grafana -R /etc/grafana/config.ini
USER 472
.grafanaconfig.ini
[paths]
provisioning = /etc/grafana/provisioning
[server]
enable_gzip = true
[users]
default_theme = light
仪表盘几乎是默认的。我在这里缺少什么?
你的留存指定了原始间隔是10s,但你发送的数据不到每分钟。 这意味着原始保留将看起来像 0s,<value>; 10s, null; 20s, null; 30s, null; 40s, null; 50s, null; 60s, <value maybe, but could also be null>
您将XFF设置为0,这意味着滚动到1分钟需要6个非空的原始值。 你只有1个,所以它滚动到了 null
.
你应该考虑将你的原始保留更新为长于10s,如果你想传播该值,即使你有一大堆空值,那么将XFF设置为0.9(这将允许下一次聚合接受一个值,如果至少有10%的低区间是已知的。
最后,你的 10s:1800d,1m:1800d,10m:1800d
设置是没有意义的,因为较低的保留值永远不会被使用(因为它们都覆盖1800d),如果你真的想要1800d的原始数据,那么你可以直接使用 10s:1800d
,但这仍然会导致一个巨大而笨重的文件。 我建议制定一个更合理的时间表(低间隔=短留存,高间隔=长留存,你的whisper文件的总大小将是每一级聚合的留存间隔的总和,graphite总是会选取覆盖查询期间的第一个留存),结合XFF值,符合你对rollups应该如何处理空值的期望。