Grafana: ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ๊ฐ’์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๋งคํ•‘ ํ—ˆ์šฉ -> ํ…์ŠคํŠธ ํ‘œ์‹œ

์— ๋งŒ๋“  2014๋…„ 11์›” 07์ผ  ยท  145์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: grafana/grafana

์‚ฌ์šฉ ์‚ฌ๋ก€: 'ID' ์†์„ฑ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฉ”ํŠธ๋ฆญ์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ์„ ํƒ UI๊ฐ€ ๋” ์ธ๊ฐ„ ์นœํ™”์ ์ธ ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๋ถ€ ๋„๋ฉ”์ธ ID๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋„๋ฉ”์ธ๋ณ„๋กœ ๋ฉ”ํŠธ๋ฆญ์„ ์ถ”์ ํ•˜์ง€๋งŒ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ์„ ํƒ๊ธฐ UI์—์„œ ๋„๋ฉ”์ธ์˜ URL์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

@torkelo ๋‚˜๋Š” ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐ ์ปท์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌํ˜„์— ๋Œ€ํ•œ ๋‹น์‹ ์˜ ์ƒ๊ฐ์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๋‚ด ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ ์กฐํšŒ๋ฅผ ์œ„ํ•ด ์™ธ๋ถ€ ์„œ๋น„์Šค๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ž„์˜์˜ JS ํ•จ์ˆ˜๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๊ฐ’ -> ํ…์ŠคํŠธ ๋ณ€ํ™˜์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐ ๊ตฌํ˜„์€ ๋งคํ•‘ ๊ธฐ๋Šฅ์„ ์ •์˜ํ•˜๋Š” ๋Œ€์‹œ๋ณด๋“œ JSON์— ๊ตฌ์„ฑ ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฏธ๋ฆฌ ๋นŒ๋“œ๋œ ๋งคํ•‘ ๊ธฐ๋Šฅ(์˜ˆ: ์ •๊ทœ์‹ ๋Œ€์ฒด)์œผ๋กœ ๋” ๊ฐ„๋‹จํ•œ ๋งคํ•‘์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด UI ์ง€์›์„ ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ UI๋ฅผ ํ†ตํ•ด ์ „์ฒด ๋Œ€์‹œ๋ณด๋“œ JSON์„ ํŽธ์ง‘ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์ด์— ์—ฐ๊ฒฐ๋˜์ง€๋งŒ ์–ด๋ ค์šด ๊ฒƒ์œผ๋กœ ํŒ๋ช…๋˜๋ฉด ๋‚ด๋ณด๋‚ด๊ธฐ -> ํŽธ์ง‘ -> ๊ฐ€์ ธ์˜ค๊ธฐ๊ฐ€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

aredashboard aredashboartemplating typfeature-request

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@thinrope ์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์šฐ์•„ํ•œ ์ˆ˜์ •์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž ์ง€์ • ๋ณ€์ˆ˜์—์„œ JSON์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๋ณ€์ˆ˜ ์œ ํ˜•์ด "JSON"์ธ ๊ฒฝ์šฐ ํ•ดํ‚น ์—†์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹จ์ ์€ ์—†์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  145 ๋Œ“๊ธ€

์Šคํฌ๋ฆฝํŒ…๋œ ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ผ๋ฐ˜/์ €์žฅ๋œ json ๋Œ€์‹œ๋ณด๋“œ์— ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ์‹œ๋„ํ•˜๋Š” ๊ฒƒ์„ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.

+1

๋‚˜๋„ ์ด๊ฒƒ์˜ ์ ์–ด๋„ ๊ฐ„๋‹จํ•œ ๋ฒ„์ „์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. A -> B์—์„œ ๊ตฌ์„ฑ๋œ ๋งคํ•‘๊ณผ ๊ฐ™์€ ๊ฒƒ

๋‚ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” ๋ณ€์ˆ˜ ๋“œ๋กญ๋‹ค์šด(CustomerName1, CustomerName2 ๋“ฑ)์—์„œ ์—”ํ„ฐํ‹ฐ ์ด๋ฆ„์„ ์„ ํƒํ•˜๊ณ  ์‹ถ์ง€๋งŒ ๋ฉ”ํŠธ๋ฆญ ์ด๋ฆ„๊ณผ ๊ด€๋ จํ•˜์—ฌ ๋‚ด๋ถ€์ ์œผ๋กœ ์ˆซ์ž ID๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
app.requests.$customer1_ID.count

+1

#3138์—์„œ ๋ณ‘ํ•ฉ

์˜ˆ๋ฅผ ๋“ค์–ด fooBar ๋ฐ baz_quuxInternal ๊ฐ’์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ UI๊ฐ€ "Foo bar" ๋ฐ "Baz"๋กœ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ์ค‘๋ณต์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋˜๋Š” ํ–‰๊ณผ ๋งž์ถค ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ํŠนํžˆ ์ผ๋ฐ˜์ ์ด์ง€๋งŒ ์ตœ์ƒ์œ„ ์ธก์ •ํ•ญ๋ชฉ์€ ์‚ฌ์šฉ์ž์—๊ฒŒ ์นœ์ˆ™ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์˜ˆ๋ฅผ ๋“ค์–ด, ํ‘์—ฐ ์ฟผ๋ฆฌ๊ฐ€ ํ…œํ”Œ๋ฆฟ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด kafka.messagesByTopic.myservice_* ๋ฅผ ํ™•์žฅํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ ‘๋‘์‚ฌ๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ๋ฅผ ์›ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์‹ค์ œ ํŒจ๋„์—์„œ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ ‘๋‘์‚ฌ๋ฅผ ํฌํ•จํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜๊ฐ€ ๋ฉ”ํŠธ๋ฆญ ์†์„ฑ์— ํฌํ•จ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ (Grafana 2.x ์ด์ƒ์—์„œ) ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ชจ๋“  ํŒจ๋„๊ณผ ํ–‰์˜ ๋ชจ๋“  โ€‹โ€‹๋ฉ”ํŠธ๋ฆญ์—์„œ ์ ‘๋‘์‚ฌ๋ฅผ ํ•˜๋“œ์ฝ”๋”ฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”ผํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ "๋ ˆ์ด๋ธ”" ๊ฐ’์ด ์กด์žฌํ•˜๋ฉด ํŒจ๋„ ๋‚ด๋ถ€์—์„œ๋„ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ–‰ ๋ฐ/๋˜๋Š” ํŒจ๋„ ์ œ๋ชฉ์— ๋ณ€์ˆ˜๋ฅผ ํฌํ•จํ•  ๋•Œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ ˆ์ด๋ธ”์„ ์‚ฌ์šฉํ•˜๋„๋ก ๋งŒ๋“ค๊ฑฐ๋‚˜(์ œ๋ชฉ ํ•„๋“œ์— ํฌํ•จ๋œ ๊ฒฝ์šฐ) ๋Œ€์ฒด ๊ตฌ๋ฌธ(์˜ˆ: $$Variable ๋˜๋Š” ๊ธฐํƒ€)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

http://play.grafana.org/dashboard/db/test?editview=templating ์€ "๋ณ€์ˆ˜ ๋ ˆ์ด๋ธ”"์„ ์˜ต์…˜์œผ๋กœ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

ํŽธ์ง‘: ๋ฒ„๊ทธ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค! :) ๊ณ„์†ํ•˜์‹ญ์‹œ์˜ค.

๊ทธ๊ฒƒ์€ ๋ณ€์ˆ˜ ๊ฐ’์ด ์•„๋‹ˆ๋ผ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์นœ์ˆ™ํ•œ ์ด๋ฆ„์„ ๊ฐ–๋Š” ์˜ต์…˜์ผ ๋ฟ์ž…๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

+1

์ด ์ƒํƒœ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

3.0 ํŒŒ์ด๋„์—์„œ ๊ฐ€๋Šฅํ•œ๊ฐ€์š”?
๋งŽ์€ ๋ถ„๋“ค์ด ๊ธฐ๋‹ค๋ฆฌ์‹œ๋Š” ๊ธฐ๋Šฅ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋ฅผ ํฌํ•จํ•ด์„œ :-)

+1
๋‚˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋”์ฐํ•ด ๋ณด์ด๋Š” ์ •๊ทœ ํ‘œํ˜„์‹์˜ ์ผ๋ถ€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

+1

+1

+1
์ด๊ฒƒ์ด ์—†์œผ๋ฉด ์ •๊ทœ ํ‘œํ˜„์‹์€ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

+1

@mbell697 @torkelo

Grafana๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‚ด๋ถ€ ์„œ๋น„์Šค๋ฅผ ์œ„ํ•ด ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜ธ์ŠคํŠธ์— uuid๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ(ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•ด๋„ ๋ฉ”ํŠธ๋ฆญ ๊ธฐ๋ก ๋ฐ ๊ธฐํƒ€ ์—ฌ๋Ÿฌ ์‚ฌํ•ญ์ด ์†์‹ค๋˜์ง€ ์•Š์Œ) ์ด๋Ÿฌํ•œ uuid๋ฅผ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. uuid ๊ฐ’์„ ๊ฐ์ง€ํ•˜๊ณ  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ http ๋์ ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€ํ™˜ํ•˜๋Š” ์‚ฌ์šฉ ์‚ฌ๋ก€์— ๋Œ€ํ•ด ํŠน์ • ํŒจ์น˜๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ด๊ณ  ํ—ˆ์šฉ๋˜๋Š” ์—…์ŠคํŠธ๋ฆผ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค.

๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” URL์„ ๊ฐ€๋ฆฌํ‚ค๋Š” 'variable_translation_url' ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๊นŒ? (ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์„ ํƒ์  ์ธ์ฆ ํ† ํฐ ์‚ฌ์šฉ) ๋˜๋Š” ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๊ณ  ๋ฒˆ์—ญ์ด ํ•„์š”ํ•œ ์ง€์ ์—์„œ templateValuesSrv.js์— ํ›„ํฌํ•  ์ˆ˜ ์žˆ๋Š” javascript src๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” variable_translation_script(ํ•ด๋‹น ์˜ต์…˜์ด ์„ค์ •๋œ ๊ฒฝ์šฐ) ?

templateValuesSrv.js ์ฝ”๋“œ๋ฅผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ์‹ถ๋‹ค.

@ZhuWanShan ์ด๊ฒƒ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

https://github.com/sangoma/grafana/commit/fa109c23bc92c3121173579afbd87a04d7e2f523

๊ฑฐ๊ธฐ์— 2๊ฐ€์ง€ ์ ‘๊ทผ ๋ฐฉ์‹์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด HTTP URL์„ ๊ฐ€๋ฆฌํ‚ค๋Š” '์ฟผ๋ฆฌ' ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ๋กœ์šด ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ์œ ํ˜• 'http'๋ฅผ ๋„์ž…ํ•˜์—ฌ ๋ณด๋‹ค ์ผ๋ฐ˜์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค(_getHttpVariableOptions ์ฐธ์กฐ). ๋‚˜์ค‘์— ์˜ต์…˜ ํ…์ŠคํŠธ(ํ‘œ์‹œ ๊ฐ’)๊ฐ€ UUID ์ •๊ทœ์‹๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ๊ฐ์ง€ํ•˜๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” /api/v1/nodes/grafana-hosts/์— ๋Œ€ํ•œ ํ•˜๋“œ ์ฝ”๋”ฉ๋œ HTTP ํ˜ธ์ถœ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ๋ณ€์ˆ˜๋ฅผ ๊ฐ•์ œ๋กœ ๋งคํ•‘ํ•˜๋Š” ๋‘ ๋ฒˆ์งธ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์˜ต์…˜์˜ ๋งคํ•‘. ๊ทธ๊ฒƒ์€ ์ง€๊ธˆ๊นŒ์ง€ ์ž˜ ์ž‘๋™ํ–ˆ์œผ๋ฉฐ ์ด๊ฒƒ์„ ์ผ๋ฐ˜ ๋ฐฉ๋ฒ•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ง€์นจ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

+1

+1

๊ด€์‹ฌ ์žˆ๋Š” ์‚ฌ๋žŒ์€ Simple JSON Datasource ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, ํ”Œ๋Ÿฌ๊ทธ์ธ์€ ํ˜„์žฌ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ์ฟผ๋ฆฌ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์ง€๋งŒ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋‚ด pull ์š”์ฒญ ์ด ๋งˆ์Šคํ„ฐ์— ๋ณ‘ํ•ฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์—…๋ฐ์ดํŠธ๋œ Grafana.net ๋ฆด๋ฆฌ์Šค๊ฐ€ ์–ด๋Š ์‹œ์ ์— ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด Grafana์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ HTTP ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•๋งŒ ๊ตฌํ˜„ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ ๊ธฐ๋ฐ˜ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด HTTP ๋์ ์€ /search API ์š”์ฒญ์„ ์ˆ˜์‹ ํ•˜๊ณ  ๋ณธ๋ฌธ์€ { "target": "{template query content here}" } ํ˜•์‹์˜ JSON ๊ฐœ์ฒด๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์›ํ•˜๋Š” ๋Œ€๋กœ ์ฟผ๋ฆฌ ๋‚ด์šฉ์„ ๊ตฌ๋ฌธ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋์ ์—์„œ ๊ฐ’ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๋ฉด ๋‹ค์Œ ํ˜•์‹์œผ๋กœ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ๊ฐ’ ["custom value 1", "custom value 2"] ์˜ ๊ธฐ๋ณธ ๋ชฉ๋ก์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. [{ "text": "custom value 1", value: 0 }] ์—ฌ๊ธฐ์„œ text ์†์„ฑ์€ ๋ฐฐ์—ด ํ•ญ๋ชฉ๋‹น ๋ฐ˜ํ™˜๋œ ๊ฐ’์ž…๋‹ˆ๋‹ค. value ์†์„ฑ์€ ๋ฐ˜ํ™˜ ๋ฐฐ์—ด์— ์žˆ๋Š” ๋ณ€์ˆ˜์˜ ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค.

๋˜๋Š” ํ…์ŠคํŠธ/๊ฐ’ ๊ฐœ์ฒด ๋ฐฐ์—ด [{ "text": "label", "value": 123 }] ์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Grafana๋Š” text ์†์„ฑ์„ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜์˜ ๋ ˆ์ด๋ธ”๋กœ ์‚ฌ์šฉํ•˜๊ณ  value ์†์„ฑ์„ ์›์‹œ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜.

์ •๊ทœ์‹ ํ˜•์‹์˜ ์ฟผ๋ฆฌ์— ๋‹ค๋ฅธ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜๋ฅผ ๋™์ ์œผ๋กœ ์ฃผ์ž…ํ•˜๊ณ  ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ๋™์ ์œผ๋กœ ๋์ ์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ์‚ฌ๋žŒ์ด๋‹ค.

+1

+1

+1

+1

+1

+1

+1000

+1

+2

์ด ์žˆ์œผ๋ฉด ๋งค์šฐ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ด๋ฆ„๊ณผ uuid๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง„ ๊ฐœ์ฒด๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„์„ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ์ง€๋งŒ uuid๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ฟผ๋ฆฌ(๊ธฐ์กด): SHOW TAG VALUES FROM "vcd_vm" WITH KEY = "uuid" ์—ฌ๊ธฐ์„œ "OrgVdc" =~ /^$vDC$/)

๋ ˆ์ด๋ธ”(์‹ ๊ทœ): "vcd_vm" WITH KEY = "name"์˜ ํƒœ๊ทธ ๊ฐ’ ํ‘œ์‹œ(์—ฌ๊ธฐ์„œ "uuid" =~ /^$tag$/)

+1

+1

+1

+1

+1

+1

+1

'์‚ฌ์šฉ์ž ์ •์˜' ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜๊ฐ€ '๊ฐ’' ๋ชฉ๋ก๊ณผ '๋ ˆ์ด๋ธ”' ๋ชฉ๋ก(๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉ์ž ์ •์˜ ํ•ด์‹œ/๋”•์…”๋„ˆ๋ฆฌ)์„ ๋ชจ๋‘ ์ž…๋ ฅ์œผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

+1

+1

์ด๋Š” ๊ณต์‹ Cloudwatch ๋‚ด๋ณด๋‚ด๊ธฐ์—์„œ ๋‚ด๋ณด๋‚ธ AWS CloudFront ๋ฐ์ดํ„ฐ์— ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. CloudFront์˜ ๋ฐ์ดํ„ฐ๋Š” ์‚ฌ๋žŒ์ด ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ID๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜ํ”„๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ์ธ๊ฐ„์ด "EAUUWLGUQEPFWV; EVWWU9PGWIB" ๋Œ€์‹  "foo.example.com; bar.example.com"์„ ๋ณด๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ์‰ฝ์Šต๋‹ˆ๋‹ค...

+1

๋จผ์ € ๋ฉ‹์ง„ ์ œํ’ˆ์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์ „ ์„ธ๊ณ„์™€ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ด๊ฒƒ์ด ์•ž์œผ๋กœ ๋ช‡ ๋‹ฌ ์•ˆ์— ๊ตฌํ˜„๋  ๊ฐ€๋Šฅ์„ฑ์— ๋Œ€ํ•œ ์•”์‹œ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ์ €๋Š” ๊ณ„์†ํ•ด์„œ @meverett ์˜ ์ œ์•ˆ๋œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ์ด๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ์–ด๋Š ์ •๋„ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š”์ง€ ๊ฐ€๋Š ํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

HTTP ๋์ ์„ ํ†ตํ•ด ์ด๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ด ๋ฌธ์ œ์˜ ๊ณ ๋„๋กœ ์ผ๋ฐ˜ํ™”๋œ ๋ฒ„์ „์— ๋Œ€ํ•œ ๊น”๋”ํ•œ ์†”๋ฃจ์…˜์ด์ง€๋งŒ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ฒƒ์ด ์ ๋‹นํ•œ ์ˆ˜์˜ "์นœ์ˆ™ํ•œ ํ‘œ์‹œ ์ด๋ฆ„" -> "์นœ์ ˆํ•˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„" ์Œ.

@svet-b fwiw, ์šฐ๋ฆฌ๋Š” @meverett ์˜ ์ œ์•ˆ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์˜ฎ๊ฒผ๊ณ  ๊ณ ํ†ต์Šค๋Ÿฝ์ง€ ์•Š๊ณ  ๊นจ๋—ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๊ตฌ์ถ•ํ•˜๋Š” ๋ฐ ๋ช‡ ์‹œ๊ฐ„์ด๋ฉด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

+1

@meverett ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๊ฝค ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ ๋‹ค์ค‘ ๊ฐ’ ๋ณ€์ˆ˜์™€ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๋•Œ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค. ์‹œ๋ฆฌ์ฆˆ๋Š” (๋‚ด ๊ฒฝ์šฐ์—๋Š”) influxdb์˜ ํƒœ๊ทธ๋กœ๋งŒ ๋ ˆ์ด๋ธ”์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ œ์•ˆ ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ? :)

+1

+1

+1

+1

+1

์•ˆ๋…•ํ•˜์„ธ์š”, ์ด ๋ฌธ์ œ๋Š” ๊ฝค ์ •๊ธฐ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์œ„์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉ ํ•˜๋Š” ์˜ˆ์ œ Node.js ์›น ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ํ•จ๊ป˜ ๋„ฃ๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

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

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ด๋ฅผ ์‹œ์ž‘์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์›ํ•˜๋Š” ์†Œ์Šค(๋ฌผ๋ก  ์‚ฌ์šฉ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•จ)์—์„œ ์•จ๋ฆฌ์–ด์‹ฑ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๋„๋ก ํ™•์žฅํ•˜๊ณ  SimpleJson ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ์•ฑ์„ ํ†ตํ•ด ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ์•จ๋ฆฌ์–ด์‹ฑ/๋งคํ•‘์„ ๊ตฌ๋™ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ ์›น ์•ฑ์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋Š” ์—ฌ๊ธฐ ์— ์žˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜ ์„ค์ •์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ง€์›/์„ค๋ช…์„ ์š”์ฒญํ•˜๋Š” ์š”์ฒญ์ด ๊ฐ€๋” ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฑด๋ฐฐ

+1

+1

์ž„์‹œ ์†”๋ฃจ์…˜ @meverett ์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์†”๋ฃจ์…˜์„ ์‹คํ–‰ํ•  Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด Dockerfile์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๋นŒ๋“œ ์‹œ Dockerfile๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ์ž ์ •์˜ data.json ๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก ์„ค์ •๋ฉ๋‹ˆ๋‹ค. ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

https://github.com/shirakaba/GrafanaSimpleJsonValueMapper-docker

๏ผ‹1

+1

+1

์ด๊ฒƒ์„ +1ํ•˜๋ ค๋ฉด ํ˜„์žฌ ์ด ๋ฌธ์ œ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ๋Š” 74๋ช…์„ ์งœ์ฆ๋‚˜๊ฒŒ ํ•  ๊ฒƒ์ด๋ฉฐ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋‚˜์„œ์„œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๊ณ  ์žˆ๋‹ค๋Š” ์ ์„ ๋ช…์‹ฌํ•˜์‹ญ์‹œ์˜ค.
GitHub๋Š” ์ด์œ  ๋•Œ๋ฌธ์— ๋ฐ˜์‘์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค ...

+1

+1

+1

์ด๊ฒƒ์€ ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๊ธด ์ˆซ์ž ๊ฐ’ ๋ชฉ๋ก์ด ์žˆ์ง€๋งŒ ๊ฐ’ ์ž์ฒด๋ณด๋‹ค ๊ฐ๊ฐ์— ๋Œ€ํ•ด ์‚ฌ๋žŒ์—๊ฒŒ ์นœ์ˆ™ํ•œ ๋ ˆ์ด๋ธ”์„ ํ‘œ์‹œํ•˜๋Š” ๊ฒƒ์ด ํ›จ์”ฌ ๋” ์ข‹์Šต๋‹ˆ๋‹ค.
๋ณ€์ˆ˜: myListOfLongs {์ด๋ฆ„: ๋„์š”ํƒ€ ๊ฐ’: 122321312332, ์ด๋ฆ„: ๋ฅด๋…ธ ๊ฐ’: 6666666}

+1!

+1

+1
#11534์— ๋Œ€ํ•œ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ(๋ฐ˜๋ณต๋œ ํŒจ๋„/ํ–‰์„ ์‚ฌ์šฉํ•  ๋•Œ ๋™์  ์ œ๋ชฉ ํ—ˆ์šฉ)

+1

+111111

+1

+1

+1, ์ด ๊ธฐ๋Šฅ์ด ๋งค์šฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

+1

+1

+1

+1

+1

์ด๊ฒƒ์€ MySql ๋ฐ PostgreSQL์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ํ‚ค/๊ฐ’ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋Š” __text ๋ฐ __value๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์—ด์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. __text ์—ด ๊ฐ’์€ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ณ ์œ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด ์‚ฌ์šฉ๋จ). ๋“œ๋กญ๋‹ค์šด์˜ ์˜ต์…˜์—๋Š” ์นœ์ˆ™ํ•œ ์ด๋ฆ„์„ ํ…์ŠคํŠธ๋กœ, id๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ์™€ ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. hostname์„ ํ…์ŠคํŠธ๋กœ, id๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ ์˜ˆ์‹œ:

SELECT hostname AS __text, id AS __value FROM my_host

http://docs.grafana.org/features/datasources/mysql/#query -๋ณ€์ˆ˜

๋งž์ถค ๋ณ€์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

[{
        "__text": "Server 1",
        "__value": 1
    },
    {
        "__text": "Server 2",
        "__value": 2
    }
]

JSON์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@johnymachine ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค! PostgreSQL ๋ฐ์ดํ„ฐ ์†Œ์Šค์™€ ์ž˜ ์–ด์šธ๋ ธ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์˜ ํ™•์žฅ์œผ๋กœ ๋ณ€์ˆ˜์˜ __text ์„น์…˜์„ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๊ฒƒ์€ ๊ทธ๋ž˜ํ”„๋ฅผ ๋ฐ˜๋ณตํ•  ๋•Œ ์ •๋ง ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @MGinshe , ์ด๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค(ํ…์ŠคํŠธ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•จ).

image

ํŽธ์ง‘: ์ด ๋ฒ„๊ทธ์˜ ์ดˆ๊ธฐ ์ปจํ…์ŠคํŠธ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ–ˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜ ์ฃผ์„์„ ๋ฌด์‹œํ•˜์‹ญ์‹œ์˜ค. #9292๋ฅผ ์œ„ํ•œ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

@torkelo @nmaniwa

https://github.com/grafana/grafana/pull/12609 ๋Š” ๋Œ€๋ถ€๋ถ„์˜ ์‚ฌ๋žŒ๋“ค์ด ์—ฌ๊ธฐ์—์„œ ์š”๊ตฌํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๊ฒƒ์ด ๋‹ซํ˜€ ์žˆ๊ณ  ๋ณ‘ํ•ฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ?

์•„๋‹ˆ์š”, ๊ทธ ๋ฌธ์ œ๋Š” ์™„์ „ํžˆ ๋‹ค๋ฅธ ๋ฌธ์ œ์— ๊ด€ํ•œ ๊ฒƒ์ž…๋‹ˆ๊นŒ, ์•„๋‹ˆ๋ฉด ์ž˜๋ชป๋œ ๋ฌธ์ œ์— ์—ฐ๊ฒฐํ–ˆ์Šต๋‹ˆ๊นŒ?

์•„์ง๋„ ์ด๊ฒƒ์— ๋Œ€ํ•œ ์†Œ์‹์ด ์—†์Šต๋‹ˆ๊นŒ? ์ž, ์šฐ๋ฆฌ๋Š” 2018 ๋…„์ž…๋‹ˆ๋‹ค !! ๊ฐ์‚ฌ ํ•ด์š”!

@dmayan @johnymachine ์ด ๋‹ต๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ MySql ๋ฐ PostgreSQL์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ํ‚ค/๊ฐ’ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ๋Š” __text ๋ฐ __value๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์—ด์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. __text ์—ด ๊ฐ’์€ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ณ ์œ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์ด ์‚ฌ์šฉ๋จ). ๋“œ๋กญ๋‹ค์šด์˜ ์˜ต์…˜์—๋Š” ์นœ์ˆ™ํ•œ ์ด๋ฆ„์„ ํ…์ŠคํŠธ๋กœ, id๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ์™€ ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. hostname์„ ํ…์ŠคํŠธ๋กœ, id๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ ์˜ˆ์‹œ:

SELECT hostname AS __text, id AS __value FROM my_host

http://docs.grafana.org/features/datasources/mysql/#query -๋ณ€์ˆ˜

๋งž์ถค ๋ณ€์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

[{
      "__text": "Server 1",
      "__value": 1
  },
  {
      "__text": "Server 2",
      "__value": 2
  }
]

JSON์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” MySQL์ด๋‚˜ PostgreSQL์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ Grafana ๊ธฐ๋Šฅ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์•„๋‹ˆ๋‹ค
์ผ์ข…์˜ ํ•ดํ‚น.

๊ฐ์‚ฌ ํ•ด์š”!

El jue., 9์›” 27์ผ 2018๋…„ 05:52, ๋ฌดํ•˜๋งˆ๋“œ ํ—จ๋“œ๋ฆฌ ์•Œ๋ฆผ @github.com
๊ธฐ๋ก:

@dmayan https://github.com/dmayan ๋‹ต๋ณ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ MySql ๋ฐ PostgreSQL์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋˜ ๋‹ค๋ฅธ ์˜ต์…˜์€ ํ‚ค/๊ฐ’ ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ์ฟผ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ฟผ๋ฆฌ
__text ๋ฐ __value๋ผ๋Š” ๋‘ ๊ฐœ์˜ ์—ด์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. __ํ…์ŠคํŠธ
์—ด ๊ฐ’์€ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(๊ณ ์œ ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์€
์‚ฌ์šฉ ๋œ). ๋“œ๋กญ๋‹ค์šด์˜ ์˜ต์…˜์—๋Š” ๋‹ค์Œ์„ ํ—ˆ์šฉํ•˜๋Š” ํ…์ŠคํŠธ์™€ ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค.
์นœ์ˆ™ํ•œ ์ด๋ฆ„์„ ํ…์ŠคํŠธ๋กœ, id๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ
ํ˜ธ์ŠคํŠธ ์ด๋ฆ„์„ ํ…์ŠคํŠธ๋กœ, id๋ฅผ ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ:

SELECT ํ˜ธ์ŠคํŠธ ์ด๋ฆ„ AS __ํ…์ŠคํŠธ, ID AS __๊ฐ’ FROM my_host

http://docs.grafana.org/features/datasources/mysql/#query -๋ณ€์ˆ˜

๋งž์ถค ๋ณ€์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค.

[{
"__text": "์„œ๋ฒ„ 1",
"__๊ฐ’": 1
},
{
"__ํ…์ŠคํŠธ": "์„œ๋ฒ„ 2",
"__๊ฐ’": 2
}
]

JSON์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ์œ ํ˜•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

โ€”
๋‹น์‹ ์ด ์–ธ๊ธ‰๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๊ฒƒ์„ ๋ฐ›๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ด ์ด๋ฉ”์ผ์— ์ง์ ‘ ๋‹ต์žฅํ•˜๊ณ  GitHub์—์„œ ํ™•์ธํ•˜์„ธ์š”.
https://github.com/grafana/grafana/issues/1032#issuecomment-425011676 ,
๋˜๋Š” ์Šค๋ ˆ๋“œ ์Œ์†Œ๊ฑฐ
https://github.com/notifications/unsubscribe-auth/AWcYqEwxjXiXE07uM0ZG-A284TghEIR2ks5ufJG4gaJpZM4C4cjS
.

๊ฝค ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์ด ์™ธ๋ถ€์— ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์—์„œ ๋งŽ์€ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ‘์—ฐ์€ ํ•œ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ Graphite์—์„œ ์˜์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ grafana ๋Œ€์‹œ๋ณด๋“œ์— ์ค‘๊ตญ์–ด๋ฅผ ํ‘œ์‹œํ•˜๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์ด ํ›จ์”ฌ ๋” ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๊ธฐ๋Šฅ์ด ๊ณง ์‹คํ˜„๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ID->์ด๋ฆ„ ๋งคํ•‘์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ณ€์ˆ˜๋Š” ๊ฐ€๋Šฅํ•œ ๋ชจ๋“  ID(๊ฐ’)๋ฅผ ๋‚˜์—ดํ•˜๊ณ  ๋‘ ๋ฒˆ์งธ ๋ณ€์ˆ˜๋Š” ID์™€ ์ผ์น˜ํ•˜๋Š” ์ด๋ฆ„(ํ‘œ์‹œ ํ…์ŠคํŠธ)์„ ๋‚˜์—ดํ•ฉ๋‹ˆ๋‹ค. ์ด์ƒ์ ์ด๊ฑฐ๋‚˜ ์˜ˆ์˜์ง€๋Š” ์•Š์ง€๋งŒ ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ค‘์ฒฉ ๋ณ€์ˆ˜ ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ๋ณ€์ˆ˜ ์„ ํƒ๊ธฐ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆจ๊ธธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

+1

+1

@FdeFabricio InfluxDB๋ฅผ ์‚ฌ์šฉํ•˜์…จ์Šต๋‹ˆ๊นŒ? ๋‹ค๋ฅธ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?

@bassie1995

InfluxDB๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๊นŒ?

๋„ค

๋‹ค๋ฅธ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ๋•Œ ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ž๋™์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๊นŒ?

๋„ค

๊ทธ๋ ‡๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ฉ๋‹ˆ๊นŒ?

์ด๋ฏธ ์„ ํƒํ•œ ๊ฐ’๊ณผ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์„ ํƒํ•˜๋Š” ์ฟผ๋ฆฌ ์œ ํ˜• ๋ณ€์ˆ˜(์˜ˆ: SELECT "name" FROM playlists WHERE ("id" =~ /^$playlist_id$/) . ์ด์ œ ID๊ฐ€ ์žˆ๋Š” ๋ณ€์ˆ˜์™€ ์ด๋ฆ„์ด ์žˆ๋Š” ๋ณ€์ˆ˜)๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

@bassie1995 @FdeFabricio ์ด ์ž‘์—…์„ ๋ฐ˜๋Œ€๋กœ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์žฌ์ƒ ๋ชฉ๋ก ์ด๋ฆ„(์˜ˆ: Girl Power)์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์‹œ์  ๋ณ€์ˆ˜
  • ์ด๋ฆ„์—์„œ ์žฌ์ƒ ๋ชฉ๋ก ID๋ฅผ ์ฐพ๋Š” ์ˆจ๊ฒจ์ง„ ๋ณ€์ˆ˜(์˜ˆ SELECT "id" FROM playlists WHERE ("name" =~ /^$playlist_name$/) )

์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์ด๋ฆ„์œผ๋กœ ์žฌ์ƒ ๋ชฉ๋ก์„ ์„ ํƒํ•˜๋Š” ์˜ต์…˜์ด ํ‘œ์‹œ๋˜์ง€๋งŒ ์žฌ์ƒ ๋ชฉ๋ก ID๋Š” ์ˆจ๊ฒจ์ง‘๋‹ˆ๋‹ค. ์žฌ์ƒ ๋ชฉ๋ก ํ•ญ๋ชฉ ๋“ฑ์„ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์žฌ์ƒ ๋ชฉ๋ก ID์— ๊ณ„์† ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PostgreSQL/MySQL ๋ฐ์ดํ„ฐ ์†Œ์Šค์˜ __name ๋ฐ __value ๊ตฌ๋ฌธ์€ id->name ๋ชจํ˜ธ์„ฑ์„ ๋ฐฉ์ง€ํ•˜๊ณ  ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ ์ˆ˜๋ฅผ ์ค„์ด๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ์ „ํžˆ ์ด์ƒ์ ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๊ธฐ๋Šฅ IMO์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„์˜ @johnymachine ์˜ ์˜๊ฒฌ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋˜ ๋‹ค๋ฅธ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. ์ผ๋ถ€ ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ์ด์— ๋Œ€ํ•œ ์ง€์›์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์†Œ์Šค์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  __value ๋ฐ __text๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ๊ฒฝ์šฐ ์ƒํƒœ(์ง€๋ฆฌ์  ์ƒํƒœ)์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ ์ธ ๊ฒฝ์šฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ •์˜๋กœ ์ •์˜๋œ ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ด ๊ธฐ๋Šฅ์„ ์›ํ•˜๋Š” ์‚ฌ๋žŒ์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์ข‹์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋ฉฐ ์–ด์จŒ๋“  ๋” ๋‚˜์€ ์†”๋ฃจ์…˜์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ๋ณ€์ˆ˜ ๋ชฉ๋ก์„ ํ•œ ์œ„์น˜์— ์ €์žฅํ•˜๊ณ  ๋” ์‰ฝ๊ฒŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋‹จ์ ์€ MySQL์„ ์„ค์น˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

SELECT SingleChar AS __value, ShortName AS __text FROM TSDB. State

์ด ์†”๋ฃจ์…˜์€ ๋ฐ˜๋ณต ๊ทธ๋ž˜ํ”„, ๋ฐ˜๋ณต ํ–‰ ๋ฐ ๋ณ€์ˆ˜์— ๋‹ค์ค‘ ์„ ํƒ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. "Girl Power"๋ฅผ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•ด 2๊ฐœ์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์œ„์˜ ์˜ˆ๋Š” ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ทธ ๋ฌธ์ œ๋ฅผ ๋งŒ์ง€์ž‘ ๊ฑฐ๋ฆฌ๊ณ  ์žˆ์—ˆ๊ณ  ๋‹ค์†Œ hackinsh ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค ...
Perl ํ‘œ๊ธฐ๋ฒ•์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑ๋œ ํ•ด์‹œ๊ฐ€ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.
Perl %units = ( 'ฮผSv/h' => 1.0, 'mrem/h' => 0.1 );
๋Œ€์‹œ๋ณด๋“œ ๋ณ€์ˆ˜ Type : Custom , Values separated by comma : mrem/h, ฮผSv/h ๋ฅผ ๋งŒ๋“  ๋‹ค์Œ JSON Model ๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŽธ์ง‘ํ–ˆ์Šต๋‹ˆ๋‹ค.
JSON { "allValue": null, "current": { "tags": [], "text": "mrem/h", "value": "0.1" }, "hide": 0, "includeAll": false, "label": null, "multi": false, "name": "units", "options": [ { "selected": true, "text": "mrem/h", "value": "0.1" }, { "selected": false, "text": "ฮผSv/h", "value": "1.0" } ], "query": "mrem/h, ฮผSv/h", "skipUrlSync": false, "type": "custom" }

์ด๊ฒƒ์ด ์ž‘๋™ํ•˜๋Š” ๋™์•ˆ(์–ผ๋งˆ ๋™์•ˆ) GUI๋ฅผ ํ†ตํ•ด ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ํŽธ์ง‘ํ•˜๋ฉด ๋‹ค์‹œ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์ƒํƒœ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. :-|

๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜:

JSON ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. https://grafana.com/plugins/simpod-json-datasource ๋ฅผ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ผ๋ถ€ ์‹œ์Šคํ…œ์—์„œ๋Š” / ์ƒํƒœ ํ™•์ธ ๋์ ๊ณผ /search ๋์ ๋งŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. /search ๋์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ JSON์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [{ "text": "A Human Name", "value": "123456" }, ...] . text ์†์„ฑ์€ ๋ณ€์ˆ˜ ์„ ํƒ ๋“œ๋กญ๋‹ค์šด์— ํ‘œ์‹œ๋˜๊ณ  value ๋Š” ๋ฉ”ํŠธ๋ฆญ ์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์ƒˆ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•ด ์ฟผ๋ฆฌํ•˜๋„๋ก ๋Œ€์‹œ๋ณด๋“œ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์†Œ ํ•ด๋กญ์ง€๋งŒ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•ด target ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•  ๋‚ด์šฉ์„ ๋ฐฑ์—”๋“œ์— ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๊ฒƒ์— +1. ๋‚˜๋Š” ์ด๊ฒƒ์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ง๋กœ ์›ํ•˜์ง€๋งŒ ๋ฐฑ์—”๋“œ์— ์˜์กดํ•˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•(์šฐ๋ฆฌ๋Š” ํ‘์—ฐ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค)์„ ์›ํ•ฉ๋‹ˆ๋‹ค.

+1 ์ž‘๋™ํ•˜๋Š” ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@BlackRider97 ์œ„์˜ ์ฃผ์„์„ ์‚ดํŽด๋ณด์‹ญ์‹œ์˜ค. PostgreSQL(๊ทธ๋ฆฌ๊ณ  ์•„๋งˆ๋„ MySQL, MSSQL ๋“ฑ)์„ ์œ„ํ•œ ๋ช‡ ๊ฐ€์ง€ ์ž‘์—… ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์†”๋ฃจ์…˜ 1: https://github.com/grafana/grafana/issues/1032#issuecomment -409124505

์†”๋ฃจ์…˜ 2: https://github.com/grafana/grafana/issues/1032#issuecomment -453242766

@thinrope ์—์„œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ์ •๋ง ์šฐ์•„ํ•œ ์ˆ˜์ •์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž ์ง€์ • ๋ณ€์ˆ˜์—์„œ JSON์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฑฐ๋‚˜ ๋ณ€์ˆ˜ ์œ ํ˜•์ด "JSON"์ธ ๊ฒฝ์šฐ ํ•ดํ‚น ์—†์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‹จ์ ์€ ์—†์Šต๋‹ˆ๋‹ค.

+1 ์ด์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

+1

+1

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

์ด๊ฒƒ์„ ์‚ฌ์šฉ์ž ์ •์˜ ๊ฐ’์— ์ž…๋ ฅํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ„๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
label1:value1, value2, label3:value3, label5:value5

๋ ˆ์ด๋ธ”์€ ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. : ๊ฐ€ ๋ฌธ์ž์—ด์— ์žˆ์œผ๋ฉด : ์•ž์˜ ๋ชจ๋“  ๊ฒƒ์ด ๋ ˆ์ด๋ธ”์ด๊ณ  ๋’ค์˜ ๋ชจ๋“  ๊ฒƒ์ด ๊ฐ’์ž…๋‹ˆ๋‹ค.
, ๋ฌธ์ž์— ๋Œ€ํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ ˆ์ด๋ธ” ์ด๋ฆ„์ด๋‚˜ ๊ฐ’์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ : ๋ฅผ ์ด์Šค์ผ€์ดํ”„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ๋˜ ๋‹ค๋ฅธ ์˜ต์…˜:

JSON ๋ฐ์ดํ„ฐ ์†Œ์Šค ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. https://grafana.com/plugins/simpod-json-datasource ๋ฅผ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ์ผ๋ถ€ ์‹œ์Šคํ…œ์—์„œ๋Š” / ์ƒํƒœ ํ™•์ธ ๋์ ๊ณผ /search ๋์ ๋งŒ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. /search ๋์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ JSON์„ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. [{ "text": "A Human Name", "value": "123456" }, ...] . text ์†์„ฑ์€ ๋ณ€์ˆ˜ ์„ ํƒ ๋“œ๋กญ๋‹ค์šด์— ํ‘œ์‹œ๋˜๊ณ  value ๋Š” ๋ฉ”ํŠธ๋ฆญ ์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฐ ๋‹ค์Œ ์ด ์ƒˆ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•ด ์ฟผ๋ฆฌํ•˜๋„๋ก ๋Œ€์‹œ๋ณด๋“œ ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์†Œ ํ•ด๋กญ์ง€๋งŒ ๋ฐ์ดํ„ฐ ์†Œ์Šค์— ๋Œ€ํ•ด target ํ•„๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๋ฐ์ดํ„ฐ ์„ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ธ ๊ฒฝ์šฐ ๋ฐ˜ํ™˜ํ•ด์•ผ ํ•  ๋‚ด์šฉ์„ ๋ฐฑ์—”๋“œ์— ์•Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š”์ด ๊ตฌํ˜„์„ํ–ˆ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€๋งŒ ํŠธ๋ Œ๋“œ (๋ฒ”๋ก€) ๋ ˆ์ด๋ธ”์— ๋ถ™์–ด ์žˆ์Šต๋‹ˆ๋‹ค ... ID (์ˆซ์ž) ๋˜๋Š” ์ •์˜๋˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ง๋„ ์•ˆ๋˜๋Š” ๊ฒƒ์„ ์–ป์Šต๋‹ˆ๋‹ค.
์กฐ์–ธํ•ด์ฃผ์‹ค ์ˆ˜ ์žˆ๋‚˜์š”?

์ค‘

+1

๋‚˜๋Š” ๋˜ํ•œ ์ง€๊ธˆ ์šฐ๋ฆฌ ํšŒ์‚ฌ์˜ Grafana์—์„œ @mbell697 ์ด ์„ค๋ช…ํ•œ JSON-hack์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด์ƒํ•œ ์ •๊ทœ์‹ ๋ฌธ์ œ IMHO๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚ด ๊ฒ€์ƒ‰ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณด์ด๋Š” Graphite ์ฟผ๋ฆฌ์— ํ•„์š”ํ•œ ๊ทธ๋ฃน์„ ์ œ๊ณตํ•˜๋Š” ์ž‘์€ ํŒŒ์ด์ฌ ํ”Œ๋ผ์Šคํฌ ์•ฑ์„ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

@app.route('/search', methods=['POST'])
def search():
    data = [
        {"text": "fs-servers", "value": "{FS-server-1,FS-server-2,FS-server-3}"},
        {"text": "db-a-servers", "value": "{db-server-1,}"},
        {"text": "db-b-servers", "value": "{db-server-2,db-server-3}"}
    ]
    return jsonify(data)

๊ทธ๋ž˜์„œ ๋Œ€์‹œ๋ณด๋“œ์—์„œ json-source๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ "group"์ด๋ผ๋Š” ์ฟผ๋ฆฌ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“  ๋‹ค์Œ /fs-.*/ ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •๊ทœ์‹ ํ•„๋“œ๋กœ "fs-servers" ๊ทธ๋ฃน์„ ํ•„ํ„ฐ๋งํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ๋Œ€๋กœ - ์ฃผ์œ„๋ฅผ ๋งŒ์ง€์ž‘๊ฑฐ๋ฆฌ๋‹ค๊ฐ€ ์ •๊ทœ์‹์ด "ํ…์ŠคํŠธ" ํ•„๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ "๊ฐ’"์— ์–ด๋–ป๊ฒŒ๋“  ์ ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด๋‚˜ ์•„์ด๋””์–ด๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

+1

+1

์ด์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋Œ€ํ•œ ๋‚˜์˜ ๊ฒฌํ•ด:

์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ ๊ฐ™์€ ๊ฒƒ์˜ ๋‘ ๊ฐ€์ง€ ๋ณ€ํ˜•์„ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์€ ๋ณธ์งˆ์ ์œผ๋กœ ๋ณ„์นญ์ž…๋‹ˆ๋‹ค. ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋Œ€์‹œ๋ณด๋“œ ์†Œ์œ ์ž๋Š” ์ตœ์ข… ์‚ฌ์šฉ์ž๊ฐ€ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ๋ชฉ๋ก์„ ์‚ฌ์šฉ์ž์—๊ฒŒ ์ œ๊ณตํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ฟผ๋ฆฌ์— ์‚ฌ์šฉ๋œ ๊ฐ’์€ ๊ธฐ๋ณธ ๊ฐ’์ž…๋‹ˆ๋‹ค.

์˜ˆ 1 - ๊ฐ„๋‹จํ•œ ์ผ๋Œ€์ผ ์ด๋ฆ„ ๋ณ€ํ™˜. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ์šฐ ๋ฉ”ํŠธ๋ฆญ ๊ฐ’์œผ๋กœ ๊ฒŒ์‹œ๋œ ์ˆซ์ž ๊ตญ๊ฐ€ ์ฝ”๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆซ์ž ์ฝ”๋“œ๋ฅผ ์•”๊ธฐํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ "US" ๋˜๋Š” "Canada"๋ฅผ ํ‘œ์‹œํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

{ "๋ฏธ๊ตญ" == "01" }
{ "์บ๋‚˜๋‹ค" == "02" }

"์บ๋‚˜๋‹ค"๋ฅผ ์„ ํƒํ•œ ๊ฒฝ์šฐ ์ฟผ๋ฆฌ์— ์ „๋‹ฌ๋˜๋Š” ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ๊ฐ’์€ "02"์ž…๋‹ˆ๋‹ค.

์˜ˆ 2 - ์ผ๋Œ€๋‹ค ๋งคํ•‘์ž…๋‹ˆ๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐํฌ ๋‹จ๊ณ„๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: s0, s1, s2, s3, s4). ๊ทธ๋Ÿฌ๋‚˜ ์ตœ์ข… ์‚ฌ์šฉ์ž๋Š” ์ด๊ฒƒ์„ "dev, beta, prod"๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋งคํ•‘ํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

{ "๊ฐœ๋ฐœ์ž" == ["s1"] }
{ "๋ฒ ํƒ€" == ["s2", "s3"] }
{ "prod" == ["s4", "s5", "s6"] } ๋˜๋Š” ๋” ๋‚˜์€ ์•„์ง "prod" == s[456]

๋”ฐ๋ผ์„œ "prod"๊ฐ€ ์„ ํƒ๋˜๋ฉด "s4,s5,s6"์ด ์ฟผ๋ฆฌ์— ์ „๋‹ฌ๋ฉ๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ ์ด๋ฆ„์ด stageVar์ธ ์ฟผ๋ฆฌ ๊ด€์ (์˜ˆ์ œ 2 ์‚ฌ์šฉ)์—์„œ
๋ฉ”ํŠธ๋ฆญ ํƒœ๊ทธ ์ด๋ฆ„์€ stage:

ํ˜ธ์ถœ๊ณผ ๊ฐ™์€ aliasBy()์— ๋Œ€ํ•œ ํ•„์š”์„ฑ์€ ๊ทธ๋ฆฌ ๋งŽ์ง€ ์•Š์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋” ๋งŽ์€ ๊ฒƒ๋“ค์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
stage=~${stageVar. ๊ฐ’:์ •๊ทœ์‹ }
๋ณ„์นญ($stageVar.label)

์„ ํƒํ•œ ํ…œํ”Œ๋ฆฟ ๋ณ€์ˆ˜ ๊ฐ’์œผ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ aliasBy() ํ•จ์ˆ˜์™€ ๊ฐ™์€ ๊ฒƒ์„ ์‹œ๋„ํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋ผ๋ฉด ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. ๋‹จ์ผ ๊ฐ’์„ ๊ธฐ๋Œ€ํ•˜๋Š” ํ•จ์ˆ˜์— ์ „๋‹ฌ๋œ ๋ฐฐ์—ด์˜ ๋ณ€ํ™˜์„ ๋งˆ์ˆ ์ฒ˜๋Ÿผ ๊ณ ์น  ๊ฒƒ์ด๋ผ๊ณ ๋Š” ๊ธฐ๋Œ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋งคํ•‘์— ๊ด€ํ•ด์„œ๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์ •์ ์œผ๋กœ ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์ด์ƒ์ ์œผ๋กœ๋Š” ๋งคํ•‘ํ•ด์•ผ ํ•˜๋Š” ๊ฐ’ ๋ชฉ๋ก(์˜ˆ: "01", "02", "03")์„ ์–ป๊ธฐ ์œ„ํ•ด MT์— ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋‹ค์Œ ๋งคํ•‘/๋ณ„์นญ์„ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งคํ•‘๋˜์ง€ ์•Š์€ ๊ฐ’์€ "๊ธฐ๋ณธ" ๋ฒ„ํ‚ท์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

+1

+1

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

์œ„์—์„œ ์„ค๋ช…ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ ์œผ๋กœ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋Š” ๊ธฐ๋Šฅ์€ ํ™˜์ƒ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ ํƒ ํ•ญ๋ชฉ์„ ๋‹จ์ผ ๋˜๋Š” ๋‹ค์ค‘ ์„ ํƒ ๊ฒฐ๊ณผ์— ์ •์ ์œผ๋กœ ๋งคํ•‘ํ•˜๋Š” "์‚ฌ์šฉ์ž ์ง€์ •" ํ•„๋“œ์˜ ํ™•์žฅ ๋ฒ„์ „์ธ ๋‹จ๊ธฐ ํ•ดํ‚น(๋˜๋Š” ์˜๊ตฌ์ ์ธ "์‰ฌ์šด" ๋ชจ๋ธ)์—๋„ ๋งŒ์กฑํ•ฉ๋‹ˆ๋‹ค.

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

๋‚ด ์—ด๋ณ‘ ๊ฟˆ:
์ด๊ฒƒ์€ ๊ฐ€๋Šฅํ•œ ์ƒˆ๋กœ์šด ์œ ํ˜•์˜ ๋ณ€์ˆ˜๋กœ์„œ "์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก" ์˜ต์…˜์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž ์ง€์ • ๋ชฉ๋ก์„ ์„ ํƒํ•˜๋ฉด ๋น„์–ด ์žˆ๋Š” ์ƒํƒœ๋กœ ์‹œ์ž‘๋˜์ง€๋งŒ "์‚ฌ์šฉ์ž ์ง€์ •" ๋ชจ๋ธ์ด ์˜ค๋Š˜๋‚  ๋ณด์ด๋Š” ๊ฒƒ๊ณผ ๋งค์šฐ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. "์ถ”๊ฐ€" ๋ฒ„ํŠผ์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. "์ถ”๊ฐ€"๋ฅผ ํด๋ฆญํ•˜๋ฉด ๊ฐ๊ฐ์„ ์ฑ„์šธ ์ˆ˜ ์žˆ๋Š” "ํ‘œ์‹œ ๊ฐ’:" ๋ฐ "๊ฒ€์ƒ‰ ๊ฐ’:"์ด ์žˆ๋Š” 2๊ฐœ์˜ ํ•„๋“œ ์ž…๋ ฅ ๋ฐฐ์—ด์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. "ํ‘œ์‹œ ๊ฐ’"์€ ์‚ฌ์šฉ์ž๊ฐ€ ์„ ํƒ ๋ชฉ๋ก์— ํ‘œ์‹œํ•˜๊ณ ์ž ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ๋ก€, "๋ถ๋ฏธ". ๊ทธ๋Ÿฌ๋ฉด "๊ฒ€์ƒ‰ ๊ฐ’"์ด ์ฟผ๋ฆฌ์— ํ‘œ์‹œ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜์ง€๋งŒ ๋ถ๋ฏธ์˜ ๊ฒฝ์šฐ ์ด ์˜ˆ์—์„œ๋Š” "us,ca,mx"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์–ธ์ œ๋“ ์ง€ "์‚ญ์ œ" ์•„์ด์ฝ˜(ํœด์ง€ํ†ต?)์€ ๊ฐœ๋ณ„ ๋ผ์ธ์„ ์›๊ฒฉ์œผ๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. "์ถ”๊ฐ€" ๋ฒ„ํŠผ์„ ๋‹ค์‹œ ํด๋ฆญํ•˜๋ฉด ์‚ฌ์šฉ์ž๊ฐ€ ์˜ต์…˜ ๋ชฉ๋ก์„ ์™„๋ฃŒํ•  ๋•Œ๊นŒ์ง€ ์ƒˆ ํŽ˜์–ด๋ง์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. "๋‹ค์ค‘ ๊ฐ’" ๋ฐ "๋ชจ๋‘ ์„ ํƒ" ์˜ต์…˜์€ ๊ธฐ์กด ์‚ฌ์šฉ์ž ์ง€์ • ๋ชจ๋ธ๊ณผ ์œ ์‚ฌํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

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

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

๋‚˜๋Š” ์˜๋ฆฌํ•œ ํ•ดํ‚น์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์ง„์ •ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋งค์šฐ ์ •์ ์ธ ๊ฐ„๋‹จํ•œ ํ‚ค/๊ฐ’ ๋Œ€์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(MySQL์„ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ƒ ๋ถˆ๊ฐ€๋Šฅํ•จ)๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•  ๋งŽ์€ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

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

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

์˜ˆ์‹œ:

๋”ฐ๋ผ์„œ "๋ถ๋ฏธ - ๊ธฐ๋ณธ ํด๋Ÿฌ์Šคํ„ฐ"๋ผ๋Š” ๋ณ€์ˆ˜ ๋งคํฌ๋กœ๋Š” "๊ตญ๊ฐ€" ๋ณ€์ˆ˜๋ฅผ "us,ca,mx"๋กœ ์„ค์ •ํ•˜๊ณ  "ํด๋Ÿฌ์Šคํ„ฐ:" ๋ณ€์ˆ˜๋ฅผ "๊ธฐ๋ณธ"์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋งคํฌ๋กœ ๋ณ€์ˆ˜ ํ’€๋‹ค์šด์„ ๋‹ค์‹œ ํ„ฐ์น˜ํ•˜์ง€ ์•Š๋Š” ํ•œ, ์ด๋ฆ„์ด ์ง€์ •๋œ ๊ฐ ๋ณ€์ˆ˜๋ฅผ ํ’€๋‹ค์šดํ•˜๋ฉด ํ•ด๋‹น ์„ค์ •์ด ํ‘œ์‹œ๋˜๋ฏ€๋กœ(์ˆจ๊ฒจ์ง„ ๊ฒฝ์šฐ ์ œ์™ธ) ๊ตญ๊ฐ€: ๋ชฉ๋ก์— ๊ตญ๊ฐ€๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ๋บ„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

๋‹ค์Œ์€ "๊ตญ๊ฐ€" ๋ฐ "ํด๋Ÿฌ์Šคํ„ฐ"๋ผ๋Š” ๊ธฐ์กด ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฐ€์ƒ์˜ ์˜ˆ์ž…๋‹ˆ๋‹ค.

๋ณ€์ˆ˜ ๋งคํฌ๋กœ ์ด๋ฆ„: ์ง€์—ญ

Name1: ๋ถ๋ฏธ - ๊ธฐ๋ณธ ํด๋Ÿฌ์Šคํ„ฐ
์„ค์ •ํ•˜๊ธฐ ์ „์— ๋ช…๋ช…๋œ ๋ณ€์ˆ˜ ์ง€์šฐ๊ธฐ: Y
๋ณ€์ˆ˜1: ๊ตญ๊ฐ€
๊ฐ’1: us,ca,mx
๋ณ€์ˆ˜2: ํด๋Ÿฌ์Šคํ„ฐ
๊ฐ’2: ๊ธฐ๋ณธ

Name2: Nordics - ๋ณด์กฐ ํด๋Ÿฌ์Šคํ„ฐ
์„ค์ •ํ•˜๊ธฐ ์ „์— ๋ช…๋ช…๋œ ๋ณ€์ˆ˜ ์ง€์šฐ๊ธฐ: Y
๋ณ€์ˆ˜1: ๊ตญ๊ฐ€
๊ฐ’1: se,fi,no,dk,is
๋ณ€์ˆ˜2: ํด๋Ÿฌ์Šคํ„ฐ
๊ฐ’2: ๋ณด์กฐ

๋‚˜๋Š” ์˜๋ฆฌํ•œ ํ•ดํ‚น์— ๊ฐ์‚ฌํ•˜์ง€๋งŒ ์šฐ๋ฆฌ์—๊ฒŒ๋Š” ์ด๊ฒƒ์ด ์ง„์ •ํ•œ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋งค์šฐ ์ •์ ์ธ ๊ฐ„๋‹จํ•œ ํ‚ค/๊ฐ’ ๋Œ€์ฒด๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(MySQL์„ ์ „ํ˜€ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์šด์˜์ƒ ๋ถˆ๊ฐ€๋Šฅํ•จ)๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์€ ๊ฑด๋„ˆ๋›ฐ์–ด์•ผ ํ•  ๋งŽ์€ ๋ฌธ์ œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค.

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

PostgreSQL์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋งคํ•‘์„ ์œ„ํ•œ ์‹ค์ œ ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT *
FROM
(
    VALUES
        ('London server 1', 'london_srv_1'),
        ('London server 2', 'london_srv_2'),
        ('New York server 1', 'ny_srv_1'),
        ('New York server 2', 'ny_srv_2')
) AS t (__text, __value)

๊ทธ๋Ÿฌ๋‚˜ ์ˆซ์ž ๊ฐ’์—์„œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

SELECT * FROM ( VALUES ( 'OK', '0'), ( 'ERROR', '1') ) AS t (__text, __value)

๋Œ€์‹œ๋ณด๋“œ ๋กœ๋“œ ์‹œ:

imagen

๊ทธ๋ฆฌ๊ณ  ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์„ ํƒํ•  ๋•Œ

imagen

์„ ํƒ ์‹œ: OK + ERROR

imagen

์ˆซ์ž ๊ฐ’์„ ์›ํ•˜๋ฉด ์ž‘์€ ๋”ฐ์˜ดํ‘œ๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ํ…์ŠคํŠธ๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.

SELECT * FROM ( VALUES ( 'OK', 0), ( 'ERROR', 1) ) AS t (__text, __value)

๋‹ต๋ณ€์— ๋Œ€ํ•ด @GlennMatthys glenn์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์œ„์น˜๋ฅผ ์ด๋ฏธ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค.

SELECT * FROM ( VALUES ( 'OK', 0), ( 'Warning', 1), ('Critical', 2) ) AS t (__text, __value)

๋‹ค์ค‘ ๊ฐ’ ๊ตฌ์„ฑ:

imagen

๊ทธ๊ฒƒ์€ ์ผ์–ด๋‚œ๋‹ค
imagen

3๊ฐ€์ง€ ์ƒํƒœ ์„ ํƒ
imagen

๋‹ค์ค‘ ๊ฐ€์น˜ ๋„๊ธฐ:

imagen

GlennMatthys - ๊ท€ํ•˜์˜ ์†”๋ฃจ์…˜์€ ์™„๋ฒฝํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

MySQL์˜ ๊ฒฝ์šฐ:
SELECT * FROM ( VALUES row('a', 1), row('b', 2) ) AS t (__text, __value)

Mariadb๋Š” ์–ด๋–ป์Šต๋‹ˆ๊นŒ? ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (mariaDB ๋ฒ„์ „: 10.5.5)

SELECT * FROM ( VALUES row('a', 1), row('b', 2) ) AS t (__text, __value);
ERROR 1064 (42000)..............

๋˜๋Š” ์ด์ „:

SELECT * FROM ( VALUES ( 'OK', 0), ( 'Warning', 1), ('Critical', 2) ) AS t (__text, __value);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your 
MariaDB server version for the right syntax to use near '(__text, __value)' at line 1

Values โ€‹โ€‹๋ฌธ์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค...

์•„๋‹ˆ๋ฉด ๋‚ด๊ฐ€ ์ž˜๋ชปํ•˜๋Š” ๋‹ค๋ฅธ ๊ฒƒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@radoeka ์ด์ „ MariaDB/MySQL์˜ ๊ฒฝ์šฐ

SELECT * FROM
(
    SELECT 'London server 1' AS '__text', 'london_srv_1' AS '__value'
    UNION ALL SELECT 'London server 2', 'london_srv_2'
    UNION ALL SELECT 'New York server 1', 'ny_srv_1'
    UNION ALL SELECT 'New York server 2', 'ny_srv_2'
) AS t;

@GlennMatthys ์™€์šฐ ์™€์šฐ ์™€์šฐ, ์–ผ๋งˆ๋‚˜ ๋น ๋ฅธ ์‘๋‹ต์ž…๋‹ˆ๊นŒ! ๊ทธ๋ฆฌ๊ณ  ์ด๊ฒƒ์€ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
๋‚˜๋Š” ์˜คํžˆ๋ ค ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ mariadb๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค(2๊ฐœ์›” ๋œ Linux ๋ฐฐํฌํŒ ์‚ฌ์šฉ).
๊ฐ์‚ฌ ํ•ด์š”.

์ด๊ฒƒ์€ Prometheus์—์„œ ์ง€์›๋˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ #27829๋กœ ๋‹ค์‹œ ์—ด๋ฉด ์ •์  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด์„œ๋งŒ ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰