共计 2399 个字符,预计需要花费 6 分钟才能阅读完成。
指标:估算 Prometheus 在监控零碎中,采集指标的指标值时,所消耗的存储容量。
统计后果个别以每小时 / 每天耗费多少 GB 容量示意,以便于进行容量布局。
- PromQL 计算样本收集率
rate(prometheus_tsdb_head_samples_appended_total[1m])
# 后果:2076 个 /s
依据过来 1m 采集到的 tsdb 的样本数,计算每秒的样本率。
- PromQL 计算每个样本占用 bytes
1) 估算:Prometheus 的压缩算法 (dod&xor),每个样本大小 1~2bytes,激进依照 2bytes 计算;
2) 精算:
# 每个样本均匀占用的 bytes
rate(prometheus_tsdb_compaction_chunk_size_bytes_sum[1h]) / rate(prometheus_tsdb_compaction_chunk_samples_sum[1h])
- 计算存储用量
由上述统计得悉,每秒入 TSDB 2076 个样本,每个样本 2bytes,能够统计出,1hour 的存储用量:
3600*2076*2 = 14,947,200 bytes = 15MB
也就是 2hour 存储用量大略 30MB。
到 prometheus 实例上查看一下理论用量:
/prometheus $ ls -alh
total 24K
drwxrwsrwx 17 root 2000 4.0K Feb 22 05:00 .
drwxr-xr-x 1 root root 28 Feb 2 06:03 ..
drwxr-sr-x 3 1000 2000 68 Feb 21 05:00 01EZ1FAVT6VZ7GQ2RKNZRFK47Z
drwxr-sr-x 3 1000 2000 68 Feb 21 07:00 01EZ1P6K16BXJQJDFF008VKVZ1
drwxr-sr-x 3 1000 2000 68 Feb 21 09:00 01EZ1X2A9B41NMEPD0T8FH9YH2
drwxr-sr-x 3 1000 2000 68 Feb 21 11:00 01EZ23Y1HQQPJZJTGF4NPH944Y
drwxr-sr-x 3 1000 2000 68 Feb 21 13:00 01EZ2ASRS728MQ2TWXC2K6R3G6
drwxr-sr-x 3 1000 2000 68 Feb 21 15:00 01EZ2HNG2GSF4GD2JZ25FBJHS3
drwxr-sr-x 3 1000 2000 68 Feb 21 17:00 01EZ2RH7A3M9V3RPDHDN4T21FM
drwxr-sr-x 3 1000 2000 68 Feb 21 19:00 01EZ2ZCYJFNG3HYWF326NJKXE3
drwxr-sr-x 3 1000 2000 68 Feb 21 21:00 01EZ368NS93N04A6RHDBGFBKJQ
drwxr-sr-x 3 1000 2000 68 Feb 21 23:00 01EZ3D4D13YT2HG8QPR4WB1QK0
drwxr-sr-x 3 1000 2000 68 Feb 22 01:00 01EZ3M04943Q1WW6SGAGN9ZVWX
drwxr-sr-x 3 1000 2000 68 Feb 22 03:00 01EZ3TVVHKWDFKNN697DPFE7J6
drwxr-sr-x 3 1000 2000 68 Feb 22 05:00 01EZ41QJS6YM7SHX18RQHSTV8H
drwxr-sr-x 2 1000 2000 34 Feb 22 05:00 chunks_head
-rw-r--r-- 1 1000 2000 19.5K Feb 22 06:58 queries.active
drwxr-sr-x 3 1000 2000 97 Feb 22 05:00 wal
/prometheus $
/prometheus $ du -sh 01EZ1FAVT6VZ7GQ2RKNZRFK47Z
25.5M 01EZ1FAVT6VZ7GQ2RKNZRFK47Z
/prometheus $
/prometheus $ du -sh 01EZ1P6K16BXJQJDFF008VKVZ1
25.4M 01EZ1P6K16BXJQJDFF008VKVZ1
/prometheus $
能够看到,2hour 的存储用量≈26MB,跟咱们之前的评估后果差不多。
附:如何通过 PromQL 查问指标个数?
1) 按指标名称,查每个__name__下的指标个数
# count by (__name__)({__name__=~".+"})
prometheus_target_scrapes_sample_out_of_bounds_total{} 2
prometheus_tsdb_wal_corruptions_total{} 2
......
# prometheus_target_scrapes_sample_out_of_bounds_total
prometheus_target_scrapes_sample_out_of_bounds_total{endpoint="web",instance="172.160.230.215:9090",job="prometheus-k8s",namespace="monitoring",pod="prometheus-k8s-0",service="prometheus-k8s"} 0
prometheus_target_scrapes_sample_out_of_bounds_total{endpoint="web",instance="172.160.230.226:9090",job="prometheus-k8s",namespace="monitoring",pod="prometheus-k8s-1",service="prometheus-k8s"} 0
能够看出,这里统计的指标数是辨别 tag 的。
2) 统计所有的指标个数
sum(count by (__name__)({__name__=~".+"}))
# 后果:59428 个
正文完
发表至: prometheus
2021-09-09