[Pyroscope] Grafana - Pyroscope
Pyroscope๋ Grafana์์ ์ ๊ณตํ๋ ์ง์์ ํ๋กํ์ผ๋ง(Continuous Profiling)์ ์ํ ๋ชจ๋ํฐ๋ง ๋๊ตฌ๋ค.
ํ๋กํ์ผ๋ง์ ์ค์๊ฐ์ผ๋ก ํ๋ค๋ ์๋ฆฌ๋ค. ์ฑ๋ฅ/์ฌ์ฉ๋ ๋ชจ๋ํฐ๋ง์ ์์ด์๋ ๊ฐ์ฅ ์ง์ฐฉ์ค๋ฐ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
๊ณ์ํด์ ํ๋กํ์ผ ๋ฐ์ดํฐ๋ฅผ ์ด์ค์ผ ํ๊ธฐ ๋๋ฌธ์, ๋น์ฐํ ๋ฆฌ์์ค๋ฅผ ์ข ์๋ชจํ ๊ฒ์ด๋ค.
๊ทธ๋๋ ํ๋ฒ ์ธํ ํด๋๋ฉด ๋ฌธ์ ์ ํด๊ฒฐ ์ถ์ ์ ๊ต์ฅํ ํธ๋ฆฌํด์ง ์ ์๋ค.
์ด๋ฐ ์์ผ๋ก ์ด๋ค. Pyroscope ์๋ฒ๋ฅผ ๋์๋ฃ๊ณ ๊ทธ๋ฅ ๊ฑฐ๊ธฐ๋ค๊ฐ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณด๊ณ ๋ฅผ ๋ณด๋ด๋ ๊ฒ์ด๋ค.
Docker๋ก ์คํ
Pyroscope๋ ์ฌ๋ฌ๊ฐ์ง ์ค์น/์คํ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋ค. linux๋ผ๋ฉด ๋ฐ๋ก ์คํํ์ผ์ ๋ฐ์์ ์ฌ์ฉํ ์๋ ์๊ณ , docker์์ ๋์ธ ์๋ ์๊ณ , k8s์์ ๊ตฌ์ฑํ ์๋ ์๋ค.
์ผ๋จ ์ฌ๊ธฐ์์๋ Docker๋ก ์คํํด๋ณด๊ฒ ๋ค.
๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ๋ค.
sudo docker pull grafana/pyroscope:latest
sudo docker network create pyroscope-demo
sudo docker run --rm --name pyroscope --network=pyroscope-demo -p 4040:4040 grafana/pyroscope:latest
๊ทธ๋์ ์ด๋ ๊ฒ ๋ฐฐ๋๊ฐ ๋จ๋ฉด ์ ์คํ๋ ๊ฒ์ด๋ค.
ํฌ์ค์ฒดํฌ๋ ๋ค์ ๊ฒฝ๋ก๋ก ํ ์ ์๋ค.

ํ์ด์ง ์ ์
4040 ํฌํธ๋ก ์ ์์ ํ๋ฉด ๋ฐ๋ก ์ ์ด ํ์ด์ง๊ฐ ๋ฌ๋ค.
๋ณ๋ค๋ฅธ ์ธํ
์ ํ์ง ์์๋ค๋ฉด pyroscope๊ฐ ์คํ๋ ํ๊ฒฝ์ ํ๋กํ์ผ๋ง์ ๋ณด์ฌ์ค ๊ฒ์ด๋ค.
๊ทธ๋ฅ ๊ธฐ๋ณธ์ผ๋ก ๋ณด์ฌ์ฃผ๋๊ฑฐ๊ธด ํ๋ฐ, ์ ์ด์ ์ค์ ์คํํ๊ฒฝ์์ ์ด๊ฑธ ๋์ธ ์ผ์ ์ ์์ํ
๋ ๊ฑฐ์ ์ฅ์์ด๋ค.
Client๊ฐ ์ค์ ๋์์ ๊ฒฝ์ฐ์, ์ ์ต์๋จ ํญ์ ๊ณจ๋ผ์ ์์น๋ฅผ ํ์ธํ๋ฉด ๋๋ค.

์ด๋ฐ ์์ผ๋ก ์๊ฐํ๋๋ค. ์ด๊ฑด ์๋ชจํ CPU time์ ๋ํ ํ๋กํ์ผ์ด๋ค. ํจ์ ๋จ์๋ก ์ธก์ ๋๋ค.
์ฐ์๋จ ํญ์ ์กฐ์ํ๋ฉด ์กฐํ ๋ฒ์๋ฅผ ์กฐ์ ํ ์ ์๋ค.
์ธ์ด๋ณ Client Setup
Java. dotnet, Go, Rust, Python, Ruby ์ ๋์ ๋ฉ์ด์ ํ ์ธ์ด๋ค์ Client๋ฅผ ๊ณต์์ผ๋ก ์ ๊ณตํ๋ค.
Go
https://blog.naver.com/sssang97/223415591377
Rust
https://blog.naver.com/sssang97/223415608414
์ฐธ์กฐ
https://github.com/grafana/pyroscope