Prometheus遠(yuǎn)端數(shù)據(jù)存儲(chǔ)方案之PostgreSQL

今天看到德哥分享的基于postgresql的prometheus數(shù)據(jù)遠(yuǎn)端存儲(chǔ)方案,于是有了本文的實(shí)驗(yàn)。

創(chuàng)新互聯(lián)是一家專業(yè)提供布爾津企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、html5、小程序制作等業(yè)務(wù)。10年已為布爾津眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進(jìn)行中。

通常,prometheus的外置存儲(chǔ)方案有好幾種選擇,例如influxdb,m3db, es,postgresql。

m3db一般在云原生環(huán)境下,用的更趁手些。

這里我們演示下postgresql的遠(yuǎn)端存儲(chǔ)方案(可讀可寫),具體看下面的實(shí)驗(yàn)。

實(shí)驗(yàn)環(huán)境:

? ? CentOS7.4

? ? PG11-git-1921 編譯安裝版

參考文檔:?

? ? https://blog.csdn.net/qq_43303221/article/details/88574693#cmake_34_50? ?編譯安裝 TimescaleDB 擴(kuò)展

? ? https://studygolang.com/articles/13522?fr=sidebar? ?遠(yuǎn)端存儲(chǔ)的介紹

? ? 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擴(kuò)展的官方文檔

1、安裝llvm

yum?install?centos-release-scl-rh
yum?install?llvm-toolset-7-clang
yum?install?llvm5.0?
yum?install?llvm5.0-libs
yum?install?llvm5.0-devel
yum?install?clang

2、安裝cmake-3.4以上的版本

cd?/usr/local/
wget?https://github.com/Kitware/CMake/releases/download/v3.16.0-rc2/cmake-3.16.0-rc2-Linux-x86_64.sh
sh?cmake-3.16.0-rc2-Linux-x86_64.sh
即可在當(dāng)前路徑下安裝cmake-3.16

載入cmake-3.16到環(huán)境變量:
export?PATH=/usr/local/cmake-3.16.0-rc2-Linux-x86_64/bin:$PATH

3、編譯安裝PG11帶jit模塊

su?-?postgres

cd?/home/postgres/

wget??

yum?localinstall?epel-release-latest-7.noarch.rpm

yum?install?llvm5.0?llvm5.0-devel?clang

cd?/home/postgres/pg_sources/postgresql-11
./configure?--prefix=/usr/local/pgsql-11.5-jit-1921?\
--with-python?--with-perl?--with-tcl?--with-pam?\
--with-openssl?--with-libxml?--with-libxslt?\
--with-llvm?LLVM_CONFIG='/usr/lib64/llvm5.0/bin/llvm-config'

make?
make?install?
然后,還有些數(shù)據(jù)庫(kù)的基礎(chǔ)配置,這里就不細(xì)說(shuō)了。

4、安裝TimescaleDB擴(kuò)展

su?-?postgres
cd?/home/postgres/
cd?timescaledb-1.4.2/

export?PATH=/usr/local/pgsql-11.5-jit-1921/bin:$PATH

./bootstrap?輸入y

cd?./build?&&?make

make?install??日志如下:

[??0%]?Built?target?sqlfile
[?25%]?Built?target?sqlupdatescripts
[?81%]?Built?target?timescaledb
[?85%]?Built?target?timescaledb-loader
[100%]?Built?target?timescaledb-tsl
Install?the?project...
--?Install?configuration:?"Release"
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb.control
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.4.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.4.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.4.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.3.2--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.3.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.3.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.2.2--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.2.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.2.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.1.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.1.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.0.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.0.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.0.0-rc3--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.0.0-rc2--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--1.0.0-rc1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.12.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.12.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.11.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.10.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.10.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.9.2--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.9.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.9.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.8.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.7.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.7.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.6.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.6.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.5.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.4.2--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.4.1--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.4.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.3.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.2.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/share/extension/timescaledb--0.1.0--1.4.2.sql
--?Installing:?/usr/local/pgsql-11.5-jit-1921/lib/timescaledb-1.4.2.so
--?Installing:?/usr/local/pgsql-11.5-jit-1921/lib/timescaledb.so
--?Installing:?/usr/local/pgsql-11.5-jit-1921/lib/timescaledb-tsl-1.4.2.so

即可完成timescaledb擴(kuò)展的安裝

編輯pg的配置文件,修改如下:

shared_preload_libraries?=?'timescaledb'

完成后重啟PG進(jìn)程

然后,登錄到PG中,創(chuàng)建擴(kuò)展:

postgres=#?CREATE?EXTENSION?timescaledb;

5、安裝pg_prometheus擴(kuò)展

su?-?postgres
cd?/home/postgres/
export?PATH=/usr/local/pgsql-11.5-jit-1921/bin:$PATH
USE_PGXS=1?make??
USE_PGXS=1?make?install

編輯pg的配置文件,修改如下:

shared_preload_libraries?=?'timescaledb,pg_prometheus'

完成后重啟PG進(jìn)程

然后,登錄到PG中,創(chuàng)建擴(kuò)展:

postgres=#?CREATE?EXTENSION?pg_prometheus?;
postgres=#?SELECT?create_prometheus_table('metrics');???或者使用?SELECT?create_prometheus_table('metrics',use_timescaledb=>true);
postgres=#?INSERT?INTO?metrics?VALUES?('cpu_usage{service="nginx",host="machine1"}?34.6?1494595898000');??
postgres=#?\d
??????????????????List?of?relations
?Schema?|?????????Name??????????|???Type???|??Owner???
--------+-----------------------+----------+----------
?public?|?metrics???????????????|?view?????|?postgres
?public?|?metrics_copy??????????|?table????|?postgres
?public?|?metrics_labels????????|?table????|?postgres
?public?|?metrics_labels_id_seq?|?sequence?|?postgres
?public?|?metrics_values????????|?table????|?postgres
(5?rows)

6、啟動(dòng)prometheus-postgresql-adapter

直接到https://github.com/timescale/prometheus-postgresql-adapter?下載解壓prometheus-postgresql-adapter

./prometheus-postgresql-adapter?-pg-port?1921?--pg-user?postgres??即可在前臺(tái)啟動(dòng)adapter進(jìn)程


7、使用prometheus連接adapter端口:

vim /usr/local/prometheus/prometheus.yml? 在最后加2個(gè)配置;

remote_write:
?-?url:?"http://192.168.2.4:9201/write"
???write_relabel_configs:
??????-?source_labels:?[__name__]
????????regex:?'go_.*'
????????action:?drop
remote_read:
??-?url:?"http://192.168.2.4:9201/read"
????read_recent:?false

說(shuō)明: 我這里設(shè)置的read_recent為false,表示查詢prometheus近期數(shù)據(jù)不要到PG庫(kù)里來(lái)?yè)茢?shù)據(jù),而是直接查prometheus本地緩存的數(shù)據(jù),這樣提高查詢的速度并且能降低PG庫(kù)的負(fù)載。

不足:

? ? 目前的配置來(lái)看,我們同事運(yùn)行的prometheus和PG庫(kù), 存放同樣歷史周期的的metrics,PG庫(kù)的體積遠(yuǎn)遠(yuǎn)超過(guò)了prometheus的體積。

? ? PG庫(kù)的metrics_values表已經(jīng) 40 MB,此時(shí)的prometheus的data目錄才 16MB 。 磁盤空間占用上,相差接近3倍。

優(yōu)化方案待定:

? ? 調(diào)整remote_write 寫入策略,通過(guò)drop操作來(lái)降低存儲(chǔ)到PG的metrics的體積?

新聞名稱:Prometheus遠(yuǎn)端數(shù)據(jù)存儲(chǔ)方案之PostgreSQL
轉(zhuǎn)載來(lái)源:http://bm7419.com/article44/jjeeee.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、ChatGPT、企業(yè)網(wǎng)站制作、靜態(tài)網(wǎng)站、標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)