我是Grafana和Prometheus的新手,我在显示上传文件的大小方面遇到了麻烦。
我想在Grafana中显示类似下面的东西(以便发现上传的文件大小最多)。
|
| | .
| | | |
-------------------------
1MB 2MB 3MB 4MB ..
我制作了下面这个直方图。
uploaded_file_sizes = Summary(
'uploaded_file_sizes',
'Uploaded file size in bytes',
buckets=(
10000, # 10KB
100000, # 100KB
500000, # 500KB
1000000, # 1MB
1500000, # 1.5MB
2000000, # 2MB
2500000, # 2.5MB
3000000, # 3MB
3500000, # 3.5MB
4000000, # 4MB
4500000, # 4.5MB
5000000, # 5MB
10000000, # 10MB
15000000, # 15MB
20000000, # 20MB
25000000, # 25MB
30000000, # 30MB
35000000, # 35MB
40000000, # 40MB
45000000, # 45MB
50000000, # 50MB
),
)
这很好,它在指标端点给出了以下数据
# HELP uploaded_file_sizes Uploaded file size in bytes
# TYPE uploaded_file_sizes histogram
uploaded_file_sizes_bucket{le="10000.0"} 0.0
uploaded_file_sizes_bucket{le="100000.0"} 0.0
uploaded_file_sizes_bucket{le="500000.0"} 0.0
uploaded_file_sizes_bucket{le="1e+06"} 2.0
uploaded_file_sizes_bucket{le="1.5e+06"} 3.0
uploaded_file_sizes_bucket{le="2e+06"} 3.0
uploaded_file_sizes_bucket{le="2.5e+06"} 3.0
uploaded_file_sizes_bucket{le="3e+06"} 3.0
uploaded_file_sizes_bucket{le="3.5e+06"} 3.0
uploaded_file_sizes_bucket{le="4e+06"} 3.0
uploaded_file_sizes_bucket{le="4.5e+06"} 3.0
uploaded_file_sizes_bucket{le="5e+06"} 3.0
uploaded_file_sizes_bucket{le="1e+07"} 3.0
uploaded_file_sizes_bucket{le="1.5e+07"} 3.0
uploaded_file_sizes_bucket{le="2e+07"} 3.0
uploaded_file_sizes_bucket{le="2.5e+07"} 3.0
uploaded_file_sizes_bucket{le="3e+07"} 3.0
uploaded_file_sizes_bucket{le="3.5e+07"} 3.0
uploaded_file_sizes_bucket{le="4e+07"} 3.0
uploaded_file_sizes_bucket{le="4.5e+07"} 3.0
uploaded_file_sizes_bucket{le="5e+07"} 3.0
uploaded_file_sizes_bucket{le="+Inf"} 3.0
uploaded_file_sizes_count 3.0
uploaded_file_sizes_sum 2.848696e+06
在这一点上,我对如何在Grafana中显示下面这样的东西感到困惑。令人困惑的是,无论我怎么尝试,最终得到的图形都是奇怪的计数数字,所以我确信我做了一些根本性的错误。
秘密是为你的桶设置范围而不是实际值。例如,在图中,1MB的条形图不需要1MB的桶,而是设置两个0.5MB和1.5MB的桶作为范围。
例子】:将0.5MB和1.5MB两个桶设置为范围,而不是1MB桶。
uploaded_file_sizes = Summary(
'uploaded_file_sizes',
'Uploaded file size in bytes',
buckets=(
500000, # 500KB
1500000, # 1.5MB
2000000, # 2.5MB
)
)
由此,我们将创建4个基于的条形图。范围;<1MB,1MB(文件在0.5-1.5MB范围内),1MB(0.5-1.5MB范围内),2MB(1.5-2.5MB范围内),3MB+(2.5-infMB范围内)。
那么为了打出直方图的累积性,我们需要在每个查询中,计算出的是 变化率 从一个桶到另一个桶。
# Query 1: <1MB
uploaded_file_sizes_bucket{le="500000.0"}
# Query 2: 1MB
uploaded_file_sizes_bucket{le="1.5e+06"} - ignoring(le)
uploaded_file_sizes_bucket{le="500000.0"}
# Query 3: 2MB
uploaded_file_sizes_bucket{le="2.5e+06"} - ignoring(le)
uploaded_file_sizes_bucket{le="1.5e+06"}
# Query 4: 3MB+
uploaded_file_sizes_bucket{le="+Inf"} - ignoring(le)
uploaded_file_sizes_bucket{le="2.5e+06"}