今天看到德哥分享的基于postgresql的prometheus資料遠端存儲方案,于是有了本文的實驗。
通常,prometheus的外置存儲方案有好幾種選擇,例如influxdb,m3db, es,postgresql。
m3db一般在雲原生環境下,用的更趁手些。
這裡我們示範下postgresql的遠端存儲方案(可讀可寫),具體看下面的實驗。
實驗環境:
centos7.4
pg11-git-1921 編譯安裝版
參考文檔:
https://blog.csdn.net/qq_43303221/article/details/88574693#cmake_34_50 編譯安裝 timescaledb 擴充
https://studygolang.com/articles/13522?fr=sidebar 遠端存儲的介紹
https://github.com/timescale/prometheus-postgresql-adapter prometheus-postgresql-adapter的官方文檔介紹
https://prometheus.io/docs/prometheus/latest/configuration/configuration/#remote_write 官方文檔
https://github.com/digoal/blog/blob/master/201910/20191027_04.md 德哥blog
https://github.com/timescale/pg_prometheus pg_prometheus擴充的官方文檔
1、安裝llvm
2、安裝cmake-3.4以上的版本
3、編譯安裝pg11帶jit子產品
4、安裝timescaledb擴充
即可完成timescaledb擴充的安裝
編輯pg的配置檔案,修改如下:
完成後重新開機pg程序
然後,登入到pg中,建立擴充:
5、安裝pg_prometheus擴充
6、啟動prometheus-postgresql-adapter
直接到https://github.com/timescale/prometheus-postgresql-adapter 下載下傳解壓prometheus-postgresql-adapter
7、使用prometheus連接配接adapter端口:
vim /usr/local/prometheus/prometheus.yml 在最後加2個配置;
說明: 我這裡設定的read_recent為false,表示查詢prometheus近期資料不要到pg庫裡來撈資料,而是直接查prometheus本地緩存的資料,這樣提高查詢的速度并且能降低pg庫的負載。
不足:
目前的配置來看,我們同僚運作的prometheus和pg庫, 存放同樣曆史周期的的metrics,pg庫的體積遠遠超過了prometheus的體積。
pg庫的metrics_values表已經 40 mb,此時的prometheus的data目錄才 16mb 。 磁盤空間占用上,相差接近3倍。
優化方案待定:
調整remote_write 寫入政策,通過drop操作來降低存儲到pg的metrics的體積?