๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

Zabbix๋Š” ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‹œ์Šคํ…œ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์˜ ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ฌธ์ œ, ์ฆ‰ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ฒ˜๋ฆฌ, ๊ธฐ๋ก ์ €์žฅ ๋ฐ ์ •๋ฆฌ์— ์ง๋ฉดํ•ฉ๋‹ˆ๋‹ค.

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

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

Zabbix์—์„œ ์ˆ˜์ง‘ ๋ฐ ์ €์žฅ ์ค‘ ์ง€์—ฐ ๋ฌธ์ œ๋Š” ์บ์‹ฑ(์—ฌ๋Ÿฌ ์œ ํ˜•์˜ ์บ์‹œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์บ์‹ฑ)์„ ํ†ตํ•ด ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์บ์‹ฑ์ด ์ ํ•ฉํ•˜์ง€ ์•Š์•„ Zabbix๋Š” TimescaleDB๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์‚ฌ๋žŒ์ด ๋‹น์‹ ์—๊ฒŒ ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ๋งํ•ด ์ค„ ๊ฑฐ์˜ˆ์š” ์•ˆ๋“œ๋ ˆ์ด ๊ตฌ์‰ฌ์นœ - ๊ธฐ์ˆ  ์ง€์› ์—”์ง€๋‹ˆ์–ด ์ž๋น…์Šค SIA. Andrey๋Š” 6๋…„ ์ด์ƒ Zabbix๋ฅผ ์ง€์›ํ•ด ์™”์œผ๋ฉฐ ์„ฑ๋Šฅ์— ๋Œ€ํ•œ ์ง์ ‘์ ์ธ ๊ฒฝํ—˜์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

TimescaleDB๋Š” ์–ด๋–ป๊ฒŒ ์ž‘๋™ํ•˜๋ฉฐ ์ผ๋ฐ˜ PostgreSQL๊ณผ ๋น„๊ตํ•˜์—ฌ ์–ด๋–ค ์„ฑ๋Šฅ์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? TimescaleDB ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ Zabbix๋Š” ์–ด๋–ค ์—ญํ• ์„ ํ•ฉ๋‹ˆ๊นŒ? ์ฒ˜์Œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ PostgreSQL์—์„œ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ค ๊ตฌ์„ฑ์˜ ์„ฑ๋Šฅ์ด ๋” ์ข‹์Šต๋‹ˆ๊นŒ? ์ด ๋ชจ๋“  ๊ฒƒ์— ๋Œ€ํ•ด ์ปท ์•„๋ž˜์— ์žˆ์Šต๋‹ˆ๋‹ค.

์ƒ์‚ฐ์„ฑ ๋ฌธ์ œ

๋ชจ๋“  ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์€ ํŠน์ • ์„ฑ๋Šฅ ๋ฌธ์ œ์— ์ง๋ฉดํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ฒ˜๋ฆฌ, ์ €์žฅ, ์ด๋ ฅ ์‚ญ์ œ ์„ธ ๊ฐ€์ง€์— ๋Œ€ํ•ด ๋ง์”€๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐ ์ฒ˜๋ฆฌ. ์ข‹์€ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ˆ˜์‹ ํ•˜๊ณ  ํ•ด๋‹น ๊ธฐ์ค€์— ๋”ฐ๋ผ ํŠธ๋ฆฌ๊ฑฐ ํ‘œํ˜„์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ ํ›„ ์‹œ์Šคํ…œ์€ ๋‚˜์ค‘์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‹ ์†ํ•˜๊ฒŒ ์ €์žฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ญ์‚ฌ ์ €์žฅ. ์ข‹์€ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์€ ๊ธฐ๋ก์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ์ธก์ •ํ•ญ๋ชฉ์— ์‰ฝ๊ฒŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณด๊ณ ์„œ, ๊ทธ๋ž˜ํ”„, ํŠธ๋ฆฌ๊ฑฐ, ์ž„๊ณ„๊ฐ’ ๋ฐ ๊ณ„์‚ฐ๋œ ๊ฒฝ๊ณ  ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๊ธฐ๋ก์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ก์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋กœ๋Š” ์ธก์ •ํ•ญ๋ชฉ์„ ์ €์žฅํ•  ํ•„์š”๊ฐ€ ์—†๋Š” ๋‚ ์ด ์˜ต๋‹ˆ๋‹ค. 5๋…„, ํ•œ๋‘ ๋‹ฌ ์ „์— ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ์ผ๋ถ€ ๋…ธ๋“œ๋Š” ์‚ญ์ œ๋˜์—ˆ์œผ๋ฉฐ, ์ผ๋ถ€ ํ˜ธ์ŠคํŠธ ๋˜๋Š” ๋ฉ”ํŠธ๋ฆญ์€ ์˜ค๋ž˜๋˜์–ด ๋” ์ด์ƒ ์ˆ˜์ง‘๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ข‹์€ ๋ชจ๋‹ˆํ„ฐ๋ง ์‹œ์Šคํ…œ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ปค์ง€์ง€ ์•Š๋„๋ก ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์ˆ˜์‹œ๋กœ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ž˜๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์— ํฐ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์ค‘์š”ํ•œ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

Zabbix์˜ ์บ์‹ฑ

Zabbix์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ์™€ ๋‘ ๋ฒˆ์งธ ํ˜ธ์ถœ์ด ์บ์‹ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. RAM์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ €์žฅ์šฉ - ํŠธ๋ฆฌ๊ฑฐ, ๊ทธ๋ž˜ํ”„ ๋ฐ ๊ณ„์‚ฐ๋œ ๋ฐ์ดํ„ฐ ์š”์†Œ์˜ ๊ธฐ๋ก์ž…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์—๋Š” ๊ทธ๋ž˜ํ”„์™€ ๊ฐ™์€ ๊ธฐ๋ณธ ์„ ํƒ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ผ๋ถ€ ์บ์‹ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

Zabbix ์„œ๋ฒ„ ์ž์ฒด ์ธก์˜ ์บ์‹ฑ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ตฌ์„ฑ์บ์‹œ;
  • ๊ฐ€์น˜์บ์‹œ;
  • ํžˆ์Šคํ† ๋ฆฌ ์บ์‹œ;
  • ํŠธ๋ Œ๋“œ์บ์‹œ.

๊ทธ๋“ค์„ ๋” ์ž์„ธํžˆ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

๊ตฌ์„ฑ์บ์‹œ

์ด๋Š” ๋ฉ”ํŠธ๋ฆญ, ํ˜ธ์ŠคํŠธ, ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ, ํŠธ๋ฆฌ๊ฑฐ(์ „์ฒ˜๋ฆฌ ๋ฐ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์— ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ)๋ฅผ ์ €์žฅํ•˜๋Š” ๊ธฐ๋ณธ ์บ์‹œ์ž…๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์ด ๋ชจ๋“  ๊ฒƒ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ถˆํ•„์š”ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๋„๋ก ConfigurationCache์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์ด ์บ์‹œ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ๊ตฌ์„ฑ์„ ์ƒ์„ฑํ•˜๊ณ  ์ฃผ๊ธฐ์ ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ˆ˜์ง‘

๋‹ค์ด์–ด๊ทธ๋žจ์€ ๊ฝค ํฌ์ง€๋งŒ ๊ทธ ์•ˆ์— ์žˆ๋Š” ์ฃผ์š” ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜์ง‘๊ฐ€. ์ด๋Š” ๋‹ค์–‘ํ•œ "ํด๋Ÿฌ"(์กฐ๋ฆฝ ํ”„๋กœ์„ธ์Šค)์ž…๋‹ˆ๋‹ค. ์ด๋“ค์€ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ์–ด์…ˆ๋ธ”๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. SNMP, IPMI๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ์ด๋ฅผ ๋ชจ๋‘ PreProcessing์œผ๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix์ˆ˜์ง‘๊ฐ€๋Š” ์ฃผํ™ฉ์ƒ‰์œผ๋กœ ์œค๊ณฝ์„ ์ด ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Zabbix๋Š” ์ˆ˜ํ‘œ ์ง‘๊ณ„์— ํ•„์š”ํ•œ ์ง‘๊ณ„ ํ•ญ๋ชฉ์„ ๊ณ„์‚ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด ValueCache์—์„œ ์ง์ ‘ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.

์ „์ฒ˜๋ฆฌ ๊ธฐ๋ก์บ์‹œ

๋ชจ๋“  ์ˆ˜์ง‘๊ธฐ๋Š” ConfigurationCache๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด๋ฅผ PreProcessing์œผ๋กœ ์˜ฎ๊น๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์ „์ฒ˜๋ฆฌ๋Š” ConfigurationCache๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ „์ฒ˜๋ฆฌ ๋‹จ๊ณ„๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฐ์ดํ„ฐ๋Š” ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋ฉ๋‹ˆ๋‹ค.

PreProcessing์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•œ ํ›„ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด HistoryCache์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์œผ๋กœ ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘์ด ์ข…๋ฃŒ๋˜๊ณ  Zabbix์˜ ์ฃผ์š” ํ”„๋กœ์„ธ์Šค๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜, ๋ชจ๋†€๋ฆฌ์‹ ์•„ํ‚คํ…์ฒ˜์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ „์ฒ˜๋ฆฌ๋Š” ์ƒ๋‹นํžˆ ์–ด๋ ค์šด ์ž‘์—…์ž…๋‹ˆ๋‹ค. v 4.2์—์„œ๋Š” ํ”„๋ก์‹œ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์š”์†Œ ์ˆ˜๊ฐ€ ๋งŽ๊ณ  ์ˆ˜์ง‘ ๋นˆ๋„๊ฐ€ ๋†’์€ Zabbix๊ฐ€ ๋งค์šฐ ํฐ ๊ฒฝ์šฐ ์ž‘์—…์ด ํ›จ์”ฌ ์‰ฌ์›Œ์ง‘๋‹ˆ๋‹ค.

ValueCache, ๊ธฐ๋ก ๋ฐ ๋™ํ–ฅ ์บ์‹œ

ํžˆ์Šคํ† ๋ฆฌ ์‹ฑํฌ๋Š” ๊ฐ ๋ฐ์ดํ„ฐ ์š”์†Œ, ์ฆ‰ ๊ฐ ๊ฐ’์„ ์›์ž์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ์ฃผ์š” ํ”„๋กœ์„ธ์Šค์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜๋Š” HistoryCache์—์„œ ๊ฐ’์„ ๊ฐ€์ ธ์™€ ๊ตฌ์„ฑ์—์„œ ๊ณ„์‚ฐ์„ ์œ„ํ•œ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜๋Š” ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฒฝ๊ณ ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์—์Šค์ปฌ๋ ˆ์ด์…˜ ๋ฐ ๊ธฐ๋ก์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ›„์† ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๊ฐ’์„ ValueCache์— ์ €์žฅํ•˜์—ฌ ๊ธฐ๋ก ํ…Œ์ด๋ธ”์— ์•ก์„ธ์Šคํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ValueCache๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ ๋ฐ ๊ณ„์‚ฐ๋œ ์š”์†Œ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ์ง€๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ธฐ๋กํ•˜๊ณ  ๋””์Šคํฌ์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌ ๊ณผ์ •์€ ์—ฌ๊ธฐ์„œ ๋๋‚ฉ๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์บ์‹ฑ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธก์—๋Š” ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ๊ทธ๋ž˜ํ”„๋‚˜ ๋ณด๊ณ ์„œ๋ฅผ ๋ณด๋ ค๋Š” ๊ฒฝ์šฐ ๋‹ค์–‘ํ•œ ์บ์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Innodb_buffer_pool MySQL ์ธก์—์„œ;
  • shared_buffers PostgreSQL ์ธก์—์„œ;
  • effective_cache_size ์˜ค๋ผํด ์ธก์—์„œ;
  • shared_pool DB2 ์ธก์—์„œ.

๋‹ค๋ฅธ ๋งŽ์€ ์บ์‹œ๊ฐ€ ์žˆ์ง€๋งŒ ์ด๊ฒƒ์ด ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ฃผ์š” ์บ์‹œ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ์— ์ž์ฃผ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ RAM์— ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋“ค์€ ์ด์— ๋Œ€ํ•œ ์ž์ฒด ๊ธฐ์ˆ ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ฑ๋Šฅ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค

Zabbix ์„œ๋ฒ„๋Š” ์ง€์†์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ง‘ํ•˜๊ณ  ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๋ฉด ๊ธฐ๋ก์—์„œ ์ฝ์–ด ValueCache๋ฅผ ์ฑ„์›๋‹ˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ ๋ฐ ๋ณด๊ณ ์„œ ์‚ฌ์šฉ ์ž๋น…์Šค API, ์›น ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค. Zabbix API๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์•ก์„ธ์Šคํ•˜์—ฌ ๊ทธ๋ž˜ํ”„, ๋ณด๊ณ ์„œ, ์ด๋ฒคํŠธ ๋ชฉ๋ก ๋ฐ ์ตœ์‹  ๋ฌธ์ œ์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์‹œ๊ฐํ™”๋ฅผ ์œ„ํ•ด - ๊ทธ๋ผ ํŒŒ๋‚˜. ์ด๋Š” ์‚ฌ์šฉ์ž๋“ค ์‚ฌ์ด์—์„œ ์ธ๊ธฐ ์žˆ๋Š” ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. Zabbix API์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋ฐ์ดํ„ฐ ์ˆ˜์‹ ์„ ์œ„ํ•ด ํŠน์ • ๊ฒฝ์Ÿ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฐ๊ณผ ๋ฐ ํ…Œ์ŠคํŠธ์˜ ๋น ๋ฅธ ์ „๋‹ฌ์„ ์œ„ํ•ด์„œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณด๋‹ค ์„ธ๋ฐ€ํ•˜๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์กฐ์ •ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ€์‚ฌ๋„์šฐ๋ฏธ

Zabbix์˜ ์„ธ ๋ฒˆ์งธ ์„ฑ๋Šฅ ๊ณผ์ œ๋Š” Housekeeper๋ฅผ ์‚ฌ์šฉํ•œ ๊ธฐ๋ก ์‚ญ์ œ์ž…๋‹ˆ๋‹ค. ๋ชจ๋“  ์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์š”์†Œ๋Š” ๋ณ€ํ™”์˜ ์—ญํ•™(์ถ”์„ธ)์„ ๋ฉฐ์น  ๋‹จ์œ„๋กœ ์ €์žฅํ•˜๋Š” ๊ธฐ๊ฐ„์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

TrendsCache๋ฅผ ์ฆ‰์‹œ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ๋„์ฐฉํ•˜๋ฉด ์ด๋ฅผ ํ•œ ์‹œ๊ฐ„ ๋™์•ˆ ์ง‘๊ณ„ํ•˜์—ฌ ์ถ”์„ธ ๋ณ€ํ™”์˜ ์—ญํ•™์„ ํ…Œ์ด๋ธ”์— ๊ธฐ๋กํ•ฉ๋‹ˆ๋‹ค.

Housekeeper๋Š” ์ผ๋ฐ˜์ ์ธ "์„ ํƒ"์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ •๋ณด๋ฅผ ์‹œ์ž‘ํ•˜๊ณ  ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค์˜ ์„ฑ๋Šฅ ๊ทธ๋ž˜ํ”„์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ์ด๋Š” ํ•ญ์ƒ ํšจ๊ณผ์ ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

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

์–ธ์ œ Housekeeper๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์˜ˆ๋ฅผ ๋“ค์–ด, "ํ•ญ๋ชฉ ID"๊ฐ€ ์žˆ๊ณ  ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ๋งˆ์ง€๋ง‰ 5๊ฐœ์˜ ํ–‰์„ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฌผ๋ก  ์ด๋Š” ์ธ๋ฑ์Šค๋ณ„๋กœ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ์„ธํŠธ๋Š” ๋งค์šฐ ํฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์—ฌ์ „ํžˆ ๋””์Šคํฌ์—์„œ ์ฝ์–ด ์บ์‹œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ํ•ญ์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋งค์šฐ ๋น„์šฉ์ด ๋งŽ์ด ๋“œ๋Š” ์ž‘์—…์ด๋ฉฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํฌ๊ธฐ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

๊ฐ€์ •๋ถ€๋Š” ๋น„ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ์›น ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” Housekeeper์— ๋Œ€ํ•œ "๊ด€๋ฆฌ ์ผ๋ฐ˜" ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์ถ”์„ธ ๊ธฐ๋ก์— ๋Œ€ํ•œ ๋‚ด๋ถ€ ๊ด€๋ฆฌ๋ฅผ ๋น„ํ™œ์„ฑํ™”ํ•˜๊ณ  ๋” ์ด์ƒ ๊ด€๋ฆฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Housekeeper๊ฐ€ ๊บผ์ง€๊ณ  ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ท ๋“ฑํ•ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์„ธ ๋ฒˆ์งธ ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋ฌด์—‡์ด ๋„์›€์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํŒŒํ‹ฐ์…”๋‹ - ํŒŒํ‹ฐ์…”๋‹ ๋˜๋Š” ํŒŒํ‹ฐ์…”๋‹

์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹์€ ๋‚ด๊ฐ€ ๋‚˜์—ดํ•œ ๊ฐ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ ๊ณ ์œ ํ•œ ๊ธฐ์ˆ ์ด ์žˆ์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ํŒŒํ‹ฐ์…˜์„ ์ƒ์„ฑํ•˜๋ฉด ํŠน์ • ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒํ‹ฐ์…˜์€ ํ•˜๋ฃจ์— ์ƒ์„ฑ๋˜๋Š” ๋ฐ์ดํ„ฐ ์–‘์ธ "์„ค์ •"์— ๋”ฐ๋ผ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์›์น™์ ์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹์€ ํ•˜๋ฃจ ์•ˆ์— ์‹คํ–‰๋˜๋ฉฐ ์ด๊ฒƒ์ด ์ตœ์†Œ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฐฐ์น˜์˜ ์ถ”์„ธ - 1๊ฐœ์›”.

"์„ค์ •"์ด ๋งค์šฐ ํฐ ๊ฒฝ์šฐ ๊ฐ’์ด ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž‘์€ "์„ค์ •"์ด ์ตœ๋Œ€ 5nvps(์ดˆ๋‹น ์ƒˆ ๊ฐ’)์ธ ๊ฒฝ์šฐ ์ค‘๊ฐ„ ์„ค์ •์€ 000~5์ด๊ณ  ํฐ ์„ค์ •์€ 000nvps ์ด์ƒ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‹ ์ค‘ํ•˜๊ฒŒ ๊ตฌ์„ฑํ•ด์•ผ ํ•˜๋Š” ๋Œ€๊ทœ๋ชจ ์„ค์น˜์ž…๋‹ˆ๋‹ค.

๋Œ€๊ทœ๋ชจ ์„ค์น˜์—์„œ๋Š” ํ•˜๋ฃจ๋ผ๋Š” ๊ธฐ๊ฐ„์ด ์ตœ์ ์ด ์•„๋‹ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋ฃจ์— 40GB ์ด์ƒ์˜ MySQL ํŒŒํ‹ฐ์…˜์„ ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋งค์šฐ ํฐ ์–‘์˜ ๋ฐ์ดํ„ฐ์ด๋ฏ€๋กœ ์ค„์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํŒŒํ‹ฐ์…”๋‹์€ ๋ฌด์—‡์„ ์ œ๊ณตํ•ฉ๋‹ˆ๊นŒ?

ํŒŒํ‹ฐ์…˜ ๋‚˜๋ˆ„๊ธฐ ํ…Œ์ด๋ธ”. ์ข…์ข… ์ด๋“ค์€ ๋””์Šคํฌ์— ๋ณ„๋„์˜ ํŒŒ์ผ๋กœ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๊ณ„ํš์€ ํ•˜๋‚˜์˜ ํŒŒํ‹ฐ์…˜์„ ๋” ์ตœ์ ์œผ๋กœ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ํŒŒํ‹ฐ์…”๋‹์€ ๋ฒ”์œ„๋ณ„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” Zabbix์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ์‹œ๋Œ€๊ฐ€ ์‹œ์ž‘๋œ ์ดํ›„์˜ ์‹œ๊ฐ„์ธ "ํƒ€์ž„์Šคํƒฌํ”„"๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ํ‰๋ฒ”ํ•œ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ํ•˜๋ฃจ์˜ ์‹œ์ž‘๊ณผ ๋์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ํŒŒํ‹ฐ์…˜์ž…๋‹ˆ๋‹ค.

๋น ๋ฅธ ์ œ๊ฑฐ - DELETE. ์‚ญ์ œํ•  ํ–‰์„ ์„ ํƒํ•˜๋Š” ๋Œ€์‹  ํ•˜๋‚˜์˜ ํŒŒ์ผ/ํ•˜์œ„ ํ…Œ์ด๋ธ”์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋Œ€ํญ ํ–ฅ์ƒ๋ฉ๋‹ˆ๋‹ค. SELECT - ์ „์ฒด ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ํ•˜๋‚˜ ์ด์ƒ์˜ ํŒŒํ‹ฐ์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ดํ‹€์ด ์ง€๋‚œ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋Š” ๊ฒฝ์šฐ ํฐ ํ…Œ์ด๋ธ”์ด ์•„๋‹Œ ํ•˜๋‚˜์˜ ํŒŒ์ผ๋งŒ ์บ์‹œ์— ๋กœ๋“œํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋” ๋นจ๋ฆฌ ๊ฒ€์ƒ‰๋ฉ๋‹ˆ๋‹ค.

์ข…์ข… ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋„ ๊ฐ€์†ํ™”๋ฉ๋‹ˆ๋‹ค. INSERT โ€” ํ•˜์œ„ ํ…Œ์ด๋ธ”์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

ํƒ€์ž„์Šค์ผ€์ผDB

v 4.2์—์„œ๋Š” TimescaleDB์— ๊ด€์‹ฌ์„ ๋Œ๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ฐ–์ถ˜ PostgreSQL์šฉ ํ™•์žฅ์ž…๋‹ˆ๋‹ค. ํ™•์žฅ์€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ด์ ์„ ์žƒ์ง€ ์•Š์œผ๋ฉด์„œ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ์™€ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. TimescaleDB๋„ ์ž๋™์œผ๋กœ ํŒŒํ‹ฐ์…˜์„ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.

TimescaleDB์—๋Š” ๊ฐœ๋…์ด ์žˆ์Šต๋‹ˆ๋‹ค ํ•˜์ดํผํ…Œ์ด๋ธ” (ํ•˜์ดํผํ…Œ์ด๋ธ”)์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํฌํ•จ ๋ฉ์–ด๋ฆฌ - ํŒŒํ‹ฐ์…˜. ์ฒญํฌ๋Š” ๋‹ค๋ฅธ ์กฐ๊ฐ์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ์ž๋™์œผ๋กœ ๊ด€๋ฆฌ๋˜๋Š” ํ•˜์ดํผํ…Œ์ด๋ธ” ์กฐ๊ฐ์ž…๋‹ˆ๋‹ค. ๊ฐ ์ฒญํฌ์—๋Š” ๊ณ ์œ ํ•œ ์‹œ๊ฐ„ ๋ฒ”์œ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

TimescaleDB์™€ PostgreSQL

TimescaleDB๋Š” ์ •๋ง ํšจ์œจ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ ์ œ์กฐ์—…์ฒด๋Š” ๋ณด๋‹ค ์ •ํ™•ํ•œ ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํŠนํžˆ inserts ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์ฃผ์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์„ธํŠธ ์‚ฝ์ž… ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ์— ๋”ฐ๋ผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ผ์ •ํ•œ ์„ฑ๋Šฅ์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

200์–ต ํ–‰ ์ดํ›„ PostgreSQL์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํฌ๊ฒŒ ์ €ํ•˜๋˜๊ธฐ ์‹œ์ž‘ํ•˜๊ณ  ์„ฑ๋Šฅ์ด 0์œผ๋กœ ๋–จ์–ด์ง‘๋‹ˆ๋‹ค. TimescaleDB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ์–‘์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด "์‚ฝ์ž…"์„ ํšจ์œจ์ ์œผ๋กœ ์‚ฝ์ž…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜

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

Zabbix ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฒฝ์šฐ ํ™•์žฅ ๊ธฐ๋Šฅ์„ ํ™œ์„ฑํ™”ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

echo "CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;" | sudo -u postgres psql zabbix

๋‹น์‹ ์€ ํ™œ์„ฑํ™” extension Zabbix ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์šฉ์œผ๋กœ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„๋Š” ํ•˜์ดํผํ…Œ์ด๋ธ”์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ธฐ๋ก ํ…Œ์ด๋ธ”์„ TimescaleDB๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜

์—ฌ๊ธฐ์—๋Š” ํŠน๋ณ„ํ•œ ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค create_hypertable:

SELECT create_hypertable(โ€˜historyโ€™, โ€˜clockโ€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(โ€˜history_unitโ€™, โ€˜clockโ€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(โ€˜history_logโ€™, โ€˜clockโ€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(โ€˜history_textโ€™, โ€˜clockโ€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(โ€˜history_strโ€™, โ€˜clockโ€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(โ€˜trendsโ€™, โ€˜clockโ€™, chunk_time_interval => 86400, migrate_data => true);
SELECT create_hypertable(โ€˜trends_unitโ€™, โ€˜clockโ€™, chunk_time_interval => 86400, migrate_data => true);
UPDATE config SET db_extension=โ€™timescaledbโ€™, hk_history_global=1, hk_trends_global=1

์ด ํ•จ์ˆ˜์—๋Š” ์„ธ ๊ฐ€์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ - ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”, ํ•˜์ดํผํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘๋ฒˆ์งธ - ๋“คํŒ, ์ด์— ๋”ฐ๋ผ ์ƒ์„ฑํ•ด์•ผ ํ•  chunk_time_interval โ€” ์‚ฌ์šฉํ•  ํŒŒํ‹ฐ์…˜ ์ฒญํฌ์˜ ๊ฐ„๊ฒฉ์ž…๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝ์šฐ ๊ฐ„๊ฒฉ์€ ํ•˜๋ฃจ - 86์ž…๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜ - migrate_data. ์„ค์ •ํ•˜๋ฉด true, ๊ทธ๋Ÿฌ๋ฉด ํ˜„์žฌ์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฏธ๋ฆฌ ์ƒ์„ฑ๋œ ์ฒญํฌ๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ์ œ๊ฐ€ ์ง์ ‘ ์‚ฌ์šฉํ–ˆ์–ด์š” migrate_data. 1TB ์ •๋„ ์žˆ์—ˆ๋Š”๋ฐ XNUMX์‹œ๊ฐ„ ๋„˜๊ฒŒ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํ…Œ์ŠคํŠธ ์ค‘์— ์ €์žฅ์— ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฌธ์ž ์œ ํ˜•์˜ ๊ธฐ๋ก ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜์—ฌ ์ „์†กํ•˜์ง€ ์•Š๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„ - UPDATE:์—์„œ db_extension ๋†“๋‹ค timescaledb๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ด ํ™•์žฅ์ด ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์ดํ•ดํ•ฉ๋‹ˆ๋‹ค. Zabbix๋Š” ์ด๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  TimescaleDB์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋Œ€ํ•œ ๊ตฌ๋ฌธ๊ณผ ์ฟผ๋ฆฌ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ•˜๋“œ์›จ์–ด ๊ตฌ์„ฑ

์ €๋Š” ๋‘ ๋Œ€์˜ ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ - VMware ๋จธ์‹ . 20๊ฐœ์˜ Intelยฎ Xeonยฎ CPU E5-2630 v 4 @ 2.20GHz ํ”„๋กœ์„ธ์„œ, 16GB RAM ๋ฐ 200GB SSD๋กœ ๋งค์šฐ ์ž‘์Šต๋‹ˆ๋‹ค.

Debian 10.8-10.8.pgdg1+90 OS ๋ฐ xfs ํŒŒ์ผ ์‹œ์Šคํ…œ๊ณผ ํ•จ๊ป˜ PostgreSQL 1์„ ์„ค์น˜ํ–ˆ์Šต๋‹ˆ๋‹ค. Zabbix ์ž์ฒด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  ์ด ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๊ฒƒ์„ ์ตœ์†Œํ•œ์œผ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ์‹œ์Šคํ…œ์—๋Š” Zabbix ์„œ๋ฒ„, PostgreSQL ๋ฐ ๋กœ๋“œ ์—์ด์ „ํŠธ. ์‚ฌ์šฉ ์ค‘์ธ ํ™œ์„ฑ ์—์ด์ „ํŠธ๊ฐ€ 50๊ฐœ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. LoadableModule์ˆซ์ž, ๋ฌธ์ž์—ด ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŽ์€ ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์› ๋‹ค.

์ฒ˜์Œ์— ํฌํ•จ๋œ ๊ตฌ์„ฑ 5๊ฐœ ์š”์†Œ ํ˜ธ์ŠคํŠธ๋‹น ๋ฐ์ดํ„ฐ. ๊ฑฐ์˜ ๋ชจ๋“  ์š”์†Œ์—๋Š” ์‹ค์ œ ์„ค์น˜์™€ ์œ ์‚ฌํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๊ฒฝ์šฐ์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ๋„คํŠธ์›Œํฌ ๋…ธ๋“œ์—๋Š” 3~000๊ฐœ์˜ ํŠธ๋ฆฌ๊ฑฐ.

๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ ์—…๋ฐ์ดํŠธ ๊ฐ„๊ฒฉ - 4-7 ์ดˆ. ์—์ด์ „ํŠธ๋ฅผ 50๊ฐœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๋” ์ถ”๊ฐ€ํ•˜์—ฌ ๋ถ€ํ•˜ ์ž์ฒด๋ฅผ ์กฐ์ ˆํ–ˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฐ์ดํ„ฐ ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๋“œ๋ฅผ ๋™์ ์œผ๋กœ ์กฐ์ •ํ•˜๊ณ  ์—…๋ฐ์ดํŠธ ๊ฐ„๊ฒฉ์„ 4์ดˆ๋กœ ์ค„์˜€์Šต๋‹ˆ๋‹ค.

PostgreSQL. 35NVPS

์ด ํ•˜๋“œ์›จ์–ด์—์„œ์˜ ์ฒซ ๋ฒˆ์งธ ์‹คํ–‰์€ ์ˆœ์ˆ˜ PostgreSQL์—์„œ ์ด๋ฃจ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ดˆ๋‹น 35๊ฐœ์˜ ๊ฐ’์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณด์‹œ๋‹ค์‹œํ”ผ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ๋Š” ๋ช‡ ๋ถ„์˜ 200์ดˆ๋ฐ–์— ๊ฑธ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ๊ฒƒ์ด ํ›Œ๋ฅญํ•˜๊ณ  ๋น ๋ฆ…๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๊ฒƒ์€ XNUMXGB SSD ๋””์Šคํฌ๊ฐ€ ๋นจ๋ฆฌ ์ฑ„์›Œ์ง„๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์ด๊ฒƒ์€ ํ‘œ์ค€ Zabbix ์„œ๋ฒ„ ์„ฑ๋Šฅ ๋Œ€์‹œ๋ณด๋“œ์ž…๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์ฒซ ๋ฒˆ์งธ ํŒŒ๋ž€์ƒ‰ ๊ทธ๋ž˜ํ”„๋Š” ์ดˆ๋‹น ๊ฐ’์˜ ๊ฐœ์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ค๋ฅธ์ชฝ์˜ ๋‘ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„๋Š” ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค์˜ ๋กœ๋”ฉ์ž…๋‹ˆ๋‹ค. ์„ธ ๋ฒˆ์งธ๋Š” ๋‚ด๋ถ€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํžˆ์Šคํ† ๋ฆฌ ๋™๊ธฐํ™” ์žฅ์น˜์™€ Housekeeper๋Š” ์—ฌ๊ธฐ์—์„œ ๊ฝค ์˜ค๋žซ๋™์•ˆ ์‹คํ–‰๋˜์–ด ์™”์Šต๋‹ˆ๋‹ค.

๋„ค ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„๋Š” HistoryCache ์‚ฌ์šฉ๋Ÿ‰์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฝ์ž…ํ•˜๊ธฐ ์ „์˜ ์ผ์ข…์˜ ๋ฒ„ํผ์ด๋‹ค. ๋…น์ƒ‰ ๋‹ค์„ฏ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„๋Š” ValueCache ์‚ฌ์šฉ๋Ÿ‰, ์ฆ‰ ํŠธ๋ฆฌ๊ฑฐ์— ๋Œ€ํ•œ ValueCache ์ ์ค‘ ํšŸ์ˆ˜๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋Š” ์ดˆ๋‹น ์ˆ˜์ฒœ ๊ฐœ์˜ ๊ฐ’์ž…๋‹ˆ๋‹ค.

PostgreSQL. 50NVPS

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋™์ผํ•œ ํ•˜๋“œ์›จ์–ด์—์„œ ๋กœ๋“œ๋ฅผ ์ดˆ๋‹น 50๋งŒ ๊ฐ’์œผ๋กœ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

Housekeeper์—์„œ ๋กœ๋“œํ•  ๋•Œ 10๊ฐœ์˜ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ 2~3์ดˆ๊ฐ€ ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix
๊ฐ€์ •๋ถ€๋Š” ์ด๋ฏธ ์ผ์„ ๋ฐฉํ•ดํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค.

์„ธ ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ํŠธ๋žฉํผ ๋ฐ ๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜์˜ ๋กœ๋“œ๊ฐ€ ์—ฌ์ „ํžˆ 60%์ž„์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ๋„ค ๋ฒˆ์งธ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” Housekeeper ์ž‘์—… ์ค‘์— HistoryCache๊ฐ€ ์ด๋ฏธ ํ™œ๋ฐœํ•˜๊ฒŒ ์ฑ„์›Œ์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. 20% ์ •๋„ ์ฐจ์„œ ์•ฝ 0,5GB ์ •๋„ ๋ฉ๋‹ˆ๋‹ค.

PostgreSQL. 80NVPS

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ดˆ๋‹น 80๋งŒ ๊ฐ’์œผ๋กœ ๋ถ€ํ•˜๋ฅผ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์•ฝ 400๋งŒ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ ์š”์†Œ์™€ 280๋งŒ ๊ฐœ์˜ ํŠธ๋ฆฌ๊ฑฐ์ž…๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix
ํžˆ์Šคํ† ๋ฆฌ ์‹ฑํฌ๋กœ๋‹ˆ์…” XNUMX๊ฐœ์˜ ๋กœ๋”ฉ ๋น„์šฉ์€ ์ด๋ฏธ ์ƒ๋‹นํžˆ ๋†’์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ ๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜, ์บ์‹œ ๋“ฑ ๋‹ค์–‘ํ•œ ๋งค๊ฐœ๋ณ€์ˆ˜๋„ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

๋‚ด ํ•˜๋“œ์›จ์–ด์—์„œ๋Š” ๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜์˜ ๋กœ๋”ฉ์ด ์ตœ๋Œ€์น˜๋กœ ์ฆ๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. HistoryCache๋Š” ๋น ๋ฅด๊ฒŒ ๋ฐ์ดํ„ฐ๋กœ ์ฑ„์›Œ์กŒ์Šต๋‹ˆ๋‹ค. ์ฒ˜๋ฆฌํ•  ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฒ„ํผ์— ์ถ•์ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ์—๋Š” ํ”„๋กœ์„ธ์„œ, RAM ๋ฐ ๊ธฐํƒ€ ์‹œ์Šคํ…œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉ๋˜๋Š”์ง€ ๊ด€์ฐฐํ–ˆ๊ณ  ๋””์Šคํฌ ํ™œ์šฉ๋„๊ฐ€ ์ตœ๋Œ€์น˜์— ๋„๋‹ฌํ–ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

๋‚˜๋Š” ์‚ฌ์šฉ์„ ๋‹ฌ์„ฑํ–ˆ๋‹ค ์ตœ๋Œ€ ๋””์Šคํฌ ์šฉ๋Ÿ‰ ์ด ํ•˜๋“œ์›จ์–ด์™€ ์ด ๊ฐ€์ƒ ๋จธ์‹ ์—์„œ. ์ด๋Ÿฌํ•œ ๊ฐ•๋„๋กœ ์ธํ•ด PostgreSQL์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋งค์šฐ ์ ๊ทน์ ์œผ๋กœ ํ”Œ๋Ÿฌ์‹œํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์œผ๋ฉฐ ๋””์Šคํฌ์—๋Š” ๋” ์ด์ƒ ์“ฐ๊ณ  ์ฝ์„ ์‹œ๊ฐ„์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๋ฒˆ์งธ ์„œ๋ฒ„

์ €๋Š” ์ด๋ฏธ 48๊ฐœ์˜ ํ”„๋กœ์„ธ์„œ์™€ 128GB์˜ RAM์„ ๊ฐ–์ถ˜ ๋‹ค๋ฅธ ์„œ๋ฒ„๋ฅผ ๊ฐ€์ ธ๊ฐ”์Šต๋‹ˆ๋‹ค. ์กฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜๋ฅผ 60์œผ๋กœ ์„ค์ •ํ•˜๊ณ  ํ—ˆ์šฉ ๊ฐ€๋Šฅํ•œ ์„ฑ๋Šฅ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์‹ค์ œ๋กœ ์ด๋Š” ์ด๋ฏธ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•˜๋Š” ์ƒ์‚ฐ์„ฑ์˜ ํ•œ๊ณ„์ž…๋‹ˆ๋‹ค.

TimescaleDB. 80NVPS

๋‚˜์˜ ์ฃผ์š” ์ž„๋ฌด๋Š” Zabbix ๋กœ๋“œ์— ๋Œ€ํ•ด TimescaleDB์˜ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ดˆ๋‹น 80๊ฐœ์˜ ๊ฐ’์€ ๋งŽ๊ณ  ์ธก์ •ํ•ญ๋ชฉ ์ˆ˜์ง‘ ๋นˆ๋„(๋ฌผ๋ก  Yandex ์ œ์™ธ)์™€ ์ƒ๋‹นํžˆ ํฐ "์„ค์ •"์ž…๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

๋ชจ๋“  ๊ทธ๋ž˜ํ”„์—๋Š” ํ•˜๋ฝ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜์ž…๋‹ˆ๋‹ค. Zabbix ์„œ๋ฒ„์— ์žฅ์• ๊ฐ€ ๋ฐœ์ƒํ•œ ํ›„ ๊ธฐ๋ก ๋™๊ธฐํ™” ์žฅ์น˜์˜ ๋กœ๋”ฉ ํ”„๋กœํ•„์ด ๋งŽ์ด ๋ณ€๊ฒฝ๋˜์–ด ์„ธ ๋ฒˆ ๋–จ์–ด์กŒ์Šต๋‹ˆ๋‹ค.

TimescaleDB๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฑฐ์˜ 3๋ฐฐ ๋น ๋ฅด๊ฒŒ ์‚ฝ์ž…ํ•˜๊ณ  HistoryCache๋ฅผ ๋œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์ ์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

TimescaleDB. 120NVPS

๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ฐ์ดํ„ฐ ์š”์†Œ ์ˆ˜๋ฅผ 500๋งŒ ๊ฐœ๋กœ ๋Š˜๋ ธ์Šต๋‹ˆ๋‹ค. ์ฃผ์š” ์ž‘์—…์€ TimescaleDB์˜ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๋Š” ๊ฒƒ์ด์—ˆ๊ณ  ์ดˆ๋‹น 125๊ฐœ์˜ ๊ฐ’์œผ๋กœ ๊ณ„์‚ฐ๋œ ๊ฐ’์„ ๋ฐ›์•˜์Šต๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์ด๊ฒƒ์€ ์˜ค๋žซ๋™์•ˆ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘๋™ "์„ค์ •"์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‚ด ๋””์Šคํฌ๊ฐ€ 1,5TB์— ๋ถˆ๊ณผํ•ด์„œ ๋ฉฐ์น  ๋งŒ์— ๋‹ค ์ฐผ์–ด์š”.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๋™์‹œ์— ์ƒˆ๋กœ์šด TimescaleDB ํŒŒํ‹ฐ์…˜์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ์„ฑ๋Šฅ์ƒ ์ „ํ˜€ ๋ˆˆ์— ๋„์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด MySQL์—์„œ ํŒŒํ‹ฐ์…˜์ด ์ƒ์„ฑ๋˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ์ผ๋ฐ˜ ์‚ฝ์ž…์„ ์ฐจ๋‹จํ•˜๊ณ  ํ…Œ์ด๋ธ” ์ž‘์—…์„ ํ•˜๋ฉฐ ์„œ๋น„์Šค ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐค์— ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. TimescaleDB์˜ ๊ฒฝ์šฐ๋Š” ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ๋งŽ์€ ๊ทธ๋ž˜ํ”„ ์ค‘ ํ•˜๋‚˜๋ฅผ ๋ณด์—ฌ ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์—์„œ๋Š” TimescaleDB๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด ํ”„๋กœ์„ธ์„œ์—์„œ io.weight๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๋ถ€ํ•˜๊ฐ€ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ํ”„๋กœ์„ธ์Šค ์š”์†Œ์˜ ์‚ฌ์šฉ๋„ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์ด๊ฒƒ์€ SSD๊ฐ€ ์•„๋‹Œ ์ผ๋ฐ˜ ํŒฌ์ผ€์ดํฌ ๋””์Šคํฌ์˜ ์ผ๋ฐ˜ ๊ฐ€์ƒ ๋จธ์‹ ์ž…๋‹ˆ๋‹ค.

๊ณ ์„ฑ๋Šฅ ๋ฐ ๊ธฐ๋ณธ ํŒŒํ‹ฐ์…”๋‹: TimescaleDB๋ฅผ ์ง€์›ํ•˜๋Š” Zabbix

์กฐ์‚ฌ ๊ฒฐ๊ณผ

TimescaleDB๋Š” ์†Œ๊ทœ๋ชจ "์„ค์ •"์— ์ ํ•ฉํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค., ์ด๋Š” ๋””์Šคํฌ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋นจ๋ฆฌ ํ•˜๋“œ์›จ์–ด๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋  ๋•Œ๊นŒ์ง€ ๊ณ„์†ํ•ด์„œ ์›ํ™œํ•˜๊ฒŒ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TimescaleDB๋Š” ๊ตฌ์„ฑ์ด ์‰ฝ๊ณ  ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์ œ๊ณตํ•˜๋ฉฐ Zabbix ๋ฐ PostgreSQL์— ๋น„ํ•ด ์žฅ์ ์ด ์žˆ์Œ.

PostgreSQL์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ณ€๊ฒฝํ•  ๊ณ„ํš์ด ์—†๋‹ค๋ฉด ๋‹ค์Œ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. Zabbix์™€ ํ•จ๊ป˜ TimescaleDB ํ™•์žฅ๊ณผ ํ•จ๊ป˜ PostgreSQL ์‚ฌ์šฉ. ์ด ์†”๋ฃจ์…˜์€ ์ค‘๊ฐ„ ์ˆ˜์ค€์˜ "์„ค์ •"๊นŒ์ง€ ํšจ๊ณผ์ ์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

"๊ณ ์„ฑ๋Šฅ"์ด๋ผ๊ณ  ํ•˜๋ฉด HighLoad ++. ์ˆ˜๋ฐฑ๋งŒ ๋ช…์˜ ์‚ฌ์šฉ์ž์—๊ฒŒ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ์ˆ ๊ณผ ๊ด€ํ–‰์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ธฐ ์œ„ํ•ด ์˜ค๋ž˜ ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก ๋ณด๊ณ ์„œ 7์›” 8์ผ๊ณผ XNUMX์ผ์— ๋Œ€ํ•ด์„œ๋Š” ์ด๋ฏธ ํŽธ์ง‘ํ–ˆ์ง€๋งŒ ์—ฌ๊ธฐ์„œ๋Š” ๋ชจ์ž„ ๋” ๋งŽ์€ ๊ฒƒ์„ ์ œ์•ˆํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ์˜ ๊ตฌ๋… ๋‰ด์Šค ๋ ˆํ„ฐ ะธ ์ „๋ณด์—์„œ ๋‹ค๊ฐ€์˜ค๋Š” ์ปจํผ๋Ÿฐ์Šค์˜ ํŠน์ง•์„ ๊ณต๊ฐœํ•˜๊ณ  ์ด๋ฅผ ์ตœ๋Œ€ํ•œ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ด…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

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