本篇要來繼續講述「Http 上下游對應流量」為例的 Prometheus Server 寫入流程。
上篇提到 Prometheus Server 在收到 /metrics
的 http response 後,會將所有的指標值加入到抽象的 fanout storage 中,fanout storage 會把指標值分發給 local storage wal 和 remote storage。
Prometheus 寫入 Head 時,會先從記憶體中找到對應的時間序列。若是尚未存在的序列,則需在記憶體中創建新序列。之後依據該序列的前一筆資料,檢查樣本時間是否合理,再依據時間序列的壓縮規則,將樣本寫入 WAL。
Remote Storage 只有在 Local Storage WAL 寫入成功後,才會將資料寫入。