除了其本地時間序列數據庫以外,還能夠將Prometheus配置爲讀取和寫入遠程存儲。這旨在支持監視數據的長期存儲。數據庫
配置後,Prometheus存儲查詢(例如,經過HTTP API)將發送到本地和遠程存儲,而後合併結果。ui
請注意,爲了在面對遠程存儲問題時保持可靠性,警報和記錄規則評估僅使用本地TSDB。spa
您能夠在Prometheus配置文件的remote_read
部分中配置遠程存儲讀取路徑。3d
最簡單的是,您只需爲遠程存儲指定讀取的端點URL,再加上身份驗證方法。您可使用HTTP基本認證或承載令牌認證。代理
您可能須要使用read_recent
標誌:設置爲true時,將從遠程存儲和本地存儲中回答全部查詢。若是爲false(默認值),則能夠從本地存儲徹底回答的全部查詢都不會發送到遠程端點。日誌
您能夠指定一組required_matchers
(標籤,值對)以將遠程讀取限制爲查詢的某些子集。若是例如您只將部分指標寫入遠程存儲(請參見下文)。code
對於更復雜的配置,還有用於請求超時,TLS配置和代理設置的選項。blog
您能夠從多個遠程端點讀取內容,每一個端點都有一個remote_read
部分。隊列
配置後,Prometheus會將其抓取的樣本轉發到一個或多個遠程存儲。ip
遠程寫工做是經過「定序」將時間序列樣本寫入本地存儲,而後將它們排隊以寫入遠程存儲。
隊列其實是一組動態管理的「分片」:任何特定時間序列(即惟一指標)的全部樣本最終都將位於同一分片上。
隊列會自動按比例增長或減小寫入遠程存儲的分片數量,以跟上傳入數據的速率。
這樣一來,Prometheus即可以在不使用遠程資源的狀況下,僅使用必需的資源而且以最少的配置來管理遠程存儲。
您能夠在Prometheus配置文件的remote_write
部分中配置遠程存儲寫路徑。
與remote_read
同樣,最簡單的配置就是遠程存儲寫入URL,再加上身份驗證方法。您可使用HTTP基本認證或承載令牌認證。
您可使用write_relabel_configs
從新標記或限制您寫入遠程存儲的指標。例如,一般的用途是刪除一些指標子集:
queue_config
部分使您能夠控制上述動態隊列。一般,您無需在此處進行更改,而能夠依靠Prometheus的默認設置。
capacity
:每一個分片自己就是一個隊列,這是在分片「阻止」進一步添加以前排隊的樣本數;min_shards
,max_shards
:動態隊列將使用的最小和最大分片;max_samples_per_send
,batch_send_deadline
:每一個分片將樣本分批成max_samples_per_send
塊,或者若是它不能在batch_send_deadline
以前製造出該大小的批次,則繼續發送;後者不多在繁忙的普羅米修斯實例上發生;min_backoff
,max_backoff
,max_retries
:重試管理;注意在當前實現中未使用max_retries
-每一個分片只會阻塞並重試發送「 forever」。與remote_read
同樣,您也能夠配置用於請求超時,TLS配置和代理設置的選項。
您能夠經過每一個遠程端點都有一個remote_write
部分來寫入多個遠程端點。
您可能會在日誌中看到來自遠程存儲子系統的一些消息:
dropped sample for series that was not explicitly dropped via relabelling
因爲從新標記或其餘緣由,咱們最終獲得了一系列在遠程寫入路徑中沒有標籤的序列。咱們刪除它。Remote storage resharding from N to M
動態隊列大小正在改變分片的數量-增加以跟上傳入樣本數與傳出的遠程存儲寫入速率之比,或者因爲咱們的分片數量超出必要而縮小。Currently resharding, skipping
動態隊列但願更改成新的分片數量,可是從新分片已經在進行中。Failed to flush all samples on shutdown
關閉動態隊列時,Prometheus沒法將全部樣本刷新到遠程存儲-遠程存儲端點可能存在問題。遠程存儲子系統會導出大量指標,這些指標以prometheus_remote_storage
或prometheus_wal_watcher
爲前綴,如下是您可能會感興趣的選擇:
prometheus_remote_storage_samples_in_total
:樣本進入遠程存儲,與樣本輸出進行比較,以供隊列管理器(計數器)使用prometheus_remote_storage_succeeded_samples_total
:成功發送到遠程存儲(計數器)的樣本總數prometheus_remote_storage_pending_samples
:隊列中待發送的樣本數量,這些樣本將發送到遠程存儲(儀表)prometheus_remote_storage_shards
:用於並行發送到遠程存儲(儀表)的分片數prometheus_remote_storage_sent_batch_duration_seconds
: 發送樣品批次到遠程存儲的持續時間(直方圖)