[Grafana Tempo] TraceQL

TraceQL์„ ํ†ตํ•ด Trace๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ฑฐ๋‚˜ ๊ฐ€๊ณตํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.
Grafana ๋Œ€์‹œ๋ณด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Explorer ํƒญ์—์„œ ๋ฐ”๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์ค€๋‹ค.




TraceID๋กœ ๊ฒ€์ƒ‰

๊ทธ๋ƒฅ ๋ฌธ์ž์—ด๋งŒ ๋œ๋  ๋ฐ•์•„๋„ฃ์œผ๋ฉด, TraceQL์€ ๊ทธ๊ฑธ TraceID๋กœ ์ธ์‹ํ•˜๊ณ  ๊ฒ€์ƒ‰์„ ํ•œ๋‹ค.




span ID๋กœ ๊ฒ€์ƒ‰

์ด๋ฒˆ์—๋Š” span ID๋กœ ๊ฒ€์ƒ‰ํ•ด๋ณด์ž.
์—ฌ๊ธฐ๋ถ€ํ„ฐ๋Š” ํ•„๋“œ ํ•„ํ„ฐ๋ง์ด๋ผ์„œ ํ•„ํ„ฐ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.
ํ•„ํ„ฐ ํ‘œํ˜„์€ ์ค‘๊ด„ํ˜ธ ์•ˆ์—, =๋กœ ๊ตฌ๋ถ„๋˜๋Š” ํ‚ค:๊ฐ’ ์Œ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค.

์ด๋Ÿฐ ์‹์ด๋‹ค.




์˜ค๋ฅ˜๋งŒ ์กฐํšŒ

ํ•„ํ„ฐ์—๋Š” ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š” ๊ฑฐ์˜ ๋ชจ๋“  ํ•„๋“œ๋ฅผ ์กฐ๊ฑด์œผ๋กœ ๊ฑธ ์ˆ˜ ์žˆ๋‹ค.
status๋„ ์ž์ฃผ ์‚ฌ์šฉํ• ๋งŒํ•œ ๊ธฐ๋ณธ span ์†์„ฑ์ด๋‹ค.
์ด๋Ÿฌ๋ฉด ์—๋Ÿฌ๋งŒ ๋ฝ‘์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.




์ถ”๊ฐ€ Attribute๋กœ ํ•„ํ„ฐ

span ๊ธฐ๋ณธ ํ•„ํ„ฐ ์™ธ์— ์ปค์Šคํ…€ ํ•„๋“œ๋กœ ํ•„ํ„ฐ๋ฅผ ๊ฑธ๊ณ  ์‹ถ๋‹ค๋ฉด, resource ํ•˜์œ„ ํ•„๋“œ๋กœ ์ฐพ์•„์„œ ํ•„ํ„ฐ๋ฅผ ๊ฑธ๋ฉด ๋œ๋‹ค.
์•„๋ž˜๋Š” service.name์ด๋ผ๋Š” attribute๋กœ ํ•„ํ„ฐ๋ฅผ ๊ฑฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค.




AND ์กฐ๊ฑด

์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ์กฐ๊ฑด์œผ๋กœ ๊ฑธ๊ณ  ์‹ถ๋‹ค๋ฉด &&๋ฅผ ์“ฐ๋ฉด ๋œ๋‹ค. ๊ฐ„๋‹จํ•˜๋‹ค.




์ •๊ทœํ‘œํ˜„์‹ ๊ฒ€์‚ฌ

๋ฌธ์ž์—ด์— ์ •๊ทœ์‹์œผ๋กœ ํ•„ํ„ฐ๋ง์„ ํ•˜๋Š” ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.
=~ ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ๊ณ , ์•ˆ์— ์ •๊ทœ์‹์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.

๋‹ค์Œ์€ Command - ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฐ’์„ ์ „๋ถ€ ์ฐพ๋Š” ์ฟผ๋ฆฌ๋‹ค.




์œ ์˜ํ•  ์ : Trace์™€ Span

์ด TraceQL์€ ๋ณธ์งˆ์ ์œผ๋กœ Span์— ์กด์žฌํ•˜๋Š” ํ•„๋“œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด์„œ Trace๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด๋‹ค.
๊ทธ๋Ÿฐ ๋ถ€๋ถ„์—์„œ ์ข€ ๋ฏธ๋ฌ˜ํ•œ ์ˆ™์ง€์‚ฌํ•ญ์ด ์žˆ๋‹ค.

๋งŒ์•ฝ ๋ฆฌ์ „ us-east-1์ธ Span๊ณผ us-west-1์ธ Span์ด ๋™์‹œ์— ํฌํ•จ๋œ Trace์„ ์ฐพ์œผ๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

{ resource.cloud.region = "us-east-1" && resource.cloud.region = "us-west-1" }

์ด๊ฑด ํ‹€๋ ธ๋‹ค. ๋‹จ์ผ Span์ด ๋‹ค๋ฅธ region์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
์ด ์ค‘๊ด„ํ˜ธ ๊ฐ๊ฐ์€ ๋‹จ์ผ Span์— ๋Œ€ํ•œ ๊ฒ€์ƒ‰์ด๋‹ค.

๋ชฉํ‘œ๋ฅผ ๋‹ฌ์„ฑํ•˜๋ ค๋ฉด 2๊ฐœ์˜ ํ•„ํ„ฐ์‹์„ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฌถ์–ด์—ฌ ํ•œ๋‹ค.

{ resource.cloud.region = "us-east-1" } && { resource.cloud.region = "us-west-1" }

์ด๋Ÿฌ๋ฉด 2๊ฐ€์ง€ ์กฐ๊ฑด์„ ๊ฐ๊ฐ ๋งŒ์กฑํ•˜๋Š” Span์„ ๋™์‹œ์— ๊ฐ–๋Š” Trace๋งŒ ๊ฐ€์ ธ์˜ค๊ฒŒ ๋œ๋‹ค.

์ด๊ฑฐ ๋ง๊ณ ๋„ ์ผ์น˜ํ•˜๋Š” ์กฐ๊ฑด์˜ ํ•˜์œ„ Span์„ ์ฐพ๊ฑฐ๋‚˜, ์ƒ์œ„ Span์„ ์ฐพ๊ฑฐ๋‚˜ ํ•˜๋Š” ๋ณต์žกํ•œ ๊ด€๊ณ„์˜ ํ•„ํ„ฐ๋„ ๊ฐ€๋Šฅํ•œ๋ฐ, ์—ฌ๊ธฐ์„œ๋Š” ์ƒ์„ธํžˆ ๋‹ค๋ฃจ์ง€ ์•Š๋Š”๋‹ค.




Aggregate ํ•„ํ„ฐ

traceQL์€ ๋‹จ์ˆœ ํ•„ํ„ฐ ๋ง๊ณ ๋„ ์ง‘๊ณ„ ๊ธฐ๋ฐ˜์˜ ์ฟผ๋ฆฌ ๋˜ํ•œ ์ œ๊ณตํ•œ๋‹ค.
์ „์ฒด Trace๋ฅผ ์ง‘๊ณ„ํ•˜๋Š”๊ฑด ์•„๋‹ˆ๊ณ , Span์„ Trace๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฑฐ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์ด๋Ÿฐ ์‹์œผ๋กœ ์งœ๋ฉด, error์ธ Span์˜ ๊ฐœ์ˆ˜๊ฐ€ 2๊ฐœ ์ด์ƒ์ธ Trace๋งŒ ์กฐํšŒํ•˜๋Š” ์ฟผ๋ฆฌ๊ฐ€ ๋œ๋‹ค.

์ด ์™ธ์—๋„ aggregate ํ•จ์ˆ˜๋กœ๋Š” avg, min, max, sum ์ •๋„๊ฐ€ ์ œ๊ณต๋œ๋‹ค.





์ฐธ์กฐ
https://grafana.com/docs/tempo/latest/traceql/