Community

๐Ÿ’ฌ TSDB ๋ž€? - Time Series DataBase ์˜ ์ค„์ž„๋ง๋กœ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ตœ์ ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋œปํ•œ๋‹ค. ๐Ÿ’ฌ VictoriaMetrics ๋ž€? - Go ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•˜

๐Ÿ’ฌ TSDB ๋ž€? - Time Series DataBase ์˜ ์ค„์ž„๋ง๋กœ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ตœ์ ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋œปํ•œ๋‹ค. ๐Ÿ’ฌ VictoriaMetrics ๋ž€? - Go ์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” fasthttp ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“  Prometheus ํ˜ธํ™˜ TSDB ๐Ÿ’ฌ ํŠน์ง• - PromQL ์„ ํ•˜์œ„ํ˜ธํ™˜ํ•˜๋Š” MetricsQL ์ง€์› - InfluxDB, Graphite, Prometheus ๋“ฑ ๋‹ค์–‘ํ•œ Metric Input ์ง€์› - Gorilla Compression ์„ ํ†ตํ•œ ํšจ์œจ์ ์ธ storage ํ™œ์šฉ - ๊ฐ„๋‹จํ•œ ์•„ํ‚คํ…์ณ๋ฅผ ์ถ”๊ตฌ ๐Ÿ’ฌ ์„ค๊ณ„ ์ฒ ํ•™ - KISS(Keep It Simple, Stupid) - ๋‹จ์ˆœํ•œ ์•„ํ‚คํ…์ณ ์ง€ํ–ฅ - shared nothing - ์™ธ๋ถ€ ์˜์กด์„ฑ ์ตœ์†Œํ™” - ์ตœ์†Œํ•œ์˜ ์ž๋™ํ™” ๐Ÿ’ฌ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ - ํด๋Ÿฌ์Šคํ„ฐ ์ž๋™ resizing - ์ž๋™ ๋…ธ๋“œ discovering - data rebalancing ๐Ÿ’ฌ ์ข‹์•˜๋˜ ์  - ์ œ๋ชฉ์ฒ˜๋Ÿผ ํ˜„์žฌ ์ธ๊ธฐ์žˆ๋Š” TSDB ์†”๋ฃจ์…˜๋“ค๊ณผ ๋Œ€์ฒด๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ฑฐ์˜ ๋ชจ๋“  write API ๋ฅผ ์ง€์›ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์›ํ•œ๋‹ค๋ฉด ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋˜ TSDB ๋ฅผ Client ๋‚˜ Agent ๋ณ€๊ฒฝ ์—†์ด ์‰ฝ๊ฒŒ ๋Œ€์ฒด ๊ฐ€๋Šฅํ•˜๋‹ค. - Prometheus ์™€ Graphite ์—์„œ ์ •์˜ํ•œ Query API Interface ๋ฅผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— Query ์š”์ฒญ์‹œ ์นœ์ˆ™ํ•œ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.(๊ฐ€์ด๋“œ์—์„œ Graphite Query ์— ๋Œ€ํ•œ Interface ๋ฅผ ์„ค๋ช…ํ• ๋•Œ๋Š” ๋งํฌ๋กœ ์•„์˜ˆ Graphite API Document ๋ฅผ ๊ฑธ์–ด๋‘”๊ฒŒ ์ถฉ๊ฒฉ์ ์ด์—ˆ๋‹ค. ๊ทธ๋งŒํผ Graphite ์˜ ๋ณ€๊ฒฝ์‚ฌํ•ญ์— ์˜ˆ๋ฏผํ•˜๊ฒŒ ๋Œ€์‘ํ•  ๋ฐฉ์นจ์ธ๊ฑฐ๋กœ ๋ณด์ธ๋‹ค.) - Prometheus ๋ฅผ ์ฐธ๊ณ ํ•œ๊ฒŒ ๋งŽ์•„์„œ Prometheus ์—์„œ ์ œ๊ณตํ•˜๋Š” AlertManager ๋‚˜ node exporter ์™€๋„ ์—ฐ๋™์ด ๊ฐ€๋Šฅํ•˜๊ณ  AlertManager ์™€ ์—ฐ๋™์‹œ ์‚ฌ์šฉํ•˜๋Š” Vmalert ๋ชจ๋“ˆ์€ Prometheus ์—์„œ ์ •์˜ํ•œ Alert rule ๋กœ ์„ค์ •ํ•˜๋„๋ก ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด์— ์‚ฌ์šฉํ–ˆ๋˜ Alert rule ์ด ์žˆ๋‹ค๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. - ์„ค์น˜์™€ ๊ตฌ์ถ•์ด ๋งค์šฐ ๊ฐ„ํŽธํ•˜๋‹ค. ์ดˆ๋‹น 100๋งŒ๊ฑด ์ด์ƒ์˜ ํŠธ๋ž˜ํ”ฝ์ด ์œ ๋ฐœ๋˜๋Š” ํ™˜๊ฒฝ์ด ์•„๋‹ˆ๋ผ๋ฉด Cluster ๋ณด๋‹ค Single Instance ๋กœ ์šด์˜ํ•˜๋Š”๊ฑธ ๊ถŒ์žฅํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๊ถŒ์žฅ๋˜๋Š” HA ๊ตฌ์„ฑ์œผ๋กœ Vmagent ๋ผ๋Š” ๋ชจ๋“ˆ์„ ํ†ตํ•ด ๊ฐ Single Instance ๋…ธ๋“œ์— Dual Write ๋ฅผ ํ•˜๋Š” Active-Active ๊ตฌ์„ฑ์„ ๊ถŒ์žฅํ•œ๋‹ค. - Gorilla Compression ์ด TSDB ์—์„œ ์ด๋ ‡๊ฒŒ๋‚˜ ๊ฐ•๋ ฅํ•  ์ค„ ๋ชฐ๋ž๋Š”๋ฐ Storage Resource ๋ฅผ ๊ฝค๋‚˜ ์ ๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค. ๐Ÿ’ฌ ์•„์‰ฌ์šด์  - Single Instance ๊ตฌ์ถ•์— ๋น„ํ•ด Cluster ๊ตฌ์ถ•์ด ์–ด๋ ต๊ณ  ์„ค์น˜ ๋ฒ„์ „๋„ ๋”ฐ๋กœ ๋ถ„๋ฅ˜๊ฐ€ ๋˜์–ด์žˆ๋‹ค.(ํ•ด๋ณด์ง„ ์•Š์•˜์ง€๋งŒ Single Instance ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ Cluster ๋กœ ๋ณ€๊ฒฝํ•˜๋Š”๊ฑด ์‰ฝ์ง€ ์•Š์•„๋ณด์ธ๋‹ค. ๋”์šฑ์ด ํด๋Ÿฌ์Šคํ„ฐ ์ž๋™ resizing ์ด๋‚˜ data rebalancing ์„ ์ œ๊ณตํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋˜๋ฉด ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ๋“ค๋„ ํ•ด์•ผํ•œ๋‹ค.) - ์œ„์—์„œ ์–ธ๊ธ‰ํ–ˆ๋“ฏ์ด Cluster ๊ตฌ์ถ•๋ณด๋‹ค๋Š” Single Instance ๋ฅผ ๊ถŒ์žฅํ•˜๋Š” ํ˜•ํƒœ๋ผ scale out ๋ณด๋‹ค๋Š” scale up ์„ ํ• ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ์—์„œ ์“ฐ๊ธฐ ๋” ์ข‹์•„๋ณด์ธ๋‹ค. - '์ด๋Ÿฐ๊ฒŒ ์žˆ์œผ๋ฉด ํŽธํ• ๊ฒƒ ๊ฐ™์€๋ฐ?' ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋˜ ๊ธฐ๋Šฅ๋“ค์„ enterprise package ๋กœ ๋ฌถ์–ด์„œ ์œ ๋กœ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ์–ด ์ดํ•ด๋Š” ๊ฐ€์ง€๋งŒ ์•„์‰ฌ์› ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค