๐ฌ 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 ๋ก ๋ฌถ์ด์ ์ ๋ก๋ก ์ ๊ณตํ๊ณ ์์ด ์ดํด๋ ๊ฐ์ง๋ง ์์ฌ์ ๋ค.