Prometheus 2์˜ TSDB ๋ถ„์„

Prometheus 2์˜ TSDB ๋ถ„์„

Prometheus 2์˜ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(TSDB)๋Š” ๋ฐ์ดํ„ฐ ์ถ•์  ์†๋„, ์ฟผ๋ฆฌ ์‹คํ–‰ ๋ฐ ๋ฆฌ์†Œ์Šค ํšจ์œจ์„ฑ ์ธก๋ฉด์—์„œ Prometheus 2์˜ v1 โ€‹โ€‹์Šคํ† ๋ฆฌ์ง€์— ๋น„ํ•ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋œ ์—”์ง€๋‹ˆ์–ด๋ง ์†”๋ฃจ์…˜์˜ ํ›Œ๋ฅญํ•œ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” PMM(Percona Monitoring and Management)์—์„œ Prometheus 2๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์—ˆ๊ณ  Prometheus 2 TSDB์˜ ์„ฑ๋Šฅ์„ ์ดํ•ดํ•  ๊ธฐํšŒ๋ฅผ ๊ฐ€์กŒ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๊ด€์ฐฐ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

ํ‰๊ท  Prometheus ์›Œํฌ๋กœ๋“œ

๋ฒ”์šฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋‹ค๋ฃจ๋Š” ๋ฐ ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ๋Š” ์ผ๋ฐ˜์ ์ธ Prometheus ์›Œํฌ๋กœ๋“œ๊ฐ€ ๋งค์šฐ ํฅ๋ฏธ๋กœ์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ถ•์  ์†๋„๋Š” ์•ˆ์ •์ ์ธ ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ์„œ๋น„์Šค๋Š” ๊ฑฐ์˜ ๋™์ผํ•œ ์ˆ˜์˜ ์ธก์ •ํ•ญ๋ชฉ์„ ๋ณด๋‚ด๊ณ  ์ธํ”„๋ผ๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆฌ๊ฒŒ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.
์ •๋ณด ์š”์ฒญ์€ ๋‹ค์–‘ํ•œ ์ถœ์ฒ˜์—์„œ ์ด๋ฃจ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฒฝ๊ณ ์™€ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋Šฅ๋„ ์•ˆ์ •์ ์ด๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ๊ฐ’์„ ์œ„ํ•ด ๋…ธ๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์š”์ฒญ๊ณผ ๊ฐ™์€ ๋‹ค๋ฅธ ์š”์ฒญ์œผ๋กœ ์ธํ•ด ๋ฒ„์ŠคํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋Œ€๋ถ€๋ถ„์˜ ์›Œํฌ๋กœ๋“œ์—๋Š” ํ•ด๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ

ํ…Œ์ŠคํŠธํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ ์ถ•์  ๋Šฅ๋ ฅ์— ์ค‘์ ์„ ๋‘์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Go 2.3.2(PMM 1.10.1์˜ ์ผ๋ถ€)๋กœ ์ปดํŒŒ์ผ๋œ Prometheus 1.14๋ฅผ Linode ์„œ๋น„์Šค์— ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์Šคํƒ์Šคํฌ๋ฆฝํŠธ. ๊ฐ€์žฅ ํ˜„์‹ค์ ์ธ ๋ถ€ํ•˜ ์ƒ์„ฑ์„ ์œ„ํ•ด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์Šคํƒ์Šคํฌ๋ฆฝํŠธ ์ €๋Š” ์‹ค์ œ ๋กœ๋“œ(Sysbench TPC-C ํ…Œ์ŠคํŠธ)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ์˜ MySQL ๋…ธ๋“œ๋ฅผ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋…ธ๋“œ๋Š” 10๊ฐœ์˜ Linux/MySQL ๋…ธ๋“œ๋ฅผ ์—๋ฎฌ๋ ˆ์ดํŠธํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‹ค์Œ ํ…Œ์ŠคํŠธ๋Š” ๋ชจ๋‘ 32๊ฐœ์˜ ๊ฐ€์ƒ ์ฝ”์–ด์™€ 20GB ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ–์ถ˜ Linode ์„œ๋ฒ„์—์„œ ์ˆ˜ํ–‰๋˜์—ˆ์œผ๋ฉฐ, 800๊ฐœ์˜ MySQL ์ธ์Šคํ„ด์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” 440๊ฐœ์˜ ๋กœ๋“œ ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‹คํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” Prometheus ์šฉ์–ด๋กœ ๋งํ•˜๋ฉด 380๊ฐœ์˜ ๋Œ€์ƒ, ์ดˆ๋‹น 1,7๊ฐœ์˜ ์Šคํฌ๋ ˆ์ดํ•‘, ์ดˆ๋‹น XNUMX๋งŒ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ, XNUMX๋งŒ ๊ฐœ์˜ ํ™œ์„ฑ ์‹œ๊ณ„์—ด์ž…๋‹ˆ๋‹ค.

๋””์ž์ธ

Prometheus 1.x์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํฌํ•จํ•˜์—ฌ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๋ฐ˜์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ. ๋กœ๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉด ๋Œ€๊ธฐ ์‹œ๊ฐ„์ด ๊ธธ์–ด์ง€๊ณ  ์ผ๋ถ€ ์š”์ฒญ์ด ์‹คํŒจํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. Prometheus 2์˜ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์€ ํ‚ค๋ฅผ ํ†ตํ•ด ๊ตฌ์„ฑ ๊ฐ€๋Šฅ storage.tsdb.min-block-duration, ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œํ•˜๊ธฐ ์ „์— ๋…น์Œ ๋‚ด์šฉ์„ ๋ฉ”๋ชจ๋ฆฌ์— ๋ณด๊ด€ํ•  ๊ธฐ๊ฐ„์„ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค(๊ธฐ๋ณธ๊ฐ’์€ 2์‹œ๊ฐ„). ํ•„์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘์€ ์ˆœ ์ˆ˜์‹  ์ŠคํŠธ๋ฆผ์— ์ถ”๊ฐ€๋œ ์‹œ๊ณ„์—ด, ๋ ˆ์ด๋ธ” ๋ฐ ์Šคํฌ๋žฉ ์ˆ˜์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ๋””์Šคํฌ ๊ณต๊ฐ„ ์ธก๋ฉด์—์„œ Prometheus๋Š” ๋ ˆ์ฝ”๋“œ(์ƒ˜ํ”Œ)๋‹น 3๋ฐ”์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋ฉ”๋ชจ๋ฆฌ ์š”๊ตฌ ์‚ฌํ•ญ์€ ํ›จ์”ฌ ๋†’์Šต๋‹ˆ๋‹ค.

๋ธ”๋ก ํฌ๊ธฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ์ˆ˜๋™์œผ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ž‘์—… ๋ถ€ํ•˜์— ํ•„์š”ํ•œ ๋งŒํผ์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ Prometheus์— ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๋“ค์–ด์˜ค๋Š” ๋ฉ”ํŠธ๋ฆญ ์ŠคํŠธ๋ฆผ์„ ์ง€์›ํ•  ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์œผ๋ฉด Prometheus์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•ด์ง€๊ฑฐ๋‚˜ OOM ํ‚ฌ๋Ÿฌ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
Prometheus์˜ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•  ๋•Œ ์ถฉ๋Œ์„ ์ง€์—ฐ์‹œํ‚ค๊ธฐ ์œ„ํ•ด ์Šค์™‘์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ์‹ค์ œ๋กœ ๋„์›€์ด ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ํญ๋ฐœ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋‚ด ์ƒ๊ฐ์—๋Š” Go์˜ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ ๋ฐ Go๊ฐ€ ์Šค์™‘์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด ์ ‘๊ทผ ๋ฐฉ์‹์€ ํ”„๋กœ์„ธ์Šค ์‹œ์ž‘๋ถ€ํ„ฐ ๊ณ„์‚ฐํ•˜๋Š” ๋Œ€์‹  ํ—ค๋“œ ๋ธ”๋ก์ด ํŠน์ • ์‹œ๊ฐ„์— ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œ๋˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

๊ทธ๋ž˜ํ”„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ๋””์Šคํฌ ํ”Œ๋Ÿฌ์‹œ๋Š” XNUMX์‹œ๊ฐ„๋งˆ๋‹ค ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. min-block-duration ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ XNUMX์‹œ๊ฐ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด ์ด๋Ÿฌํ•œ ์žฌ์„ค์ •์€ XNUMX๋ถ„ ์ดํ›„๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋งค์‹œ๊ฐ„ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
Prometheus ์„ค์น˜์—์„œ ์ด ๊ทธ๋ž˜ํ”„์™€ ๋‹ค๋ฅธ ๊ทธ๋ž˜ํ”„๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ณ„๊ธฐ๋ฐ˜. PMM์šฉ์œผ๋กœ ์„ค๊ณ„๋˜์—ˆ์ง€๋งŒ ์•ฝ๊ฐ„๋งŒ ์ˆ˜์ •ํ•˜๋ฉด ๋ชจ๋“  Prometheus ์„ค์น˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ํ—ค๋“œ ๋ธ”๋ก์ด๋ผ๋Š” ํ™œ์„ฑ ๋ธ”๋ก์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ๋ฐ์ดํ„ฐ๊ฐ€ ํฌํ•จ๋œ ๋ธ”๋ก์€ ๋‹ค์Œ์„ ํ†ตํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. mmap(). ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์บ์‹œ๋ฅผ ๋ณ„๋„๋กœ ๊ตฌ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์ง€๋งŒ ํ—ค๋“œ ๋ธ”๋ก์ด ์ˆ˜์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋ณด๋‹ค ์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฟผ๋ฆฌํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์šด์˜ ์ฒด์ œ ์บ์‹œ๋ฅผ ์œ„ํ•œ ์ถฉ๋ถ„ํ•œ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ๋˜ํ•œ Prometheus ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๊ฐ€ ์ƒ๋‹นํžˆ ๋†’์•„ ๋ณด์ผ ๊ฒƒ์ด๋ผ๋Š” ์˜๋ฏธ์ด๋ฏ€๋กœ ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

๋˜ ๋‹ค๋ฅธ ํฅ๋ฏธ๋กœ์šด ๋””์ž์ธ ํฌ์ธํŠธ๋Š” WAL(๋ฏธ๋ฆฌ ์“ฐ๊ธฐ ๋กœ๊ทธ)์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์Šคํ† ๋ฆฌ์ง€ ๋ฌธ์„œ์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด Prometheus๋Š” WAL์„ ์‚ฌ์šฉํ•˜์—ฌ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์•ˆํƒ€๊น๊ฒŒ๋„ ๋ฐ์ดํ„ฐ ์ƒ์กด์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ตฌ์ฒด์ ์ธ ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Prometheus ๋ฒ„์ „ 2.3.2๋Š” 10์ดˆ๋งˆ๋‹ค WAL์„ ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œํ•˜๋ฉฐ ์ด ์˜ต์…˜์€ ์‚ฌ์šฉ์ž๊ฐ€ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์ง

Prometheus TSDB๋Š” LSM(Log Structured Merge) ์ €์žฅ์†Œ์ฒ˜๋Ÿผ ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ—ค๋“œ ๋ธ”๋ก์€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œ๋˜๋Š” ๋ฐ˜๋ฉด, ์••์ถ• ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ฟผ๋ฆฌ ์ค‘์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ธ”๋ก์„ ์Šค์บ”ํ•˜์ง€ ์•Š๋„๋ก ์—ฌ๋Ÿฌ ๋ธ”๋ก์„ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ•˜๋ฃจ ๋™์•ˆ ๋กœ๋“œํ•œ ํ›„ ํ…Œ์ŠคํŠธ ์‹œ์Šคํ…œ์—์„œ ๊ด€์ฐฐํ•œ ๋ธ”๋ก ์ˆ˜๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

์Šคํ† ์–ด์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๋ ค๋ฉด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ธ”๋ก๊ณผ ํ•ด๋‹น ๋ธ”๋ก์ด ์–ด๋–ป๊ฒŒ ์ƒ์„ฑ๋˜์—ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋œ 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์˜ ์••์ถ•์€ ํ—ค๋“œ ๋ธ”๋ก์ด ๋””์Šคํฌ์— ํ”Œ๋Ÿฌ์‹œ๋˜๋Š” ์‹œ๊ฐ„๊ณผ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด ์‹œ์ ์—์„œ ์ด๋Ÿฌํ•œ ์—ฌ๋Ÿฌ ์ž‘์—…์ด ์ˆ˜ํ–‰๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

์••์ถ•์€ ์–ด๋–ค ์‹์œผ๋กœ๋“  ์ œํ•œ๋˜์ง€ ์•Š์œผ๋ฉฐ ์‹คํ–‰ ์ค‘์— ํฐ ๋””์Šคํฌ I/O ์ŠคํŒŒ์ดํฌ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

CPU ๋กœ๋“œ ์ŠคํŒŒ์ดํฌ

Prometheus 2์˜ TSDB ๋ถ„์„

๋ฌผ๋ก  ์ด๋Š” ์‹œ์Šคํ…œ ์†๋„์— ๋‹ค์†Œ ๋ถ€์ •์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋ฉฐ LSM ์ €์žฅ์†Œ์— ์‹ฌ๊ฐํ•œ ๊ณผ์ œ๋ฅผ ์•ˆ๊ฒจ์ค๋‹ˆ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ณ  ๋†’์€ ์š”์ฒญ ์†๋„๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ์••์ถ•์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
์••์ถ• ๊ณผ์ •์—์„œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋„ ๊ฝค ํฅ๋ฏธ๋กœ์›Œ ๋ณด์ž…๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

์••์ถ• ํ›„ ๋Œ€๋ถ€๋ถ„์˜ ๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ๊ฐ€ Cached์—์„œ Free๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ๋ฐฉ์‹์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ž ์žฌ์ ์œผ๋กœ ๊ฐ€์น˜ ์žˆ๋Š” ์ •๋ณด๊ฐ€ ๊ฑฐ๊ธฐ์—์„œ ์ œ๊ฑฐ๋˜์—ˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ์‚ฌ์šฉ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค fadvice() ์•„๋‹ˆ๋ฉด ๋‹ค๋ฅธ ์ตœ์†Œํ™” ๊ธฐ์ˆ ์ธ๊ฐ€์š”? ์•„๋‹ˆ๋ฉด ์••์ถ• ์ค‘์— ํŒŒ๊ดด๋œ ๋ธ”๋ก์—์„œ ์บ์‹œ๊ฐ€ ํ•ด์ œ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ธ๊ฐ€์š”?

์žฅ์•  ํ›„ ๋ณต๊ตฌ

์žฅ์•  ๋ณต๊ตฌ์—๋Š” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋ฉฐ ๊ทธ๋Ÿด ๋งŒํ•œ ์ด์œ ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ดˆ๋‹น ๋ฐฑ๋งŒ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋“ค์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ์˜ ๊ฒฝ์šฐ SSD ๋“œ๋ผ์ด๋ธŒ๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ณต๊ตฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๋Š” ๋™์•ˆ ์•ฝ 25๋ถ„์„ ๊ธฐ๋‹ค๋ ค์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

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 2์˜ TSDB ๋ถ„์„

Prometheus 2์˜ TSDB ๋ถ„์„

๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์˜ ์ฐจ์ด๋Š” Prometheus๊ฐ€ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ์ปฌ๋ ‰์…˜์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์—†์œผ๋ฉฐ ์ผ๋ถ€ ์ •๋ณด๊ฐ€ ์†์‹ค๋˜์—ˆ์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
CPU์™€ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€ํ•˜๊ฐ€ ๋†’์€ ์ •ํ™•ํ•œ ์ด์œ ๋ฅผ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๋†’์€ ๋นˆ๋„๋กœ ํ—ค๋“œ ๋ธ”๋ก์— ์ƒˆ๋กœ์šด ์‹œ๊ณ„์—ด์ด ์ƒ์„ฑ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

CPU ๋ถ€ํ•˜ ๊ธ‰์ฆ

์ƒ๋‹นํžˆ ๋†’์€ I/O ๋กœ๋“œ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ์••์ถ• ์™ธ์—๋„ XNUMX๋ถ„๋งˆ๋‹ค CPU ๋กœ๋“œ๊ฐ€ ์‹ฌ๊ฐํ•˜๊ฒŒ ๊ธ‰์ฆํ•˜๋Š” ๊ฒƒ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ž…๋ ฅ ํ๋ฆ„์ด ๋†’์„ ๋•Œ ๋ฒ„์ŠคํŠธ๋Š” ๋” ๊ธธ์–ด์ง€๊ณ  Go์˜ ๊ฐ€๋น„์ง€ ์ˆ˜์ง‘๊ธฐ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ์ ์–ด๋„ ์ผ๋ถ€ ์ฝ”์–ด๊ฐ€ ์™„์ „ํžˆ ๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

Prometheus 2์˜ TSDB ๋ถ„์„

์ด๋Ÿฌํ•œ ์ ํ”„๋Š” ๊ทธ๋‹ค์ง€ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ผ์ด ๋ฐœ์ƒํ•˜๋ฉด Prometheus์˜ ๋‚ด๋ถ€ ์ง„์ž…์ ๊ณผ ์ธก์ •ํ•ญ๋ชฉ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์–ด ๋™์ผํ•œ ๊ธฐ๊ฐ„ ๋™์•ˆ ๋ฐ์ดํ„ฐ ๊ฒฉ์ฐจ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

๋˜ํ•œ Prometheus ๋‚ด๋ณด๋‚ด๊ธฐ๊ฐ€ XNUMX์ดˆ ๋™์•ˆ ์ข…๋ฃŒ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(GC)๊ณผ์˜ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Prometheus 2์˜ TSDB ๋ถ„์„

๊ฒฐ๋ก 

Prometheus 2์˜ TSDB๋Š” ์†๋„๊ฐ€ ๋น ๋ฅด๊ณ  ์ƒ๋‹นํžˆ ์ ๋‹นํ•œ ํ•˜๋“œ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ์‹œ๊ณ„์—ด๊ณผ ๋™์‹œ์— ์ดˆ๋‹น ์ˆ˜์ฒœ ๊ฐœ์˜ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CPU ๋ฐ ๋””์Šคํฌ I/O ํ™œ์šฉ๋„๋„ ์ธ์ƒ์ ์ž…๋‹ˆ๋‹ค. ๋‚ด ์˜ˆ์—์„œ๋Š” ์‚ฌ์šฉ๋œ ์ฝ”์–ด๋‹น ์ดˆ๋‹น ์ตœ๋Œ€ 200๊ฐœ์˜ ๋ฉ”ํŠธ๋ฆญ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ™•์žฅ์„ ๊ณ„ํšํ•˜๋ ค๋ฉด ์ถฉ๋ถ„ํ•œ ์–‘์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•˜๋ฉฐ ์ด๋Š” ์‹ค์ œ ๋ฉ”๋ชจ๋ฆฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๊ด€์ฐฐํ•œ ์‚ฌ์šฉ๋œ ๋ฉ”๋ชจ๋ฆฌ ์–‘์€ ๋“ค์–ด์˜ค๋Š” ์ŠคํŠธ๋ฆผ์˜ ์ดˆ๋‹น 5๊ฐœ ๋ ˆ์ฝ”๋“œ๋‹น ์•ฝ 100GB์˜€์œผ๋ฉฐ ์šด์˜ ์ฒด์ œ ์บ์‹œ์™€ ํ•จ๊ป˜ ์•ฝ 000GB์˜ ์ ์œ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ œ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌผ๋ก  CPU ๋ฐ ๋””์Šคํฌ I/O ๊ธ‰์ฆ์„ ์–ต์ œํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ž‘์—…์ด ์—ฌ์ „ํžˆ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ Š์€ TSDB Prometheus 2๊ฐ€ InnoDB, TokuDB, RocksDB, WiredTiger์™€ ๋น„๊ต๋˜๋Š” ๋ฐฉ์‹์„ ๊ณ ๋ คํ•˜๋ฉด ๋†€๋ผ์šด ์ผ์ด ์•„๋‹ˆ์ง€๋งŒ ๋ชจ๋‘ ์œ ์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜๋ช…์ฃผ๊ธฐ ์ดˆ๊ธฐ์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€