์ธก์ •ํ•ญ๋ชฉ ์ €์žฅ: Graphite+Whisper์—์„œ Graphite+ClickHouse๋กœ ์ „ํ™˜ํ•œ ๋ฐฉ๋ฒ•

์•ˆ๋…•ํ•˜์„ธ์š” ์—ฌ๋Ÿฌ๋ถ„! ๊ทธ์˜ ๋งˆ์ง€๋ง‰ ๊ธฐ์‚ฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜๋ฅผ ์œ„ํ•œ ๋ชจ๋“ˆํ˜• ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์— ๋Œ€ํ•ด ๊ธ€์„ ์ผ์Šต๋‹ˆ๋‹ค. ์•„๋ฌด๊ฒƒ๋„ ์ •์ง€๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ ํ”„๋กœ์ ํŠธ๋Š” ์ง€์†์ ์œผ๋กœ ์„ฑ์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ์ €์žฅ๋œ ์ธก์ • ํ•ญ๋ชฉ์˜ ์ˆ˜๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ๊ณ ๋ถ€ํ•˜ ์กฐ๊ฑด์—์„œ Graphite+Whisper์—์„œ Graphite+ClickHouse๋กœ์˜ ์ „ํ™˜์„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ–ˆ๋Š”์ง€, ์ด์— ๋Œ€ํ•œ ๊ธฐ๋Œ€ ์‚ฌํ•ญ๊ณผ ์ปท ์•„๋ž˜์˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๊ฒฐ๊ณผ๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”.

์ธก์ •ํ•ญ๋ชฉ ์ €์žฅ: Graphite+Whisper์—์„œ Graphite+ClickHouse๋กœ ์ „ํ™˜ํ•œ ๋ฐฉ๋ฒ•

Graphite+Whisper์˜ ๋ฉ”ํŠธ๋ฆญ ์ €์žฅ์—์„œ Graphite+ClickHouse๋กœ์˜ ์ „ํ™˜์„ ์–ด๋–ป๊ฒŒ ๊ตฌ์„ฑํ–ˆ๋Š”์ง€ ์„ค๋ช…ํ•˜๊ธฐ ์ „์—, ๊ทธ๋Ÿฌํ•œ ๊ฒฐ์ •์„ ๋‚ด๋ฆฐ ์ด์œ ์™€ ์˜ค๋žซ๋™์•ˆ ์šฐ๋ฆฌ๊ฐ€ ํ•จ๊ป˜ ์‚ด์•„์˜จ Whisper์˜ ๋‹จ์ ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ‘์—ฐ+์†์‚ญ์ž„ ๋ฌธ์ œ

1. ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์˜ ๋ถ€ํ•˜๊ฐ€ ๋†’์Šต๋‹ˆ๋‹ค.

์ „ํ™˜ ๋‹น์‹œ์—๋Š” ๋ถ„๋‹น ์•ฝ 1.5๋งŒ ๊ฐœ์˜ ์ง€ํ‘œ๊ฐ€ ์šฐ๋ฆฌ์—๊ฒŒ ๋„์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ํ๋ฆ„์œผ๋กœ ์ธํ•ด ์„œ๋ฒ„์˜ ๋””์Šคํฌ ํ™œ์šฉ๋„๋Š” ~30%์˜€์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๊ฒƒ์€ ์ƒ๋‹นํžˆ ์ˆ˜์šฉ ๊ฐ€๋Šฅํ•œ ์ˆ˜์ค€์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์•ˆ์ •์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ณ , ๋น ๋ฅด๊ฒŒ ์ž‘์„ฑ๋˜๊ณ , ๋น ๋ฅด๊ฒŒ ์ฝํ˜”์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํŒ€ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถœ์‹œํ•˜๊ณ  ๋ถ„๋‹น ์ฒœ๋งŒ ๊ฐœ์˜ ์ธก์ • ํ•ญ๋ชฉ์„ ๋ณด๋‚ด๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๊นŒ์ง€๋Š” ๋ง์ด์ฃ . ์ด๋•Œ ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ์ด ๊ฐ•ํ™”๋˜์–ด 10% ํ™œ์šฉ๋„๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์ œ๋Š” ๋นจ๋ฆฌ ํ•ด๊ฒฐ๋์ง€๋งŒ, ์ž”์—ฌ๋ฌผ์ด ๋‚จ์•˜์Šต๋‹ˆ๋‹ค.

2. ๋ณต์ œ ๋ฐ ์ผ๊ด€์„ฑ ๋ถ€์กฑ

์•„๋งˆ๋„ Graphite+Whisper๋ฅผ ์‚ฌ์šฉ/์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“  ์‚ฌ๋žŒ๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์šฐ๋ฆฌ๋Š” ๋‚ด๊ฒฐํ•จ์„ฑ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋™์ผํ•œ ๋ฉ”ํŠธ๋ฆญ ์ŠคํŠธ๋ฆผ์„ ์—ฌ๋Ÿฌ Graphite ์„œ๋ฒ„์— ๋™์‹œ์— ์Ÿ์•„ ๋ถ€์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ์ด์œ ๋กœ ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ถฉ๋Œํ•˜๋Š” ์ˆœ๊ฐ„๊นŒ์ง€ ํŠน๋ณ„ํ•œ ๋ฌธ์ œ๋Š” ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋•Œ๋•Œ๋กœ ์šฐ๋ฆฌ๋Š” ์†์ƒ๋œ ์„œ๋ฒ„๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ  carbon-c-relay๋Š” ์บ์‹œ์—์„œ ๋ฉ”ํŠธ๋ฆญ์„ ํ•ด๋‹น ์„œ๋ฒ„๋กœ ๋กœ๋“œํ–ˆ์ง€๋งŒ ๋•Œ๋กœ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๋„ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ธก์ •ํ•ญ๋ชฉ์— ๊ตฌ๋ฉ์ด ์žˆ์—ˆ๋Š”๋ฐ ์šฐ๋ฆฌ๋Š” ์ด๋ฅผ rsync๋กœ ์ฑ„์› ์Šต๋‹ˆ๋‹ค. ์ ˆ์ฐจ๊ฐ€ ๊ฝค ๊ธธ์—ˆ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๊ตฌ์›์˜ ์€ํ˜œ๋Š” ์ด๋Ÿฐ ์ผ์ด ์•„์ฃผ ๋“œ๋ฌผ๊ฒŒ ์ผ์–ด๋‚ฌ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ž„์˜์˜ ๋ฉ”ํŠธ๋ฆญ ์„ธํŠธ๋ฅผ ๊ฐ€์ ธ์™€ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ด์›ƒ ๋…ธ๋“œ์— ์žˆ๋Š” ๋™์ผํ•œ ์œ ํ˜•์˜ ๋‹ค๋ฅธ ๋ฉ”ํŠธ๋ฆญ๊ณผ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. ์•ฝ 5%์˜ ๊ฒฝ์šฐ์—๋Š” ์—ฌ๋Ÿฌ ๊ฐ’์ด ๋‹ฌ๋ผ์„œ ๊ทธ๋‹ค์ง€ ๋งŒ์กฑ์Šค๋Ÿฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

3. ํฐ ์„ค์น˜ ๊ณต๊ฐ„

์šฐ๋ฆฌ๋Š” ์ธํ”„๋ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋น„์ฆˆ๋‹ˆ์Šค ๋ฉ”ํŠธ๋ฆญ(๊ทธ๋ฆฌ๊ณ  ์ด์ œ Kubernetes์˜ ๋ฉ”ํŠธ๋ฆญ)๋„ Graphite๋กœ ์ž‘์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”ํŠธ๋ฆญ์— ๋ช‡ ๊ฐ€์ง€ ๊ฐ’๋งŒ ํฌํ•จ๋˜๊ณ  ๋ชจ๋“  ๋ณด์กด์„ ๊ณ ๋ คํ•˜์—ฌ .wsp ํŒŒ์ผ์ด ์ƒ์„ฑ๋˜๋Š” ์ƒํ™ฉ์ด ์ž์ฃผ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๊ฐ„์ด๋ฉฐ ์‚ฌ์ „ ํ• ๋‹น๋œ ๊ณต๊ฐ„์„ ์ฐจ์ง€ํ•˜๋ฉฐ ์ด๋Š” ~2MB์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์‹œ๊ฐ„์ด ์ง€๋‚จ์— ๋”ฐ๋ผ ์œ ์‚ฌํ•œ ํŒŒ์ผ์ด ๋งŽ์ด ๋‚˜ํƒ€๋‚˜๊ณ  ์ด์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ๋นˆ ์ง€์ ์„ ์ฝ๋Š” ๋ฐ ๋งŽ์€ ์‹œ๊ฐ„๊ณผ ๋ฆฌ์†Œ์Šค๊ฐ€ ์†Œ์š”๋œ๋‹ค๋Š” ์‚ฌ์‹ค๋กœ ์ธํ•ด ๋ฌธ์ œ๋Š” ๋”์šฑ ์•…ํ™”๋ฉ๋‹ˆ๋‹ค.

์œ„์—์„œ ์„ค๋ช…ํ•œ ๋ฌธ์ œ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•๊ณผ ๋‹ค์–‘ํ•œ ํšจ์œจ์„ฑ์œผ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์ง€๋งŒ ๋” ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ธฐ ์‹œ์ž‘ํ• ์ˆ˜๋ก ๋ฌธ์ œ๊ฐ€ ๋” ์•…ํ™”๋œ๋‹ค๋Š” ์ ์„ ์ฆ‰์‹œ ์ง€์ ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์œ„์˜ ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ฐ–์ถ˜ ๊ฒฝ์šฐ(์ด์ „ ํ•ญ๋ชฉ์„ ๊ณ ๋ คํ•˜์—ฌ) ์กฐํ•ญ) ์ˆ˜์‹ ๋œ ์ง€ํ‘œ ์ˆ˜๊ฐ€ ์ง€์†์ ์œผ๋กœ ์ฆ๊ฐ€ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ง€ํ‘œ๋ฅผ 30์ดˆ์˜ ์ €์žฅ ๊ฐ„๊ฒฉ์œผ๋กœ ์ „์†กํ•˜๋ ค๋Š” ์š”๊ตฌ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ตœ๋Œ€ 10์ดˆ) Whisper์˜ ์œ ๋งํ•œ ๋Œ€์•ˆ์œผ๋กœ Graphite+ClickHouse๋ฅผ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ๊ธฐ๋Œ€

Yandex์—์„œ ์˜จ ์‚ฌ๋žŒ๋“ค์˜ ์—ฌ๋Ÿฌ ๋ชจ์ž„์„ ๋ฐฉ๋ฌธํ•˜๊ณ , Habrรฉ์— ๊ด€ํ•œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ์‚ฌ, ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  Graphite์—์„œ ClickHouse๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๊ธฐ ์œ„ํ•œ ์ •์ƒ์ ์ธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ์ฐพ์€ ํ›„ ์กฐ์น˜๋ฅผ ์ทจํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค!

๋‚˜๋Š” ๋‹ค์Œ์„ ๋ฐ›๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค:

  • ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ ํ™œ์šฉ๋„๋ฅผ 30%์—์„œ 5%๋กœ ์ค„์ž…๋‹ˆ๋‹ค.
  • ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์„ 1TB์—์„œ 100GB๋กœ ์ค„์ž…๋‹ˆ๋‹ค.
  • ๋ถ„๋‹น 100์–ต ๊ฐœ์˜ ์ง€ํ‘œ๋ฅผ ์„œ๋ฒ„๋กœ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ ๋ณต์ œ ๋ฐ ๋‚ด๊ฒฐํ•จ์„ฑ;
  • ์ด ํ”„๋กœ์ ํŠธ๋ฅผ XNUMX๋…„ ๋™์•ˆ ์ง„ํ–‰ํ•˜์ง€ ๋ง๊ณ  ํ•ฉ๋ฆฌ์ ์ธ ๊ธฐ๊ฐ„ ๋‚ด์— ์ „ํ™˜ํ•˜์‹ญ์‹œ์˜ค.
  • ๋‹ค์šดํƒ€์ž„ ์—†์ด ์ „ํ™˜ํ•˜์„ธ์š”.

๊ฝค ์•ผ์‹ฌ์ฐฌ ์ผ์ด์ฃ ?

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ๊ตฌ์„ฑ์š”์†Œ

Graphite ํ”„๋กœํ† ์ฝœ์„ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์‹ ํ•˜๊ณ  ์ดํ›„ ClickHouse์— ๊ธฐ๋กํ•˜๊ธฐ ์œ„ํ•ด ์ €๋Š” ๋‹ค์Œ์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํƒ„์†Œํด๋ฆญํ•˜์šฐ์Šค (๊ณจ๋ž‘).

ClickHouse์˜ ์ตœ์‹  ๋ฆด๋ฆฌ์Šค์ธ ์•ˆ์ • ๋ฒ„์ „ 1.1.54253์ด ์‹œ๊ณ„์—ด ์ €์žฅ์„ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋กœ ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘์—…ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ์— ์‚ฐ๋”๋ฏธ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์Ÿ์•„์กŒ๊ณ  ์ด๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ์™„์ „ํžˆ ๋ช…ํ™•ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์™€ ๋…ผ์˜ ์ค‘ ๋กœ๋งŒ ๋กœ๋ชจ๋…ธ์†Œํ”„ (carbon-clickhouse, graphite-clickhouse ๋“ฑ์˜ ์ €์ž) ์˜ค๋ž˜๋œ ๊ฒƒ์ด ์„ ํƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฆด๋ฆฌ์Šค 1.1.54236. ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ์พ…ํ•˜๊ณ  ์ž‘๋™ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

ClickHouse์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋„๋ก ์„ ํƒ๋จ ํ‘์—ฐ-lickhouse (๊ณจ๋ž‘). Graphite์šฉ API - ์นด๋ฅด๋ณด๋‚˜ํ”ผ (๊ณจ๋ž‘). ClickHouse๋Š” ํ…Œ์ด๋ธ” ๊ฐ„ ๋ณต์ œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์œก์‚ฌ. ๋ผ์šฐํŒ… ๋ฉ”ํŠธ๋ฆญ์„ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ์‚ฌ๋ž‘ํ•˜๋Š” ์‚ฌ๋žŒ์„ ๋– ๋‚ฌ์Šต๋‹ˆ๋‹ค. ์นด๋ณธ-C-๋ฆด๋ ˆ์ด (C) (์ด์ „ ๊ธฐ์‚ฌ ์ฐธ์กฐ).

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ํ…Œ์ด๋ธ” ๊ตฌ์กฐ

"graphite"๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ํ…Œ์ด๋ธ”์„ ์œ„ํ•ด ๋งŒ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ž…๋‹ˆ๋‹ค.

"graphite.metrics" - ReplicatedReplacingMergeTree ์—”์ง„์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”(๋ณต์ œ๋จ ๋ณ‘ํ•ฉํŠธ๋ฆฌ ๊ต์ฒดํ•˜๊ธฐ). ์ด ํ…Œ์ด๋ธ”์—๋Š” ์ธก์ •ํ•ญ๋ชฉ ์ด๋ฆ„๊ณผ ์ธก์ •ํ•ญ๋ชฉ ๊ฒฝ๋กœ๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

CREATE TABLE graphite.metrics ( Date Date, Level UInt32, Path String, Deleted UInt8, Version UInt32 ) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.metrics', โ€˜r1โ€™, Date, (Level, Path), 8192, Version);

"graphite.data" - ReplicatedGraphiteMergeTree ์—”์ง„์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”(๋ณต์ œ๋จ ํ‘์—ฐ๋ณ‘ํ•ฉํŠธ๋ฆฌ). ์ด ํ…Œ์ด๋ธ”์€ ์ธก์ •ํ•ญ๋ชฉ ๊ฐ’์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

CREATE TABLE graphite.data ( Path String, Value Float64, Time UInt32, Date Date, Timestamp UInt32 ) ENGINE = ReplicatedGraphiteMergeTree('/clickhouse/tables/replicator/graphite.data', 'r1', Date, (Path, Time), 8192, 'graphite_rollup')

"graphite.date_metrics"๋Š” ReplicatedReplacingMergeTree ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด๋ถ€๋กœ ์ฑ„์›Œ์ง„ ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค. ์ด ํ…Œ์ด๋ธ”์—๋Š” ํ•˜๋ฃจ ๋™์•ˆ ๋ฐœ์ƒํ•œ ๋ชจ๋“  ์ธก์ •ํ•ญ๋ชฉ์˜ ์ด๋ฆ„์ด ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. ์ƒ์„ฑ ์ด์œ ๋Š” ์„น์…˜์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. "๋ฌธ์ œ" ์ด ๊ธฐ์‚ฌ์˜ ๋์—์„œ.

CREATE MATERIALIZED VIEW graphite.date_metrics ( Path String,  Level UInt32,  Date Date) ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/replicator/graphite.date_metrics', 'r1', Date, (Level, Path, Date), 8192) AS SELECT toUInt32(length(splitByChar('.', Path))) AS Level, Date, Path FROM graphite.data

"graphite.data_stat" - ReplicatedAggregatingMergeTree ์—”์ง„์„ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์ฑ„์›Œ์ง„ ํ…Œ์ด๋ธ”(๋ณต์ œ๋จ) ์ง‘๊ณ„๋ณ‘ํ•ฉ ํŠธ๋ฆฌ). ์ด ํ…Œ์ด๋ธ”์€ ์ˆ˜์‹  ์ธก์ •ํ•ญ๋ชฉ ์ˆ˜๋ฅผ 4๊ฐœ์˜ ์ค‘์ฒฉ ์ˆ˜์ค€์œผ๋กœ ๋ถ„๋ฅ˜ํ•˜์—ฌ ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

CREATE MATERIALIZED VIEW graphite.data_stat ( Date Date,  Prefix String,  Timestamp UInt32,  Count AggregateFunction(count)) ENGINE = ReplicatedAggregatingMergeTree('/clickhouse/tables/replicator/graphite.data_stat', 'r1', Date, (Timestamp, Prefix), 8192) AS SELECT toStartOfMonth(now()) AS Date, replaceRegexpOne(Path, '^([^.]+.[^.]+.[^.]+).*$', '1') AS Prefix, toUInt32(toStartOfMinute(toDateTime(Timestamp))) AS Timestamp, countState() AS Count FROM graphite.data  GROUP BY Timestamp, Prefix

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ๊ตฌ์„ฑ ์š”์†Œ ์ƒํ˜ธ ์ž‘์šฉ ๋‹ค์ด์–ด๊ทธ๋žจ

์ธก์ •ํ•ญ๋ชฉ ์ €์žฅ: Graphite+Whisper์—์„œ Graphite+ClickHouse๋กœ ์ „ํ™˜ํ•œ ๋ฐฉ๋ฒ•

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์ด ํ”„๋กœ์ ํŠธ์˜ ๊ธฐ๋Œ€์—์„œ ๊ธฐ์–ต๋‚˜๋Š” ๋Œ€๋กœ ClickHouse๋กœ์˜ ์ „ํ™˜์€ ๋‹ค์šดํƒ€์ž„์ด ์—†์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์šฐ๋ฆฌ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ํ•œ ํˆฌ๋ช…ํ•˜๊ฒŒ ์ „์ฒด ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์„ ์ƒˆ๋กœ์šด ์Šคํ† ๋ฆฌ์ง€๋กœ ์ „ํ™˜ํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ํ•œ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  • ClickHouse ํ…Œ์ด๋ธ” ๋ณต์ œ์— ์ฐธ์—ฌํ•˜๋Š” ์„œ๋ฒ„ ์ค‘ ํ•˜๋‚˜์˜ carbon-clickhouse์— ์ถ”๊ฐ€ ๋ฉ”ํŠธ๋ฆญ ์ŠคํŠธ๋ฆผ์„ ๋ณด๋‚ด๋Š” ๊ทœ์น™์ด carbon-c-relay์— ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์šฐ๋ฆฌ๋Š” ์†์‚ญ์ž„ ๋คํ”„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ €์žฅ์†Œ์—์„œ ๋ชจ๋“  .wsp ํŒŒ์ผ์„ ์ฝ๊ณ  ์ด ๋ฐ์ดํ„ฐ๋ฅผ ์œ„์—์„œ ์„ค๋ช…ํ•œ ํƒ„์†Œ ํด๋ฆญํ•˜์šฐ์Šค์— 24๊ฐœ ์Šค๋ ˆ๋“œ๋กœ ๋ณด๋‚ด๋Š” ์ž‘์€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ Python์œผ๋กœ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์นด๋ณธํด๋ฆญํ•˜์šฐ์Šค์—์„œ ํ—ˆ์šฉ๋˜๋Š” ์ธก์ •๊ฐ’์˜ ๊ฐœ์ˆ˜๋Š” ๋ถ„๋‹น 125์–ต XNUMX๋งŒ ๊ฐœ์— ๋‹ฌํ–ˆ๊ณ , ํด๋ฆญํ•˜์šฐ์Šค๋Š” ๋•€ ํ•œ ๋ฐฉ์šธ๋„ ํ˜๋ฆฌ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ๋Œ€์‹œ๋ณด๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ์„ ๋””๋ฒ„๊ทธํ•˜๊ธฐ ์œ„ํ•ด Grafana์— ๋ณ„๋„์˜ DataSource๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์‚ฌ์šฉํ•œ ํ•จ์ˆ˜ ๋ชฉ๋ก์„ ํ™•์ธํ–ˆ์ง€๋งŒ carbonapi์—์„œ๋Š” ๊ตฌํ˜„๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด๋Ÿฌํ•œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  carbonapi ์ž‘์„ฑ์ž์—๊ฒŒ PR์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค(ํŠน๋ณ„ํžˆ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค).

  • ๋ฐธ๋Ÿฐ์„œ ์„ค์ •์—์„œ ์ฝ๊ธฐ ๋กœ๋“œ๋ฅผ ์ „ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ์—”๋“œํฌ์ธํŠธ๋ฅผ graphite-api(Graphite+Whisper์šฉ API ์ธํ„ฐํŽ˜์ด์Šค)์—์„œ carbonapi๋กœ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ๊ฒฐ๊ณผ

  • ๋””์Šคํฌ ํ•˜์œ„ ์‹œ์Šคํ…œ ํ™œ์šฉ๋„๊ฐ€ 30%์—์„œ 1%๋กœ ๊ฐ์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

    ์ธก์ •ํ•ญ๋ชฉ ์ €์žฅ: Graphite+Whisper์—์„œ Graphite+ClickHouse๋กœ ์ „ํ™˜ํ•œ ๋ฐฉ๋ฒ•

  • ์ฐจ์ง€ํ•˜๋Š” ๊ณต๊ฐ„์„ 1TB์—์„œ 300GB๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
  • ๋ถ„๋‹น 125์–ต XNUMX๋งŒ ๊ฐœ์˜ ์ง€ํ‘œ๋ฅผ ์„œ๋ฒ„๋กœ ์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค(๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋‹น์‹œ ์ตœ๊ณ ์น˜).
  • ๋ชจ๋“  ์ธก์ •ํ•ญ๋ชฉ์„ XNUMX์ดˆ ์ €์žฅ ๊ฐ„๊ฒฉ์œผ๋กœ ์ „์†กํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ˆ˜์‹ ๋œ ๋ฐ์ดํ„ฐ ๋ณต์ œ ๋ฐ ๋‚ด๊ฒฐํ•จ์„ฑ;
  • ๋‹ค์šดํƒ€์ž„ ์—†์ด ์ „ํ™˜๋จ;
  • ๋ชจ๋“  ๊ฒƒ์„ ์™„๋ฃŒํ•˜๋Š” ๋ฐ ์•ฝ 7์ฃผ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ๋ฌธ์ œ

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๋ช‡ ๊ฐ€์ง€ ํ•จ์ •์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ „ํ™˜ ํ›„์— ์šฐ๋ฆฌ๊ฐ€ ์ง๋ฉดํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

  1. ClickHouse๋Š” ํ•ญ์ƒ ๊ตฌ์„ฑ์„ ์ฆ‰์‹œ ๋‹ค์‹œ ์ฝ๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋ฉฐ ๋•Œ๋กœ๋Š” ์žฌ๋ถ€ํŒ…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ClickHouse ๊ตฌ์„ฑ์˜ ์‚ฌ์œก์‚ฌ ํด๋Ÿฌ์Šคํ„ฐ์— ๋Œ€ํ•œ ์„ค๋ช…์˜ ๊ฒฝ์šฐ clickhouse-server๊ฐ€ ์žฌ๋ถ€ํŒ…๋  ๋•Œ๊นŒ์ง€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  2. ๋Œ€๊ทœ๋ชจ ClickHouse ์š”์ฒญ์ด ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ graphite-clickhouse์—์„œ ClickHouse ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
    url = "http://localhost:8123/?max_query_size=268435456&max_ast_elements=1000000"
  3. ClickHouse๋Š” ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค์˜ ์ƒˆ ๋ฒ„์ „์„ ์ž์ฃผ ์ถœ์‹œํ•˜๋ฏ€๋กœ ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ๋‚ด์šฉ์ด ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•˜์„ธ์š”.
  4. Kubernetes์—์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ๋Š” ์ˆ˜๋ช…์ด ์งง๊ณ  ๋ฌด์ž‘์œ„๋กœ ๋งŽ์€ ์ˆ˜์˜ ๋ฉ”ํŠธ๋ฆญ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ธก์ • ํ•ญ๋ชฉ์—๋Š” ํฌ์ธํŠธ๊ฐ€ ๋งŽ์ง€ ์•Š์œผ๋ฉฐ ๊ณต๊ฐ„์—๋„ ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ClickHouse๋Š” '๋ฉ”ํŠธ๋ฆญ' ํ…Œ์ด๋ธ”์—์„œ ์ด์™€ ๋™์ผํ•œ ์ˆ˜๋งŽ์€ ๋ฉ”ํŠธ๋ฆญ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. 90%์˜ ๊ฒฝ์šฐ์—๋Š” ์ฐฝ(24์‹œ๊ฐ„) ์ดํ›„์—๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ '๋ฐ์ดํ„ฐ' ํ…Œ์ด๋ธ”์—์„œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  ๊ฒฐ๊ตญ ์‹œ๊ฐ„ ์ดˆ๊ณผ์— ์ง๋ฉดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ํ•˜๋ฃจ ๋™์•ˆ ์ ‘ํ•œ ์ง€ํ‘œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณ„๋„์˜ ๋ณด๊ธฐ๋กœ ์œ ์ง€ํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋œ ์ปจํ…Œ์ด๋„ˆ์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ(๊ทธ๋ž˜ํ”„)๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ „์ฒด ์‹œ๊ฐ„์ด ์•„๋‹Œ ํŠน์ • ์ฐฝ ๋‚ด์—์„œ ๋ฐœ๊ฒฌ๋œ ์ธก์ •ํ•ญ๋ชฉ๋งŒ ์ฟผ๋ฆฌํ•˜๋ฏ€๋กœ ์ด์— ๋Œ€ํ•œ ๋ณด๊ณ ์„œ ๊ตฌ์„ฑ ์†๋„๊ฐ€ ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„์—์„œ ์„ค๋ช…ํ•œ ์†”๋ฃจ์…˜์— ๋Œ€ํ•ด ์ˆ˜์ง‘ํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํŒŒ์ดํŠธ ํด๋ฆญํ•˜์šฐ์Šค(ํฌํฌ), ์—ฌ๊ธฐ์—๋Š” date_metrics ํ…Œ์ด๋ธ” ์ž‘์—… ๊ตฌํ˜„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ํƒœ๊ทธ

๋ฒ„์ „ 1.1.0์—์„œ Graphite๊ฐ€ ๊ณต์‹ํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ง€์› ํƒœ๊ทธ. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค ์Šคํƒ์—์„œ ์ด ์ด๋‹ˆ์…”ํ‹ฐ๋ธŒ๋ฅผ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด ๋ฌด์—‡์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผ ํ• ์ง€ ์ ๊ทน์ ์œผ๋กœ ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜ํŒŒ์ดํŠธ+ํด๋ฆญํ•˜์šฐ์Šค. ์ด์ƒ ํƒ์ง€๊ธฐ

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

๊ตฌ๋…ํ•˜๊ณ  ์œ„์ชฝ ํ™”์‚ดํ‘œ๋ฅผ ๋ˆ„๋ฅด๊ณ  ํ–‰๋ณตํ•˜์„ธ์š”!

์ถœ์ฒ˜ : habr.com

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