ΠΠ°Π·Π° Π΄Π°Π½Π½ΡΡ
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² (TSDB, time series database) Π² Prometheus 2 β ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅Ρ ΡΠ΅ΡΡΡΠ·Π½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅ΠΌ v2 Π² Prometheus 1 Π² ΠΏΠ»Π°Π½Π΅ ΡΠΊΠΎΡΠΎΡΡΠΈ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ². ΠΡ Π²Π½Π΅Π΄ΡΡΠ»ΠΈ Prometheus 2 Π² Percona Monitoring and Management (PMM), ΠΈ Ρ ΠΌΠ΅Π½Ρ Π±ΡΠ»Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡΡ Prometheus 2 TSDB. Π ΡΡΠΎΠΉ ΡΡΠ°ΡΡΠ΅ Ρ ΡΠ°ΡΡΠΊΠ°ΠΆΡ ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°Ρ
ΡΡΠΈΡ
Π½Π°Π±Π»ΡΠ΄Π΅Π½ΠΈΠΉ.
Π‘ΡΠ΅Π΄Π½ΡΡ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° Prometheus
ΠΠ»Ρ ΡΠ΅Ρ
, ΠΊΡΠΎ ΠΏΡΠΈΠ²ΡΠΊ ΠΈΠΌΠ΅ΡΡ Π΄Π΅Π»ΠΎ Ρ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ
ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ³ΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΎΠ±ΡΡΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ°Ρ Π½Π°Π³ΡΡΠ·ΠΊΠ° Prometheus Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»ΡΠ±ΠΎΠΏΡΡΠ½Π°. Π‘ΠΊΠΎΡΠΎΡΡΡ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΊ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅: ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ΅ΡΠ²ΠΈΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΡΠ΅, ΠΏΠΎΡΡΠ»Π°ΡΡ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅ΡΡΠΈΠΊ, ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° ΠΌΠ΅Π½ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ.
ΠΠ°ΠΏΡΠΎΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡ ΠΈΠ· ΡΠ°Π·Π½ΡΡ
ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ². ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ
, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π°Π»Π΅ΡΡΡ, ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΠΌΡΡΡΡ ΠΊ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠΉ ΠΈ ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠΎΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅. ΠΡΡΠ³ΠΈΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ Π·Π°ΠΏΡΠΎΡΡ, ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π²ΡΠΏΠ»Π΅ΡΠΊΠΈ, Ρ
ΠΎΡΡ, ΡΡΠΎ Π½Π΅ Ρ
Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΠΎ Π΄Π»Ρ Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
Π’Π΅ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΠΈ
Π Ρ
ΠΎΠ΄Π΅ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Ρ ΡΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΠΎΠ²Π°Π»ΡΡ Π½Π° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΠΈ Π½Π°ΠΊΠ°ΠΏΠ»ΠΈΠ²Π°ΡΡ Π΄Π°Π½Π½ΡΠ΅. Π― ΡΠ°Π·Π²Π΅ΡΠ½ΡΠ» Prometheus 2.3.2, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Go 1.10.1 (ΠΊΠ°ΠΊ ΡΠ°ΡΡΡ PMM 1.14) Π½Π° ΡΠ΅ΡΠ²ΠΈΡΠ΅ Linode, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΎΡ ΡΠΊΡΠΈΠΏΡ:
ΠΡΠ΅ Π½ΠΈΠΆΠ΅ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΡ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΈΡΡ Π½Π° ΡΠ΅ΡΠ²Π΅ΡΠ΅ Linode Ρ Π²ΠΎΡΠ΅ΠΌΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠ΄ΡΠ°ΠΌΠΈ ΠΈ 32 ΠΠ±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π° ΠΊΠΎΡΠΎΡΠΎΠΌ Π·Π°ΠΏΡΡΠ΅Π½Ρ 20 Π½Π°Π³ΡΡΠ·ΠΎΡΠ½ΡΡ
ΡΠΈΠΌΡΠ»ΡΡΠΈΠΉ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° Π΄Π²ΡΡ
ΡΠΎΡ ΠΈΠ½ΡΡΠ°Π½ΡΠΎΠ² MySQL. ΠΠ»ΠΈ, Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ
Prometheus, 800 ΡΠ°ΡΠ³Π΅ΡΠΎΠ² (targets), 440 ΡΠ±ΠΎΡΠΎΠ² (scrapes) Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, 380 ΡΡΡΡΡ Π·Π°ΠΏΠΈΡΠ΅ΠΉ (samples) Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΈ 1,7 ΠΌΠ»Π½ Π°ΠΊΡΠΈΠ²Π½ΡΡ
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ².
ΠΠΈΠ·Π°ΠΉΠ½
ΠΠ±ΡΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΡ
Π±Π°Π· Π΄Π°Π½Π½ΡΡ
, Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠΎΡ, ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» Prometheus 1.x, Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² storage.tsdb.min-block-duration
, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊ Π΄ΠΎΠ»Π³ΠΎ Π·Π°ΠΏΠΈΡΠΈ Π±ΡΠ΄ΡΡ Ρ
ΡΠ°Π½ΠΈΡΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠ΅ΡΠ΅Π΄ ΡΠ±ΡΠΎΡΠΎΠΌ Π½Π° Π΄ΠΈΡΠΊ (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΡΠΎ 2 ΡΠ°ΡΠ°). ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ², ΡΡΠ»ΡΠΊΠΎΠ² (labels) ΠΈ ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ±ΠΎΡΠ° Π΄Π°Π½Π½ΡΡ
(scrapes) Π² ΡΡΠΌΠΌΠ΅ Ρ ΡΠΈΡΡΡΠΌ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΌ ΠΏΠΎΡΠΎΠΊΠΎΠΌ. Π ΠΏΠ»Π°Π½Π΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Prometheus ΡΡΡΠ΅ΠΌΠΈΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎ 3 Π±Π°ΠΉΡΠ° Π½Π° Π·Π°ΠΏΠΈΡΡ (sample). Π‘ Π΄ΡΡΠ³ΠΎΠΉ ΡΡΠΎΡΠΎΠ½Ρ, ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΡΠ΄Π° Π²ΡΡΠ΅.
ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π±Π»ΠΎΠΊΠ°, Π½Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΅Π³ΠΎ Π²ΡΡΡΠ½ΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ Π²Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Ρ ΠΏΠ΅ΡΠ΅Π΄ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡΡ Π΄Π°ΡΡ Prometheus ΡΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΎΠ½ ΠΏΠΎΠΏΡΠΎΡΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΡΠ»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ ΠΌΠ΅ΡΡΠΈΠΊ, Prometheus ΡΠΏΠ°Π΄ΡΡ Ρ out of memory ΠΈΠ»ΠΈ Π΄ΠΎ Π½Π΅Π³ΠΎ Π΄ΠΎΠ±Π΅ΡΡΡΡΡ OOM killer.
ΠΠΎΠ±Π°Π²ΠΈΡΡ swap, ΡΡΠΎΠ±Ρ ΠΎΡΡΡΠ½ΡΡΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠ°Π΄Π΅Π½ΠΈΡ, ΠΊΠΎΠ³Π΄Π° Ρ Prometheus Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°Π΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ, Π½Π΅ ΠΎΡΠΎΠ±ΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π²Π·ΡΡΠ²Π½ΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. Π― Π΄ΡΠΌΠ°Ρ, ΡΡΠΎ Π΄Π΅Π»ΠΎ Π² Go, Π΅Π³ΠΎ garbage collector ΠΈ Π² ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎ swap.
ΠΡΡΠ³ΠΈΠΌ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΌ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΠΎΠΌ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ±ΡΠΎΡΠ° head block Π½Π° Π΄ΠΈΡΠΊ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π²ΠΌΠ΅ΡΡΠΎ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΎΡΡΡΠΈΡΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΡΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΡΠ°ΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΠ°ΠΊ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΡ ΠΈΠ· Π³ΡΠ°ΡΠΈΠΊΠ°, ΡΠ±ΡΠΎΡΡ Π½Π° Π΄ΠΈΡΠΊ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ Π΄Π²Π° ΡΠ°ΡΠ°. ΠΡΠ»ΠΈ Π²Ρ ΠΏΠΎΠΌΠ΅Π½ΡΠ΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ min-block-duration Π½Π° ΠΎΠ΄ΠΈΠ½ ΡΠ°Ρ, ΡΠΎ ΡΡΠΈ ΡΠ±ΡΠΎΡΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Ρ, Π½Π°ΡΠΈΠ½Π°Ρ ΡΠ΅ΡΠ΅Π· ΠΏΠΎΠ»ΡΠ°ΡΠ°.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ Prometheus, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΎΡ
Π£ Π½Π°Ρ Π΅ΡΡΡ Π°ΠΊΡΠΈΠ²Π½ΡΠΉ Π±Π»ΠΎΠΊ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠΉ head block, ΠΊΠΎΡΠΎΡΡΠΉ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ; Π±Π»ΠΎΠΊΠΈ ΠΆΠ΅ Ρ Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π΄ΠΎΡΡΡΠΏΠ½Ρ ΡΠ΅ΡΠ΅Π· mmap()
. ΠΡΠΎ ΡΠ±ΠΈΡΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ΅Ρ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ, Π½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΠΎΡΡΠ°Π²Π»ΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΌΠ΅ΡΡΠ° Π΄Π»Ρ ΠΊΠ΅ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π΅ΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ Π΄Π΅Π»Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ ΠΊ Π΄Π°Π½Π½ΡΠΌ ΡΡΠ°ΡΡΠ΅ ΡΠ΅Ρ
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΌΠ΅ΡΠ°Π΅Ρ head block.
Π Π΅ΡΡ ΡΡΠΎ Π·Π½Π°ΡΠΈΡ, ΡΡΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Prometheus Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²ΡΡΠΎΠΊΠΈΠΌ, ΠΎ ΡΡΠΌ Π½Π΅ ΡΡΠΎΠΈΡ Π±Π΅ΡΠΏΠΎΠΊΠΎΠΈΡΡΡΡ.
ΠΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π΄ΠΈΠ·Π°ΠΉΠ½Π° β ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ WAL (write ahead log). ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΡ, Prometheus ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ WAL Π΄Π»Ρ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ ΠΏΠΎΡΠ΅ΡΡ ΠΏΡΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΡΡ
. ΠΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠ΅ ΠΌΠ΅Ρ
Π°Π½ΠΈΠ·ΠΌΡ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΠΆΠΈΠ²ΡΡΠ΅ΡΡΠΈ Π΄Π°Π½Π½ΡΡ
, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Ρ. ΠΠ΅ΡΡΠΈΡ Prometheus 2.3.2 ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅Ρ WAL Π½Π° Π΄ΠΈΡΠΊ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 10 ΡΠ΅ΠΊΡΠ½Π΄, ΠΈ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π½Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
Π£ΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΡ (Compactions)
Prometheus TSDB ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½Π° ΠΏΠΎ ΠΎΠ±ΡΠ°Π·Ρ LSM-Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° (Log Structured merge β ΠΆΡΡΠ½Π°Π»ΡΠ½ΠΎ-ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠΎ ΡΠ»ΠΈΡΠ½ΠΈΠ΅ΠΌ): head block ΡΠ±ΡΠ°ΡΡΠ²Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈ Π½Π° Π΄ΠΈΡΠΊ, Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±Π»ΠΎΠΊΠΎΠ² Π²ΠΌΠ΅ΡΡΠ΅ Π΄Π»Ρ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΡ ΡΠΊΠ°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π±Π»ΠΎΠΊΠΎΠ² ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ°Ρ . ΠΠ΄Π΅ΡΡ Π²ΠΈΠ΄Π½ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π»ΠΎΠΊΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Ρ Π½Π°Π±Π»ΡΠ΄Π°Π» Π½Π° ΡΠ΅ΡΡΠΎΠ²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΡΡΠΎΠΊ Π½Π°Π³ΡΡΠ·ΠΊΠΈ.
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠ·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅, Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΈΠ·ΡΡΠΈΡΡ ΡΠ°ΠΉΠ» meta.json, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΈΠΌΠ΅ΡΡΠΈΡ
ΡΡ Π±Π»ΠΎΠΊΠ°Ρ
ΠΈ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ.
{
Β Β Β Β Β Β Β "ulid": "01CPZDPD1D9R019JS87TPV5MPE",
Β Β Β Β Β Β Β "minTime": 1536472800000,
Β Β Β Β Β Β Β "maxTime": 1536494400000,
Β Β Β Β Β Β Β "stats": {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "numSamples": 8292128378,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "numSeries": 1673622,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "numChunks": 69528220
Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β "compaction": {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "level": 2,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "sources": [
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "01CPYRY9MS465Y5ETM3SXFBV7X",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "01CPYZT0WRJ1JB1P0DP80VY5KJ",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "01CPZ6NR4Q3PDP3E57HEH760XS"
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ],
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "parents": [
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "ulid": "01CPYRY9MS465Y5ETM3SXFBV7X",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "minTime": 1536472800000,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "maxTime": 1536480000000
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "ulid": "01CPYZT0WRJ1JB1P0DP80VY5KJ",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "minTime": 1536480000000,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "maxTime": 1536487200000
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β {
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "ulid": "01CPZ6NR4Q3PDP3E57HEH760XS",
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "minTime": 1536487200000,
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β "maxTime": 1536494400000
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β }
Β Β Β Β Β Β Β Β Β Β Β Β Β Β Β ]
Β Β Β Β Β Β Β },
Β Β Β Β Β Β Β "version": 1
}
Π£ΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΡ Π² Prometheus ΠΏΡΠΈΠ²ΡΠ·Π°Π½Ρ ΠΊΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΡΠ±ΡΠΎΡΠ° head block Π½Π° Π΄ΠΈΡΠΊ. Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°ΠΊΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ.
Π‘ΡΠ΄Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΡ, ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΡ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Ρ ΠΈ ΠΌΠΎΠ³ΡΡ Π²ΡΠ·ΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ ΡΠΊΠ°ΡΠΊΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ I/O Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
Π‘ΠΊΠ°ΡΠΊΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ CPU
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, ΡΡΠΎ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π½Π΅Π³Π°ΡΠΈΠ²Π½ΠΎ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠ΅ΡΡΡΠ·Π½ΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Π΄Π»Ρ LSM-Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡ: ΠΊΠ°ΠΊ Π΄Π΅Π»Π°ΡΡ ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΡ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΠΈ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ Π²ΡΠ·ΡΠ²Π°ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ ΡΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΎΠ²Π΅ΡΡ
Π΅Π΄Π°?
ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΠΉ ΡΠΎΠΆΠ΅ Π²ΡΠ³Π»ΡΠ΄ΠΈΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π»ΡΠ±ΠΎΠΏΡΡΠ½ΠΎ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΡΡ, ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅ ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Ρ Cached Π½Π° Free: Π·Π½Π°ΡΠΈΡ, ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΡΠ΅Π½Π½Π°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π±ΡΠ»Π° ΠΎΡΡΡΠ΄Π° ΡΠ±ΡΠ°Π½Π°. ΠΡΠ±ΠΎΠΏΡΡΠ½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π»ΠΈ ΡΡΡ fadvice()
ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ Π΅ΡΡ ΡΠ΅Ρ
Π½ΠΈΠΊΠ° ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠ»ΠΈ ΡΡΠΎ Π²ΡΠ·Π²Π°Π½ΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ΅Ρ Π±ΡΠ» ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄ΡΠ½ ΠΎΡ Π±Π»ΠΎΠΊΠΎΠ², ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½Π½ΡΡ
ΠΏΡΠΈ ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΠΈ?
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΡ
ΠΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅ ΡΠ±ΠΎΠ΅Π² Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅ΠΌΡ, ΠΈ ΡΡΠΎ ΠΎΠ±ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΎ. ΠΠ»Ρ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° Π² ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ ΠΌΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΠΆΠ΄Π°ΡΡ ΠΎΠΊΠΎΠ»ΠΎ 25 ΠΌΠΈΠ½ΡΡ, ΠΏΠΎΠΊΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΡΡΡΠΎΠΌ SSD-Π΄ΠΈΡΠΊΠ°.
level=info ts=2018-09-13T13:38:14.09650965Z caller=main.go:222 msg="Starting Prometheus" version="(version=2.3.2, branch=v2.3.2, revision=71af5e29e815795e9dd14742ee7725682fa14b7b)"
level=info ts=2018-09-13T13:38:14.096599879Z caller=main.go:223 build_context="(go=go1.10.1, user=Jenkins, date=20180725-08:58:13OURCE)"
level=info ts=2018-09-13T13:38:14.096624109Z caller=main.go:224 host_details="(Linux 4.15.0-32-generic #35-Ubuntu SMP Fri Aug 10 17:58:07 UTC 2018 x86_64 1bee9e9b78cf (none))"
level=info ts=2018-09-13T13:38:14.096641396Z caller=main.go:225 fd_limits="(soft=1048576, hard=1048576)"
level=info ts=2018-09-13T13:38:14.097715256Z caller=web.go:415 component=web msg="Start listening for connections" address=:9090
level=info ts=2018-09-13T13:38:14.097400393Z caller=main.go:533 msg="Starting TSDB ..."
level=info ts=2018-09-13T13:38:14.098718401Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536530400000 maxt=1536537600000 ulid=01CQ0FW3ME8Q5W2AN5F9CB7R0R
level=info ts=2018-09-13T13:38:14.100315658Z caller=web.go:467 component=web msg="router prefix" prefix=/prometheus
level=info ts=2018-09-13T13:38:14.101793727Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536732000000 maxt=1536753600000 ulid=01CQ78486TNX5QZTBF049PQHSM
level=info ts=2018-09-13T13:38:14.102267346Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536537600000 maxt=1536732000000 ulid=01CQ78DE7HSQK0C0F5AZ46YGF0
level=info ts=2018-09-13T13:38:14.102660295Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536775200000 maxt=1536782400000 ulid=01CQ7SAT4RM21Y0PT5GNSS146Q
level=info ts=2018-09-13T13:38:14.103075885Z caller=repair.go:39 component=tsdb msg="found healthy block" mint=1536753600000 maxt=1536775200000 ulid=01CQ7SV8WJ3C2W5S3RTAHC2GHB
level=error ts=2018-09-13T14:05:18.208469169Z caller=wal.go:275 component=tsdb msg="WAL corruption detected; truncating" err="unexpected CRC32 checksum d0465484, want 0" file=/opt/prometheus/data/.prom2-data/wal/007357 pos=15504363
level=info ts=2018-09-13T14:05:19.471459777Z caller=main.go:543 msg="TSDB started"
level=info ts=2018-09-13T14:05:19.471604598Z caller=main.go:603 msg="Loading configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499156711Z caller=main.go:629 msg="Completed loading of configuration file" filename=/etc/prometheus.yml
level=info ts=2018-09-13T14:05:19.499228186Z caller=main.go:502 msg="Server is ready to receive web requests."
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ β Π²ΡΡΠΎΠΊΠΎΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π² Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΆΠ΅ ΠΎΠ±ΡΡΠΌΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΠΏΠΎΠ΄Π½ΡΡΡΡΡ ΠΈΠ·-Π·Π° OOM. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡΠΎΡΠΎΠ΅ Ρ Π½Π°ΡΡΠ», ΡΡΠΎ ΠΎΡΠΊΠ»ΡΡΠΈΡΡ ΡΠ±ΠΎΡ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ΄Π½ΡΡΡ ΡΠ΅ΡΠ²Π΅Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ Π΅ΠΌΡ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΡΠΆΠ΅ ΡΠΎ Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΌ ΡΠ±ΠΎΡΠΎΠΌ.
Π Π°Π·ΠΎΠ³ΡΠ΅Π²
ΠΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΠΎΠΌΠ½ΠΈΡΡ Π² Ρ ΠΎΠ΄Π΅ ΡΠ°Π·ΠΎΠ³ΡΠ΅Π²Π° β ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ Π½ΠΈΠ·ΠΊΠΎΠΉ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² ΠΏΡΡΠΌΠΎ ΠΏΠΎΡΠ»Π΅ ΡΡΠ°ΡΡΠ°. Π Ρ ΠΎΠ΄Π΅ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ , Π½ΠΎ Π½Π΅ Π²ΡΠ΅Ρ ΡΡΠ°ΡΡΠΎΠ² Ρ Π½Π°Π±Π»ΡΠ΄Π°Π» ΡΠ΅ΡΡΡΠ·Π½ΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΏΠΎ CPU ΠΈ ΠΏΠ°ΠΌΡΡΠΈ.
ΠΡΠΎΠ²Π°Π»Ρ Π² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ Prometheus Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎ ΡΡΠ°ΡΡΠ° ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ±ΠΎΡΡ, ΠΈ ΠΊΠ°ΠΊΠ°Ρ-ΡΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΠΏΠΎΡΠ΅ΡΡΠ½Π°.
Π― Π½Π΅ Π²ΡΡΡΠ½ΠΈΠ» ΡΠΎΡΠ½ΡΠ΅ ΠΏΡΠΈΡΠΈΠ½Ρ Π²ΡΡΠΎΠΊΠΎΠΉ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈ ΠΏΠ°ΠΌΡΡΡ. ΠΠΎΠ΄ΠΎΠ·ΡΠ΅Π²Π°Ρ ΡΡΠΎ ΡΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ Π½ΠΎΠ²ΡΡ
Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ
ΡΡΠ΄ΠΎΠ² Π² head block Ρ Π²ΡΡΠΎΠΊΠΎΠΉ ΡΠ°ΡΡΠΎΡΠΎΠΉ.
Π‘ΠΊΠ°ΡΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° CPU
ΠΠΎΠΌΠΈΠΌΠΎ ΡΠΏΠ»ΠΎΡΠ½Π΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠ·Π΄Π°ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ Π²ΡΡΠΎΠΊΡΡ Π½Π°Π³ΡΡΠ·ΠΊΡ ΠΏΠΎ I/O, Ρ Π·Π°ΠΌΠ΅ΡΠΈΠ» ΡΠ΅ΡΡΡΠ·Π½ΡΠ΅ ΡΠΊΠ°ΡΠΊΠΈ Π½Π°Π³ΡΡΠ·ΠΊΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΊΠ°ΠΆΠ΄ΡΠ΅ Π΄Π²Π΅ ΠΌΠΈΠ½ΡΡΡ. ΠΡΠΏΠ»Π΅ΡΠΊΠΈ Π΄ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈ Π²ΡΡΠΎΠΊΠΎΠΌ Π²Ρ ΠΎΠ΄ΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ ΠΈ ΠΏΠΎΡ ΠΎΠΆΠ΅, ΡΡΠΎ ΠΎΠ½ΠΈ Π²ΡΠ·Π²Π°Π½Ρ ΡΠ±ΠΎΡΡΠΈΠΊΠΎΠΌ ΠΌΡΡΠΎΡΠ° Go, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΄ΡΠ° ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π·Π°Π³ΡΡΠΆΠ΅Π½Ρ.
ΠΡΠΈ ΡΠΊΠ°ΡΠΊΠΈ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΈ Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½Ρ. ΠΠΎΡ
ΠΎΠΆΠ΅, ΡΡΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ, Π²Π½ΡΡΡΠ΅Π½Π½ΡΡ ΡΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° ΠΈ ΠΌΠ΅ΡΡΠΈΠΊΠΈ Prometheus ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅Π΄ΠΎΡΡΡΠΏΠ½Ρ, ΡΡΠΎ Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΏΡΠΎΠ²Π°Π»Ρ Π² Π΄Π°Π½Π½ΡΡ
Π² ΡΡΠΈ ΠΆΠ΅ ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ.
Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠΊΡΠΏΠΎΡΡΡΡ Prometheus Π·Π°ΡΡΠΊΠ°Π΅ΡΡΡ Π½Π° ΠΎΠ΄Π½Ρ ΡΠ΅ΠΊΡΠ½Π΄Ρ.
ΠΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΌΠ΅ΡΠΈΡΡ ΠΊΠΎΡΡΠ΅Π»ΡΡΠΈΠΈ Ρ ΡΠ±ΠΎΡΠΊΠΎΠΉ ΠΌΡΡΠΎΡΠ° (GC).
ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
TSDB Π² Prometheus 2 Π΄Π΅ΠΉΡΡΠ²ΡΠ΅Ρ Π±ΡΡΡΡΠΎ, ΡΠΏΠΎΡΠΎΠ±Π½Π° ΡΠΏΡΠ°Π²Π»ΡΡΡΡΡ Ρ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Π°ΠΌΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΄ΠΎΠ² ΠΈ Π² ΡΠΎ ΠΆΠ΅ Π²ΡΠ΅ΠΌΡ Ρ ΡΡΡΡΡΠ°ΠΌΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ, ΡΠΎΠ²Π΅ΡΡΠ°Π΅ΠΌΡΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π΄ΠΎΠ²ΠΎΠ»ΡΠ½ΠΎ ΡΠΊΡΠΎΠΌΠ½ΠΎΠ΅ ΠΆΠ΅Π»Π΅Π·ΠΎ. Π£ΡΠΈΠ»ΠΈΠ·Π°ΡΠΈΡ CPU ΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ I/O ΡΠΎΠΆΠ΅ Π²ΠΏΠ΅ΡΠ°ΡΠ»ΡΠ΅Ρ. ΠΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π» Π΄ΠΎ 200 000 ΠΌΠ΅ΡΡΠΈΠΊ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π½Π° ΠΎΠ΄Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΡΠ΄ΡΠΎ.
ΠΠ»Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Π½Π°Π΄ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡΡ ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΡΡ ΠΎΠ±ΡΡΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ ΡΠ΅Π°Π»ΡΠ½Π°Ρ ΠΏΠ°ΠΌΡΡΡ. ΠΠ±ΡΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠΉ Ρ Π½Π°Π±Π»ΡΠ΄Π°Π», ΡΠΎΡΡΠ°Π²Π»ΡΠ» ΠΎΠΊΠΎΠ»ΠΎ 5 ΠΠ±Π°ΠΉΡ Π½Π° 100 000 Π·Π°ΠΏΠΈΡΠ΅ΠΉ Π² ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²Ρ ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°, ΡΡΠΎ Π΄Π°Π²Π°Π»ΠΎ Π² ΡΡΠΌΠΌΠ΅ Ρ ΠΊΠ΅ΡΠ΅ΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΠΊΠΎΠ»ΠΎ 8 ΠΠ±Π°ΠΉΡ Π·Π°Π½ΡΡΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ.
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π΅ΡΡ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ Π½Π΅ΠΌΠ°Π»ΠΎ ΡΠ°Π±ΠΎΡΡ ΠΏΠΎ ΡΠΊΡΠΎΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠ»Π΅ΡΠΊΠΎΠ² CPU ΠΈ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΠ³ΠΎ I/O, ΠΈ ΡΡΠΎ Π½Π΅ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΡΡΠΈΡΡΠ²Π°Ρ, Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΅ΡΡ ΠΌΠΎΠ»ΠΎΠ΄Π° TSDB Prometheus 2 Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ Ρ InnoDB, TokuDB, RocksDB, WiredTiger, Π½ΠΎ Π²ΡΠ΅ ΠΎΠ½ΠΈ ΠΈΠΌΠ΅Π»ΠΈ ΠΏΠΎΡ
ΠΎΠΆΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com