Bandwidth KO - k-p2p-lab/kpl-v3 GitHub Wiki
P2P Bandwidth ์ธก์
Wiki home โบ ํ๊ตญ์ด ๋ฌธ์ ยท ์์ด ์๋ฌธ
๋ฌธ์ ์๋ด ยท ์์ค ์ ์ฅ์
v3๋ ์ค์ ๋ก ์ฌ์ฉํ libp2p ์คํธ๋ฆผ ๋์ญํญ์ ์ธก์ ํฉ๋๋ค. ๋ฌผ๋ฆฌ ํ์ ์ ์ต๋/๊ฐ์ฉ ์ฉ๋์ ์ธก์ ํ๋ ๋ถํ ์ํ์ ์๋๋๋ค. ๋ชจ๋ v3 ๊ตฌ์ฑ์์(Controller, Agent, Peer ์ด๋ฏธ์ง)๋ฅผ ๋ค์ ๋น๋ํ๊ณ ์ ์ฉํ ๋ค ์์ํ ์คํ๋ถํฐ ๊ธฐ๋ก๋ฉ๋๋ค. Agent์ ์๊ฒฉํ ์ด๋ฒคํธ ๋์ฝ๋๋ ์ ํ๋๋ฅผ ์์์ผ ํ๋ฏ๋ก Peer๋ง ๊ต์ฒดํ์ง ๋ง์ญ์์ค. ๊ธฐ์กด ์คํ์ payload ํฌ๊ธฐ์์ ๊ณผ๊ฑฐ P2P ํธ๋ํฝ์ ์ญ์ฐํ์ง ์์ต๋๋ค.
์ธก์ ๋ฒ์์ ๊ณ์ฐ
Peer์ libp2p BandwidthReporter์ ๋๊ธฐ์ ์ ์ ์นด์ดํฐ๋ฅผ ์ฐ๊ฒฐํ์ต๋๋ค. ํ์ฌ ์์กด์ฑ์ swarm_stream.go๊ฐ ๊ฐ ์คํธ๋ฆผ read/write์ ์ค์ ๋ฐํ ๋ฐ์ดํธ ์๋ฅผ global hook๊ณผ protocol/remote hook์ ๋ณด๊ณ ํฉ๋๋ค. global hook์ ์ด๋์, stream hook์ ๊ท์๋ง ๊ฐฑ์ ํ๋ฏ๋ก ๊ฐ์ ๋ฐ์ดํธ๋ฅผ ๋ ๋ฒ ๋ํ์ง ์์ต๋๋ค. libp2p ๊ธฐ๋ณธ flow meter์ ๋น๋๊ธฐ ๊ฐฑ์ ์์ ์ ๊ธฐ๋ค๋ฆฌ์ง ์์ ์งง์ ์ ์ก์ ๋ง์ง๋ง ๋ฐ์ดํธ๋ ์ฆ์ ์กฐํํ ์ ์์ต๋๋ค.
๋ด๋ถ remote๋ณ ๊ท์ ๊ธฐ๋ก์ ์ฐ๊ฒฐ๋ Peer์ ์ต๊ทผ 1๋ถ ์์ ์ฌ์ฉ๋ remote๋ฅผ ์ ์งํฉ๋๋ค. 5์ด ํ๋ณธ ๋ฃจํ๊ฐ ๊ทธ๋ณด๋ค ์ค๋๋ ์ฐ๊ฒฐ ํด์ ํญ๋ชฉ์ ์ ๊ฑฐํ๊ณ churn์ผ๋ก ์ปค์ง map ์ ์ฅ ๊ณต๊ฐ๋ ํ์ํฉ๋๋ค. ์ ๋ฆฌ๋ remote๊ฐ ๋ค์ ์ฐ๊ฒฐ๋๋ฉด remote๋ณ ๊ธฐ๋ก์ ์๋ก ์์ํฉ๋๋ค. ์ธ๋ถ๋ก ๋ด๋ณด๋ด๋ ์ ์ฒดยทํ๋กํ ์ฝ๋ณ ์นด์ดํฐ์๋ ํ๋ก์ธ์ค ์ธ์ ๋์ ๊ด์ธกํ ๋ชจ๋ ๋ฐ์ดํธ๊ฐ ๋จ์ผ๋ฉฐ, ๊ฒฐ๊ณผ ์ด๋ฒคํธ์๋ remote๋ณ ์นด์ดํฐ๋ฅผ ๋ด๋ณด๋ด์ง ์์ต๋๋ค.
| ํฌํจ | ์ ์ธ |
|---|---|
| GossipSub ๋ฐ์ดํฐ, ์๋ช ยทprotobuf/RPC ์ธ์ฝ๋ฉ, ์ ๋ฌ/์ค๋ณต ๋ณต์ฌ, control ๋ฉ์์ง | HTTP APIยทtelemetryยทbootstrap ๋ ์ง์คํธ๋ฆฌ ๋ฑ ๊ด๋ฆฌ ํธ๋ํฝ |
| Kademlia, Identify, ping ๋ฑ ์ค์ libp2p ์คํธ๋ฆผ ํ๋กํ ์ฝ | TCP/IP ํค๋ยท์ฌ์ ์ก, Noise ์ํธํ ์ค๋ฒํค๋, Yamux framing, Docker overlay/VXLAN |
| ์คํธ๋ฆผ ํ๋กํ ์ฝ ํ์ ๋ฐ์ดํธ | NIC ์ ์ฒด ์ฌ์ฉ๋, ํ์ ์ต๋ ์ฉ๋, ์ฌ์ฉ ๊ฐ๋ฅํ ์ฌ์ ์ฉ๋ |
ํ๋กํ ์ฝ์ /meshsub/1.2.0 ๋ฑ์ ์ค์ negotiated ID์
๋๋ค. ๋น์ด ์๋ ID๋ ๋ฏธ์ง์ /ํ์ ์ค ๋ฐ์ดํธ์
๋๋ค. ํ์ ๋จ๊ณ์์ ์ก์ ์ธก์๋ ์ ํ๋ ํ๋กํ ์ฝ, ์์ ์ธก์๋ ๋น ID๋ก ๊ท์๋ ์ ์์ต๋๋ค. ์งํ ์ค์ธ read/write์ ์ด๋ ๊ฐฑ์ ๊ณผ ํ๋กํ ์ฝ ๊ท์ ์ฌ์ด์๋ ์งง์ ์ฐจ์ด๋ ์๊ธธ ์ ์์ต๋๋ค. ์ก์ ์ฑ๊ณต์ libp2p ์คํธ๋ฆผ์ ์ด ๋ฐ์ดํธ์ด๋ฉฐ, ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ต์ข
์ ๋ฌ ์ฑ๊ณต์ ์ฆ๋ช
ํ์ง ์์ต๋๋ค.
libp2p host๋ฅผ ๊ตฌ์ฑํ ๋ ๋์ ๊ฐ์ 0์ผ๋ก ์์ํ๋ฉฐ ๋ค์๊ณผ ๊ฐ์ด ์ ์ก๋ฅ ์ ๊ณ์ฐํฉ๋๋ค.
sent bit/s = 8 ร (sentBytes_now - sentBytes_previous) / elapsed_seconds
received bit/s = 8 ร (receivedBytes_now - receivedBytes_previous) / elapsed_seconds
๊ฒฝ๊ณผ์๊ฐ์ Peer์ ๋จ์กฐ ์๊ณ์
๋๋ค. Controller ์๊ณ ๋๊ธฐํ๊ฐ ๋ฐ๋์ด๋ ๋น์จ ๊ณ์ฐ์ ๋ถ๋ชจ๊ฐ ๋ฐ๋์ง ์์ต๋๋ค. ์ฒซ ํ๋ณธ์ host ์์ฑ ์์ ์ 0์์ ๊ณ์ฐํฉ๋๋ค. ์ด๊ธฐ Controller ์๊ณ ๋๊ธฐํ ์๋ ํ ์ฒซ ์ํ, ์ดํ 5์ด๋ง๋ค ์ํ, ์ ์ host ์ข
๋ฃ ํ ๋ง์ง๋ง final: true ์ํ์ telemetry ์ข
๋ฃ flush ์ ์ ์์ฑํฉ๋๋ค. ์ฒ์ ๋๊ธฐํ๊ฐ ์คํจํด๋ ์์ง์ ๊ณ์ํฉ๋๋ค. ์ฌ๋ฌ Peer์ ์๊ณ์ด ๋ฐฐ์น๋ ์ด๋ฒคํธ ์๊ฐ์ ์ฌ์ฉํ๋ฏ๋ก ์๊ณ ๋ฏธ๋๊ธฐํยท๋ณด์ ์ค์ฐจ์ ์ํฅ์ ๋ฐ์ ์ ์์ต๋๋ค. ์ด๋ฒคํธ์ clockBasis/clockUncertaintyMs๋ฅผ ํจ๊ป ํ์ธํ ์ ์์ต๋๋ค.
์ ์ฅ๊ณผ ํ์ง
๋ก์ปฌ current-run/<id>/์ ๊ธฐ๋กํ ๋ค runs/<id>/์ ๋ณด๊ดํ๊ณ ๊ฒฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ์ events.jsonl๋ก ํฉ์น๋ type: "bandwidth" ์ด๋ฒคํธ๋ ๊ธฐ์กด runId, agentId, nodeId, sessionId, sequence, timestamp์ ๋ค์ typed ํ๋๋ฅผ ํฌํจํฉ๋๋ค.
{"bandwidth":{"elapsedNs":5000000000,"receivedBytes":1000,"sentBytes":2000,"protocols":[{"protocol":"/meshsub/1.2.0","receivedBytes":1000,"sentBytes":2000}],"final":false}}
(nodeId, sessionId)๋ง๋ค ์ต์ ๋์ ๊ฐ์ ๋ณด๊ดํฉ๋๋ค. ๊ฐ์ ์ด๋ฒคํธ์ ์ฌ์ ์ก์ ๊ธฐ์กด ์๋ณ์๋ก ์ ๊ฑฐํฉ๋๋ค. ์ฌ์์์ ์ ์ธ์ ์ ๋๋ค.- ์ค๊ฐ ์ํ์ด ๋น ์ง๋ฉด ๋ค์ ๋์ ๊ฐ์ด ๋ฐ์ดํธ ์ด๋์ ๋ณต๊ตฌํฉ๋๋ค. ๊ทธ ๊ตฌ๊ฐ์ ์ ์ก๋ฅ ์ ๋ ๊ธด ๊ธฐ๊ฐ์ ํ๊ท ์ด๋ฉฐ ์ฌ๋ผ์ง ์๊ฐ ํผํฌ๋ฅผ ๋ณต์ํ์ง ์์ต๋๋ค.
- ๋ฆ๊ฒ ๋์ฐฉํ ์ด์ ํ๋ณธ์
supersededSamples์ ์ง๊ณํฉ๋๋ค. ๊ฐ์ ์ธ์ ์์ ์ญํํ๋ ์นด์ดํฐ, ์๋ชป๋ ํ๋กํ ์ฝ ์นด์ดํฐ, ๋๋ฝ๋ ์ธ์ /์๊ฐ, ์ ์ฒด ์คํ์ signed 64-bit ๋์ ๋์ ๋์น๋ ํ๋ณธ์rejectedSamples์ ์ง๊ณํ๊ณ ๊ณ์ฐ์์ ์ ์ธํฉ๋๋ค. ๋๋ฝ๋ ์์ค ์๊ฐ์ Controller ์์ ์๊ฐ์ผ๋ก ๋์ฒดํ์ง ์์ต๋๋ค. finalizedSessions / sessions๋ ํ ๋ฒ์ด๋ผ๋ ๋ณด๊ณ ํ ์ธ์ ์ค ์ข ๋ฃ ์ํ๊น์ง ๋ฐ์ ๋น์จ์ ๋๋ค. ์ผ๋ฐ telemetry ํ์๋ ๋ง์ง๋ง ์ ์ค ์๋ฆผยท์ข ๋ฃ ์ฒดํฌํฌ์ธํธยท๋์ญํญ ํ๋ณธ์ ์ํ ์๋ฆฌ๋ฅผ ์์ฝํฉ๋๋ค. ๊ฐ์ ์ข ๋ฃ๋ ํต์ ์ฅ์ ๋ก ๋ง์ง๋ง ์ํ์ด ์ ์ค๋ ์๋ ์์ต๋๋ค. ์ข ๋ฃ ์ํ์ด ์๋ ๊ผฌ๋ฆฌ ๊ตฌ๊ฐ์ ๋ฏธ์ง์์ ๋๋ค. ์ ํ ๋ณด๊ณ ํ์ง ์์ Peer๋ ์ด ๋น์จ์ ๋ถ๋ชจ์๋ ์์ผ๋ฏ๋ก 100%๊ฐ ์ ์ฒด ์คํ์ ์์ ์ฑ์ ์ฆ๋ช ํ์ง ์์ต๋๋ค.- ์์ง๋ 0์ 0์ผ๋ก, ํ๋ณธ์ด ์๋ ์ด์ ๊ฒฐ๊ณผ๋ N/A๋ก ํ์ํฉ๋๋ค. ์ก์ ๊ณผ ์์ ์ ๊ฐ์ ์ ์ก์ ์ ๋์ ์
์ ์์ผ๋ฏ๋ก ํฉ๊ณ๋ฅผ ๊ณ ์ ๋คํธ์ํฌ ํธ๋ํฝ์ผ๋ก ํด์ํ์ง ์์ต๋๋ค. ์ค์ ํ payload ๋ฐ์ดํธ๋ฅผ ์ธ๋ ๊ธฐ์กด
kpl_message_bytes_total์ ๋ณ๊ฐ์ ์งํ์ ๋๋ค.
metrics.bandwidth์๋ scope: "libp2p-stream-v1", ์ ์ฒด ๋ฐ ํ๋กํ ์ฝ๋ณ ์ก์์ ๋์ ๋ฐ์ดํธ, sessions/finalizedSessions/samples/rejectedSamples/supersededSamples/latestAt๊ฐ ์์ต๋๋ค. ๊ณผ๊ฑฐ ๊ฒฐ๊ณผ์๋ ํ๋๊ฐ ์์ผ๋ฉฐ, ์ ํจ ํ๋ณธ์ด ์์ผ๋ฉด ์์น๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ๊ฒฐ๊ณผ ZIP์ ์๋ณธ ์ด๋ฒคํธ์ metrics.json, ๋ถ์ API์ ํฌํจ๋ฉ๋๋ค. ์ ์ฅ ๊ฒฐ๊ณผ ๋ถ์๊ณผ ZIP์ Controller ์ฌ์์ ํ์๋ ์ ์ฒด ํ์ผ์ ์ฌ์ํ์ฌ ๋ณต์ํฉ๋๋ค.
๋ด์ฅ Dashboard
Dashboard์ P2P B/W ยท Send / Receive ์นด๋๋ ๊ฐ์ Metrics ํ์ ํฌํจ๋ฉ๋๋ค. ๋ํ ๊ฐ์ ํ์ฌ ์คํ์ ์ก์์ ์ ์ก๋ฅ ์ด๋ฉฐ, ๊ฐ ์นด๋๋ฅผ ํผ์น๋ฉด ๋์ ์ ์ก๋๊ณผ ์ค๋ช ์ ํ์ธํฉ๋๋ค. ๋ง์ฐ์คยทํค๋ณด๋ยทํฐ์น ์กฐ์์ Metrics ์ฌ์ฉ๋ฒ์ ์ฐธ๊ณ ํ์ญ์์ค. ์ ์ก๋ฅ ์ ๊ฐ Peer์ ๋ง์ง๋ง ์์ค ์ธก์ ๊ตฌ๊ฐ ํ๊ท ์ ํฉ์ฐํ๋ฉฐ, ๋จ์๋ bit/sยทkbit/sยทMbit/s ๋ฑ์ผ๋ก ์๋ ํ์ํฉ๋๋ค. ๋์ ๋์ BยทKiBยทMiB ๋ฑ์ผ๋ก ํ์ํฉ๋๋ค. ํ ํด๋ก์ง์ topic/layer ํํฐ์ ๋ ๋ฆฝ์ ์ด๋ฉฐ ์๋จ Run metrics์ ํ์๋ ์คํ์ ๋ฐ๋ฆ ๋๋ค.
B/W measurement๋ ๊ฐ์ ํ์์ ์์ง ํ์ง์ ํ์ํ๋ฉฐ, ํผ์น๋ฉด ์ ์ ํ ํ์ฑ ์ธ์
์, ์ข
๋ฃ ํ๋ณธ ์, ๋ง์ง๋ง ํ๋ณธ ์๊ฐ๊ณผ ๊ฑฐ๋ถ ํ๋ณธ ์๋ฅผ ๋ณด์ฌ ์ค๋๋ค. ์ผ๋ถ ํ์ฑ ์ธ์
๋ง ์ ์ ํ๋ฉด Partial, ์ ์ก๋ฅ ์ ์ ์ ์์ผ๋ฉด Rate unavailable, ์ ํจ ํ๋ณธ์ด ์์ผ๋ฉด N/A์
๋๋ค. ์ค์ ์ธก์ ํ 0์ 0์ผ๋ก ํ์ํฉ๋๋ค. 15์ด ์ ์ ๋ ๊ธฐ์ค๊ณผ ์ ์ ์ข
๋ฃ ํ 0 ์ ์ก๋ฅ ์ Grafana์ ๊ฐ์ผ๋ฉฐ ๋์ ๋์ ์ ์งํฉ๋๋ค. ๋์๋ณด๋ ์คํธ๋ฆผ์ trace ์ด๋ฒคํธ๊ฐ ์์ด๋ ์๊ฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ ๊ฐ์ ํ์ธํด ๋ง๋ฃ๋ ์ ์ก๋ฅ ์ ๊ฐฑ์ ํฉ๋๋ค. ๋ผ์ด๋ธ ์ค๋
์ท์ metrics.bandwidth.currentRates์ ์ด ์ง๊ณ๊ฐ ํฌํจ๋๋ฉฐ, ์ ์ฅ ๊ฒฐ๊ณผ ์ง๊ณ์๋ ํ์ฌ ์๊ฐ์ ๋ฐ๋ฅธ ์ ์ก๋ฅ ์ ์ถ๊ฐํ์ง ์์ต๋๋ค.
Saved results โ Images๋ ์ ์ฒดยทํ๋กํ ์ฝ๋ณ ์ก์ ยท์์ ์ ์ก๋ฅ (kbit/s)๊ณผ ๋์ ์ ์ก๋(KiB)์ PNGยทCSV๋ก ์ ๊ณตํ๋ฉฐ ์ ์ฒด ์ฐจํธ๋ฅผ ZIP์ผ๋ก ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ์๋ณธ ๋์ ์นด์ดํฐ๋ ๊ฒฐ๊ณผ APIยทZIP๊ณผ Grafana์๋ ์์ต๋๋ค. ์ฐจํธ ์กฐ์๊ณผ ๋น๊ต ๋ฐฉ๋ฒ์ ์๊ฐํ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
API๋ ๊ธฐ์กด ๋ถ์ ์๋ต์ bandwidthTimeline, bandwidthBinSeconds๋ฅผ ์ถ๊ฐํฉ๋๋ค. ๊ฐ ๊ตฌ๊ฐ์ at, ์ก์์ ๋ฐ์ดํธ, ํ๋กํ ์ฝ๋ณ ๋ฐ์ดํธ, peerSeconds(๊ทธ ๊ตฌ๊ฐ์ ๋ฐฐ๋ถ๋ ์์ง ๊ธฐ๊ฐ์ Peerยท์ด ํฉ๊ณ)๋ฅผ ๊ฐ์ง๋๋ค. peerSeconds๋ ์ค๋ณต ์๋ ๋
ธ๋ ์๋ ์ธก์ ์์ ์ฑ ๋น์จ์ด ์๋๋๋ค. ๊ธฐ๋ณธ 5์ด, ์ต๋ 360๊ตฌ๊ฐ์ผ๋ก ๋ณํฉํฉ๋๋ค. ๊ฐ ๊ตฌ๊ฐ ๋ฐ์ดํธ๋ ์๊ฐ ๊ฒน์นจ ๋น์จ ๋๋ฌธ์ ์์์ผ ์ ์์ผ๋ ์ ์ฒด ํฉ๊ณ๋ ์ ์ ๋์ ์นด์ดํฐ์ ์ผ์นํฉ๋๋ค(๋ถ๋์์์ ๋ฐ์ฌ๋ฆผ ์ ์ธ). ๊ธฐ๋ก์ด ์๋ ๊ตฌ๊ฐ์๋ ์ ์ ์์ง ์์ต๋๋ค. ์ผ๋ถ Peer๋ง ๋ณด๊ณ ํ ๊ตฌ๊ฐ์ ๊ฐ์ ๋ณด๊ณ ๋ Peer๋ค์ ์ฌ์ฉ๋์
๋๋ค.
Prometheus / Grafana
| ์งํ | ์ข ๋ฅ / ์ถ๊ฐ ๋ผ๋ฒจ |
|---|---|
kpl_p2p_stream_bytes_total |
Counter / direction (send, receive) |
kpl_p2p_protocol_stream_bytes_total |
Counter / direction, protocol |
kpl_p2p_stream_bits_per_second |
Gauge / direction |
kpl_p2p_protocol_stream_bits_per_second |
Gauge / direction, protocol |
kpl_p2p_bandwidth_sample_timestamp_seconds |
Gauge / ๊ทธ๋ฃน์ ๊ฐ์ฅ ์ต๊ทผ ์์ค ํ๋ณธ ์๊ฐ |
kpl_p2p_bandwidth_sessions |
Gauge / state (open, final)๋ณ ์ธ์
์ |
๊ณตํต ๋ผ๋ฒจ์ run_id, agent_id์
๋๋ค. ๋ด๋ณด๋ด๊ธฐ ์ ์ ์ธ์
๋ณ ๋์ ๋๊ณผ ์ ํจ ์ ์ก๋ฅ ์ ํฉ์ฐํ์ฌ Peer ๊ต์ฒด๊ฐ Prometheus ์๊ณ์ด์ ๊ณ์ ๋๋ฆฌ์ง ์๋๋ก ํฉ๋๋ค. ๋
ธ๋ยท์ธ์
์์ธ ์ ๋ณด๋ ์๋ณธ ๋ก๊ทธ์ ์ ์ฅ ๋ถ์์ ์ ์ง๋ฉ๋๋ค. topic ๊ท์์ ์ ๊ณตํ์ง ์์ต๋๋ค. ํ๋์ GossipSub RPC/์คํธ๋ฆผ์ ์ฌ๋ฌ topic๊ณผ topic ์๋ control ๋ฐ์ดํฐ๊ฐ ์์ผ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
Grafana์ P2P stream bandwidth ์์ญ์ ์ ์ฒด/ํ๋กํ ์ฝ๋ณ ์ฌ์ฉ๋ฅ , ๋์ ๋, ์ข
๋ฃ ํ๋ณธ ๋๊ธฐ ์ธ์
์๋ฅผ ํ์ํฉ๋๋ค. Run/Agent ํํฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ Topic ํํฐ๋ ์ ์ฉํ์ง ์์ต๋๋ค. ์ ์ก๋ฅ Gauge๋ ๋ง์ง๋ง ์์ค ์์ง ๊ฐ๊ฒฉ์ ํ๊ท ์ด๋ฏ๋ก rate()๋ฅผ ๋ค์ ์์ฐ์ง ์์ต๋๋ค. ๋น์ข
๋ฃ ์์ค ํ๋ณธ์ ์๊ฐ์ด Controller ์๊ฐ๋ณด๋ค 15์ด ๋๊ฒ ๊ณผ๊ฑฐ์ด๊ฑฐ๋ ๋ฏธ๋์ด๋ฉด ์ง๊ณ ์ ์ก๋ฅ ์์ ํด๋น ์ธ์
์ ์ ์ธํฉ๋๋ค. ์ข
๋ฃ ํ๋ณธ์ ๋ฐ์ ์ธ์
์ ํ์ฌ ์ฌ์ฉ๋ฅ 0์ผ๋ก ํฉ์ฐํฉ๋๋ค. ์ ํจํ ํ๋ณธ์ด๋ ์ข
๋ฃ๋ ์ธ์
์ด ํ๋๋ ์๋ ๊ทธ๋ฃน์ ์ ์ก๋ฅ ์ ์๋ตํ๋ฉฐ, ๋์ ์นด์ดํฐ์๋ ์ข
๋ฃ๋ ์ธ์
์ ๋ฐ์ดํธ๋ ์ ์งํฉ๋๋ค. ์ฌ๋ฌ ์คํ ์ ํ ์ ๋ฒ๋ก๋ก ์คํ์ ๊ตฌ๋ถํฉ๋๋ค.
์ค์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์งํ๋ ํ์ฌ Controller ์คํ ์ค ๋ฐ์ ์ธ์ ์ ๋ํ ๊ฐ์ ๋๋ค. Controller ์ฌ์์ ์ ๊ณผ๊ฑฐ ๋ชจ๋ ๋ก๊ทธ๋ฅผ ์๋์ผ๋ก Prometheus ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ์ง ์์ต๋๋ค. ๊ธฐ์กด Prometheus ์ ์ฅ ์ด๋ ฅ์ ๊ทธ ์๋ฒ์ ๋ณด์กด ์ ์ฑ ์ ๋ฐ๋ฅด๋ฉฐ, ์ ์ฅ ๊ฒฐ๊ณผ ํ๋ฉด/ZIP์ด ์ฌ์์ ํ ์ ์ฒด ์คํ์ ๋ณต์ํ๋ ๊ฒฝ๋ก์ ๋๋ค. ์ ๋์ ์ํ์ด ๋ค์ด์ค๋ฉด ํด๋น Peer ์ธ์ ์ ์ด์ ๋ฐ์ดํธ๋ ์ฆ์ ๋ณต๊ตฌ๋ฉ๋๋ค. ์งง์ ์คํ์ด Prometheus scrape ์ฌ์ด์ ๋๋๋ ์ต์ข ๋์ ๋์ ์ดํ scrape์ ์กํ ์ ์์ง๋ง, ์ค๊ฐ ์ ์ก๋ฅ ํํ์ ์ ์ฅ ๊ฒฐ๊ณผ ๋ถ์์์ ํ์ธํด์ผ ํฉ๋๋ค.