Prometheus遠程存儲

除了其本地時間序列數據庫以外,還能夠將Prometheus配置爲讀取和寫入遠程存儲。這旨在支持監視數據的長期存儲。數據庫

遠程讀

配置後,Prometheus存儲查詢(例如,經過HTTP API)將發送到本地和遠程存儲,而後合併結果。ui

prometheus-read.jpg

請注意,爲了在面對遠程存儲問題時保持可靠性,警報和記錄規則評估僅使用本​​地TSDB。spa

配置

您能夠在Prometheus配置文件的remote_read部分中配置遠程存儲讀取路徑。3d

最簡單的是,您只需爲遠程存儲指定讀取的端點URL,再加上身份驗證方法。您可使用HTTP基本認證或承載令牌認證。代理

您可能須要使用read_recent標誌:設置爲true時,將從遠程存儲和本地存儲中回答全部查詢。若是爲false(默認值),則能夠從本地存儲徹底回答的全部查詢都不會發送到遠程端點。日誌

您能夠指定一組required_matchers(標籤,值對)以將遠程讀取限制爲查詢的某些子集。若是例如您只將部分指標寫入遠程存儲(請參見下文)。code

對於更復雜的配置,還有用於請求超時,TLS配置和代理設置的選項。blog

您能夠從多個遠程端點讀取內容,每一個端點都有一個remote_read部分。隊列

遠程寫

配置後,Prometheus會將其抓取的樣本轉發到一個或多個遠程存儲。ip

prometheus-write.jpg

遠程寫工做是經過「定序」將時間序列樣本寫入本地存儲,而後將它們排隊以寫入遠程存儲。

隊列其實是一組動態管理的「分片」:任何特定時間序列(即惟一指標)的全部樣本最終都將位於同一分片上。

隊列會自動按比例增長或減小寫入遠程存儲的分片數量,以跟上傳入數據的速率。

這樣一來,Prometheus即可以在不使用遠程資源的狀況下,僅使用必需的資源而且以最少的配置來管理遠程存儲。

配置

您能夠在Prometheus配置文件的remote_write部分中配置遠程存儲寫路徑。

remote_read同樣,最簡單的配置就是遠程存儲寫入URL,再加上身份驗證方法。您可使用HTTP基本認證或承載令牌認證。

您可使用write_relabel_configs從新標記或限制您寫入遠程存儲的指標。例如,一般的用途是刪除一些指標子集:

prometheus-relable.jpg

queue_config部分使您能夠控制上述動態隊列。一般,您無需在此處進行更改,而能夠依靠Prometheus的默認設置。

  • capacity:每一個分片自己就是一個隊列,這是在分片「阻止」進一步添加以前排隊的樣本數;
  • min_shardsmax_shards:動態隊列將使用的最小和最大分片;
  • max_samples_per_sendbatch_send_deadline:每一個分片將樣本分批成max_samples_per_send塊,或者若是它不能在batch_send_deadline以前製造出該大小的批次,則繼續發送;後者不多在繁忙的普羅米修斯實例上發生;
  • min_backoffmax_backoffmax_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沒法將全部樣本刷新到遠程存儲-遠程存儲端點可能存在問題。

Metrics

遠程存儲子系統會導出大量指標,這些指標以prometheus_remote_storageprometheus_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 : 發送樣品批次到遠程存儲的持續時間(直方圖)
相關文章
相關標籤/搜索