[Grafana] Grafana HTTP APM ๊ตฌ์„ฑํ•˜๊ธฐ

Grafana Stack์„ ์‚ฌ์šฉํ•ด์„œ HTTP ์„œ๋ฒ„์šฉ ๋ชจ๋‹ˆํ„ฐ๋ง์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณธ๋‹ค.

์‹ธ์žก์•„์„œ APM์ด๋ผ๊ณ  ๋ถ€๋ฅด๊ธด ํ•˜์ง€๋งŒ, ํฌ๊ฒŒ๋Š” Log, Trace, Metric์˜ ๊ตฌ์„ฑ์š”์†Œ๋กœ ๋ถ„๋ฆฌ๋œ๋‹ค.
๊ฐ๊ฐ์€ ์šฉ๋„๋งŒ ๋‹ค๋ฅธ๊ฒŒ ์•„๋‹ˆ๋ผ ํ˜•ํƒœ์— ๋”ฐ๋ผ์„œ ์ €์žฅํ•˜๋Š” ์ €์žฅ์†Œ ์‹œ์Šคํ…œ๋„ ์™„์ „ ๋‹ค๋ฅด๋‹ค.

์—ฌ๊ธฐ์„œ๋Š” Grafana Loki(Log), Grafana Tempo(Trace), Prometheus(Metric)์œผ๋กœ APM์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๊ฐ„๋‹จํ•œ ๊ฐ€์ด๋“œ๋ฅผ ๋‚จ๊ฒจ๋ณธ๋‹ค.




Loki ๊ธฐ๋ฐ˜์˜ ๋กœ๊ทธ ๊ตฌ์„ฑ

๋กœ๊ทธ ์ €์žฅ์„ ์–ด๋””์— ํ• ์ง€๋Š” ์‚ฌ์šฉ์ค‘์ธ ์‹œ์Šคํ…œ ๊ตฌ์กฐ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅด๋‹ค.
์‚ฌ์‹ค AWS Fargate ๊ฐ™์€ ๋กœ๊ทธ๊นŒ์ง€ ์ผ์ฒดํ˜•์œผ๋กœ ์ œ๊ณต๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ์“ด๋‹ค๋ฉด ๋กœ๊ทธ ์ €์žฅ์†Œ๋ฅผ ์“ธ ํ•„์š”๋Š” ์—†๋‹ค.

๊ทธ๋ž˜์„œ Loki๋ฅผ ์ง์ ‘ ๊ตฌ์„ฑํ•ด์„œ ์“ฐ๋Š”๊ฑด ๋ณดํ†ต k8s ํ™˜๊ฒฝ์ด๋‹ค.

์‚ฌ์šฉ๋ฒ•์— ๋Œ€ํ•ด์„œ๋Š” ๋ณ„๋„ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
https://blog.naver.com/sssang97/223518846852
https://blog.naver.com/sssang97/223518925037




Tempo ๊ธฐ๋ฐ˜์˜ Trace ๊ตฌ์„ฑ

Trace๋Š” ๊ฐ๊ฐ์˜ ๋…๋ฆฝ๋œ ๊ธฐ๋Šฅ ๋‹จ์œ„๋ฅผ ์ถ”์ ํ•˜๋Š” ๋กœ๊ทธ ๋‹จ์œ„๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.
์—ฌ๊ธฐ์„œ ๊ฐ๊ฐ์˜ ๊ธฐ๋Šฅ์€ ๋ณดํ†ต ํ•˜๋‚˜์˜ API ํ˜ธ์ถœ์ด ๋œ๋‹ค.

https://blog.naver.com/sssang97/223761188760




Prometheus ๊ธฐ๋ฐ˜์˜ Metric ๊ตฌ์„ฑ

metric์—๋Š” ๋Œ€๋ถ€๋ถ„ ์‹œ๊ณ„์—ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ €์žฅ์†Œ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
Mimir๋‚˜ ๋ช‡๊ฐ€์ง€ ๋Œ€์•ˆ์ด ์žˆ๊ธด ํ•œ๋ฐ, prometheus๊ฐ€ ์••๋„์ ์ธ ๊ตญ๋ฃฐ์ด๋‹ค.

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” prometheus์™€ opentelemetry์˜ otel collector๋ฅผ ์ด์šฉํ•ด์„œ ๊ธฐ๋ณธ์ ์ธ metric ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•œ๋‹ค.
https://blog.naver.com/sssang97/223764113482

๋‹ค์Œ ํฌ์ŠคํŠธ์—์„œ๋Š” trace-span ๊ธฐ๋ฐ˜์˜ spanmetric ํ†ต๊ณ„๋ฅผ ์Œ“๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃฌ๋‹ค.
API์˜ ํ˜ธ์ถœ ํšŸ์ˆ˜, ์‹คํŒจ์œจ ๊ฐ™์€ trace ๊ธฐ๋ฐ˜ ํ†ต๊ณ„๋ฅผ ๋ณผ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
https://blog.naver.com/sssang97/223764160315



๋‹ค์Œ์€ ์˜ˆ์ œ ์ฝ”๋“œ ์œ„์น˜๋‹ค.
https://github.com/myyrakle/infrastructures/tree/master/docker-compose/grafana-apm



์ฐธ์กฐ
https://grafana.com/docs/tempo/latest/getting-started/docker-example/
https://github.com/grafana/tempo/blob/main/example/docker-compose/local/docker-compose.yaml
https://grafana.com/docs/grafana-cloud/monitor-applications/application-observability/instrument/go/
https://www.anyflow.net/sw-engineer/opentelemetry-overview