[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 ์ ๋๊ฐ ์ ๊ณต๋๋ค.