有一次,来个需求,监控设备任务的相关资源信息。但是因为场景原因,无法即时上传相关监控数据,只能把当时数据暂存服务器上,只有等任务完结后,统一批量把相关数据上报给prometheus。
这就涉及到,上传的数据,可能是昨天或者之前某一时刻的数据或者时间段的数据,需要自定义时间戳,这样就排除了push模式,只能用pull的方式,自定义exporter等待prometheus过来了拉取。
下面记录一些使用过程注意的小点,第一次用,比较菜,望指正。
提供给prometheus的采集数据格式:
<监控指标名称>{ <标签名称>=<标签值>…} <样本值1> <时间戳>
如:machine_cpu_use{date_id="a000001",use_name="root1"} 89.02 1690123237000
machine_cpu_use{date_id="a000001",use_name="root1"} 20.02 1690123248000
时间戳自己有需求的话,想自定义时间的话,就可以打,也可以不打,Prometheus Server 会在拉取到样本数据时将时间戳设置为当前时间。
自定义时间戳,上报时还有个注意点就是 prometheus持久化最短默认时间是2个小时,所以,你要是想自定义时间戳,写入2小时之前的数据,就要更改 持久化时间。
--storage.tsdb.min-block-duration 数据块在持久化之前的最短持续时间默认值(“2h”)内存利用率越低,这个时间可以设置的时间越大
--storage.tsdb.max-block-duration 每个多长时间进行压缩 保存到磁盘的块 默认值是持久化参数的百分之10
更改到合适的数值,当然这个数值会有些内存利用率的牺牲。
可以启动时加上上面这两个参数即可:
./prometheus --config.file=prometheus.yml --web.listen-address=:8099 --storage.tsdb.min-block-duration=120h --storage.tsdb.max-block-duration=120h &
第一次用,有理解不对的地方,欢迎帮忙指出