Monitoring KO - k-p2p-lab/kpl-v3 GitHub Wiki
Wiki home โบ ํ๊ตญ์ด ๋ฌธ์ ยท ์์ด ์๋ฌธ
๋ฌธ์ ์๋ด ยท ์์ค ์ ์ฅ์
Swarm ๋ฐฐํฌ ๊ฐ์ด๋์ ๋ฐ๋ผ stack์ ๋ฐฐํฌํ์ญ์์ค. Controller, ์ ํํ ๋
ธ๋๋ง๋ค Agent ํ๋, Prometheus์ Grafana๋ฅผ ์คํํ๋ฉฐ ๋ฐ์ดํฐ ์์ค์ KP2PLab Experiment Analysis ๋์๋ณด๋๋ ์๋ ๋ฑ๋ก๋ฉ๋๋ค. sh scripts/swarm.sh access๋ก control ๋
ธ๋์ ๊ฒ์ ์ฃผ์๋ฅผ ํ์ธํ์ญ์์ค. ์๋ ์์ ์ control-node๋ ํด๋น ํธ์คํธ ์ฃผ์๋ก ๋ฐ๊ฟ๋๋ค.
๋์๋ณด๋๋ ์์ด๋ก ์์ฑ๋์ด ์์ผ๋ฉฐ, Swarm stack์ GF_USERS_DEFAULT_LANGUAGE=en-US๋ก Grafana UI ๊ธฐ๋ณธ ์ธ์ด๋ฅผ ์์ด๋ก ์ค์ ํฉ๋๋ค. ์ฌ์ฉ์๋ ์กฐ์ง์ ์ธ์ด ์ค์ ์ด ์์ผ๋ฉด ํด๋น UI ๊ธฐ๋ณธ๊ฐ๋ณด๋ค ์ฐ์ ํฉ๋๋ค. Grafana ์ธ์ด ์ค์ ๋ฌธ์
Grafana๋ ์ต์ด ์คํ ์ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๊ธฐํํ๋ฏ๋ก ๋์คํฌ ์ฑ๋ฅ์ ๋ฐ๋ผ ์ค๋น๊น์ง ์ ๋ถ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค. sh scripts/swarm.sh logs grafana์์ ์ด๊ธฐํ ์งํ ์ํฉ์ ํ์ธํ ์ ์์ผ๋ฉฐ, ์ดํ ์์์์๋ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ก์ปฌ SQLite ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ WAL ๋ชจ๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ WAL ํ์ผ์ ๊ฐ์ Grafana named volume์ ๋ณด์กด๋ฉ๋๋ค. Grafana ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์
| ํ๋ฉด | ๊ธฐ๋ณธ ์ฃผ์ |
|---|---|
| KPL Dashboard | http://control-node:8080 |
| Grafana ์คํ ๋ถ์ | http://control-node:3000/d/kpl-experiments |
| Prometheus ์ฟผ๋ฆฌ/์์ง ์ํ | http://control-node:9090 |
| Controller ์งํ ์๋ฌธ | http://control-node:8080/metrics |
Swarm stack์ Grafana ์ต๋ช
์ ์์ ๋นํ์ฑํํ๊ณ GRAFANA_ADMIN_PASSWORD๋ฅผ ํ์๋ก ์๊ตฌํฉ๋๋ค. ์ค์ helper๊ฐ manager ์ค์ ์ ์๊ฒฉ ์ฆ๋ช
์ ์ ์ฅํ๋ฉฐ sh scripts/swarm.sh credentials๋ก ์ค์ ๋ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ์ด stack์ ์์ํ ๋ ์๋ Grafana ๊ด๋ฆฌ์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ค์ ๊ฐ์ผ๋ก ๋๊ธฐํํ๋ฉฐ ๊ธฐ์กด ์ฌ์ฉ์๋ช
๊ณผ ๋ฐ์ดํฐ๋ ์ ์งํฉ๋๋ค.
Swarm์ Prometheus/Grafana ํฌํธ๋ฅผ control ๋
ธ๋์ ๊ฒ์ํฉ๋๋ค. ๊ฐ Agent์ ์ ์ฉ metrics listener๋ ํด๋น ๋
ธ๋์ KPL_AGENT_METRICS_PORT(๊ธฐ๋ณธ 9091)๋ก ๊ฒ์ํฉ๋๋ค. scripts/swarm.sh configure๋ก PROMETHEUS_PORT, GRAFANA_PORT ๋๋ Agent metrics ํฌํธ๋ฅผ ๋ณ๊ฒฝํ ๋ค ๋ค์ ๋ฐฐํฌํด ์ ์ฉํ์ญ์์ค.
๋์๋ณด๋ ์๋จ ๋ฉ๋ด๋ Prometheus์ Grafana๋ฅผ ์ ํญ์ผ๋ก ์ฝ๋๋ค. ํ์ฌ Dashboard์ scheme๊ณผ ํธ์คํธ๋ฅผ ์ ์งํ๊ณ ์ค์ ๋ ๊ฒ์ ํฌํธ๋ก ๋ฐ๊ฟ๋๋ค. ๋ธ๋ผ์ฐ์ ๊ฐ ์ฌ์ฉํ๋ ํฌํธ๊ฐ ์ค์ ๊ฐ๊ณผ ๊ฐ์ผ๋ฉด ์ง์ ์ ์๊ณผ SSH ํฐ๋์์ ๋์ํฉ๋๋ค. Proxy๊ฐ scheme/path๋ฅผ ๋ฐ๊พธ๊ฑฐ๋ ๋ก์ปฌ forwarding์ ๋ค๋ฅธ ํฌํธ๋ฅผ ์ฐ๋ฉด ์ค์ ๋ชจ๋ํฐ๋ง ์ฃผ์๋ฅผ ๋ณ๋๋ก ์ฌ์ญ์์ค.
ํ๋ฉด ์กฐ์์ ๋์๋ณด๋, ์คํ ๋ณต๊ตฌ๋ ์คํ, ์๋ณธ ๋ด๋ณด๋ด๊ธฐ์ ๋ฐฑ์ ์ ์ ์ฅ ๊ฒฐ๊ณผ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
- ๋์๋ณด๋์ Run experiment์์
examples/monitoring.yaml์ ์คํํฉ๋๋ค. envelope ๋ฐํ๊ณผ raw ๋ฐํ์ ํจ๊ป ํ์ธํ๋ ์์ ์คํ์ ๋๋ค. Run ์ Runs๋ฅผ 1~100์ผ๋ก ์ง์ ํ๋ฉด ์์ฐจ ๋ฐ๋ณตํฉ๋๋ค. ํ์ฐจ๋ง๋ค ๋ณ๋ ๊ฒฐ๊ณผ๋ฅผ ๋จ๊ธฐ๋ฉฐ ์คํจ ๋๋ Stop batch๋ ๋๋จธ์ง๋ฅผ ์ทจ์ํฉ๋๋ค. ์คํ๊ณผ ๋ฐ๋ณต๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค. - Grafana์์ Run(run_id), Agent, Topic์ ์ ํํฉ๋๋ค. ์ฌ๋ฌ run์ ๊ณ ๋ฅด๋ฉด ์ ํํ ์คํ์ ํธ๋ํฝยท์ง์ฐ์ ํฉ์ฐํ๋ฉฐ, ๋คํธ์ํฌ ์ค์ ยท๋์ญํญ ์๊ณ์ด์ ๋ฒ๋ก์์ run๋ณ๋ก ๊ตฌ๋ถํฉ๋๋ค. ์ธ์ ๋๋ฌ๋ฅ ํจ๋์ Run๋ง, ๋์ญํญยทcontrol ํจ๋์ Topic ์์ด Run๊ณผ Agent๋ฅผ ์ ์ฉํฉ๋๋ค.
- ์คํ์ด ๋๋ ๋ค์๋ ์๊ฐ ๋ฒ์๋ฅผ ํด๋น ์คํ ๊ตฌ๊ฐ์ผ๋ก ์ง์ ํ๋ฉด ์๊ณ์ด์ ๋ณผ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ์๋ก๊ณ ์นจ์ 5์ด์ ๋๋ค.
Prometheus๋ Controller์ Agent์ /metrics๋ฅผ 5์ด๋ง๋ค ์์งํฉ๋๋ค. Controller๊ฐ ๋ฑ๋ก๋ Agent์ metrics URL์ HTTP service discovery๋ก ๋ฐํํ๊ณ , Prometheus๊ฐ service VIP ๋์ ๊ฐ Agent์ host-mode ํฌํธ์ ์ง์ ์ ๊ทผํฉ๋๋ค. Peer๋ฅผ ์ง์ scrapeํ๊ฑฐ๋ ๊ฐ ์ปจํ
์ด๋์ exporter๋ฅผ ์ถ๊ฐํ์ง ์์ต๋๋ค. Controller๋ ๊ธฐ์กด Peer telemetry๋ฅผ ๋์ ์ง๊ณํ๋ฏ๋ก scope: all์์ telemetry๊ฐ ์์ค๋๋ฉด Controller๊ฐ ๋ง๋๋ Peer ์งํ๋ ์ํฅ์ ๋ฐ์ต๋๋ค. ๋ชจ๋ํฐ๋ง ์๋น์ค๋ ๋ณ๋ Docker network์ ์์ผ๋ฉฐ Peer์๋ ์ถ๊ฐ ๋คํธ์ํฌยท๊ถํ์ ๋ถ์ฌํ์ง ์์ต๋๋ค.
| ์งํ | ์๋ฏธ |
|---|---|
kpl_events_total |
Controller๊ฐ ์์ ํ ์ด๋ฒคํธ ๋์ ์. run_id, agent_id, event_type, topic์ผ๋ก ๊ตฌ๋ถ |
kpl_message_bytes_total |
๋ฐํ/์์ ์ด๋ฒคํธ์ fields.wireBytes ํฉ๊ณ. Envelope ์ฌ์ฉ ์ JSON/base64๋ฅผ ํฌํจํ PubSub data์ด๋ฉฐ libp2p framing ๋ฐ TCP/IP ํค๋ ์ ์ธ |
kpl_p2p_stream_bytes_total, kpl_p2p_protocol_stream_bytes_total
|
RunยทAgentยท๋ฐฉํฅ๋ณ ์ค์ libp2p ์คํธ๋ฆผ ๋์ ๋ฐ์ดํธ. ์ ์ฒด ๋ฐ negotiated protocol๋ณ ๊ฐ |
kpl_p2p_stream_bits_per_second, kpl_p2p_protocol_stream_bits_per_second
|
์์ค ์์ง ๊ตฌ๊ฐ์ ํ๊ท bit/s gauge. rate() ์์ด ์ง์ ์กฐํ |
kpl_p2p_bandwidth_sample_timestamp_seconds, kpl_p2p_bandwidth_sessions
|
์ต๊ทผ ์์ค ํ๋ณธ ์๊ฐ๊ณผ ์ ์ host ์ข ๋ฃ ํ ํ๋ณธ ์์ ยท๋ฏธ์์ ์ธ์ ์. ๋์ญํญ ํ์ง๊ณผ ํ๊ณ ์ฐธ๊ณ |
kpl_gossipsub_control_rpcs_total |
๊ฐ GossipSub ์ ์ด ํ์
์ ํฌํจํ RPC envelope ์. send, recv, ๋ก์ปฌ ์ก์ ์ drop์ผ๋ก ๊ตฌ๋ถ |
kpl_gossipsub_control_entries_total |
ํด๋น RPC์ ๋ด๊ธด repeated protobuf control entry ์ |
kpl_gossipsub_control_message_ids_total |
IHAVE, IWANT, IDONTWANT entry ์์ ์ค๋ณต ์ ๊ฑฐํ์ง ์์ ๋ฉ์์ง ID ์ฐธ์กฐ ์ถํ ํ์ |
kpl_gossipsub_control_peer_exchange_records_total |
PRUNE entry์ ๋ด๊ธด peer-exchange record ์ |
kpl_window_stable_pairs, kpl_window_reached_pairs
|
๊ธฐ๊ฐ์ด ์ง๋ ๋ฉ์์ง ์ค ์์ ๊ธฐ๊ฐ ์ ์ฒด์ ๊ตฌ๋
์ด ์ฆ๋ช
๋ ์์ ์ธ์
์ ๋ฐ ๊ธฐํ ๋ด ์ฑ๊ณต. run_id๋ก ๊ตฌ๋ถ |
kpl_window_unknown_pairs, kpl_window_missed_pairs, kpl_window_late_pairs
|
์์ ์์ ์์ ๋ถ๋ช ยทํ์ธ๋ ๋ฏธ๋๋ฌ. ๊ธฐํ ๋ด ์์ ์ด ์๋ late ์๋ ์์ ๋ ๊ฒฐ๊ณผ ์ค ํ๋์ ๊ฒน์นจ |
kpl_window_delivery_ratio (bound: lower / upper) |
์์ ๋์ ์กฐ๊ฑด๋ถ ๋๋ฌ๋ฅ ์ ๋ ผ๋ฆฌ์ ์ยทํํ. ์์ ์์ด ์์ผ๋ฉด ์๋ตํ๋ฉฐ ์ ๋ขฐ๊ตฌ๊ฐ์ด ์๋ |
kpl_window_initial_pairs, kpl_window_initial_reached_pairs, kpl_window_initial_unknown_pairs
|
ํ์ธ๋ ๋ฐํ ์์ ๋์, ์ดํ์๋ฅผ ํฌํจํ ๊ธฐํ ๋ด ์ฑ๊ณต, ์์ ๋ถ๋ช ์ |
kpl_window_initial_delivery_ratio (bound: lower / upper) |
ํ์ธ๋ ๋ฐํ ์์ ๋์ ์์ ๋ ผ๋ฆฌ์ ๋๋ฌ๋ฅ ๋ฒ์. ํด๋น ์ง๋จ์ด ๋น์์ ๋๋ง ์๋ต |
kpl_window_stable_coverage, kpl_window_stable_coverage_upper_bound
|
coverage ํํ์ธ ์์ /ํ์ธ๋ ๋ฐํ ์์ ๋์๊ณผ ์ํ์ธ (์์ + ์ง์ ์ฌ๋ถ ๋ถ๋ช )/ํ์ธ๋ ๋ฐํ ์์ ๋์. ํ์ธ๋ ์ง๋จ์ด ๋น์์ ๋๋ง ์๋ต |
kpl_window_departed_pairs, kpl_window_continuity_unknown_pairs
|
๋ง๊ฐ ์ ์ดํ์ด ํ์ธ๋ ๋ฐํ ์์ ์๊ณผ, ์ดํยท๋ง๊ฐ๊น์ง ์ง์ ์ด๋ ์ชฝ๋ ์ฆ๋ช ํ์ง ๋ชปํ ์ ์ |
kpl_window_publication_availability_unknown_pairs, kpl_window_availability_unknown_pairs
|
๋ฐํ ์์ ์์กด์ ์ฆ๋ช ํ์ง ๋ชปํ ํ๋ณด ์๊ณผ ๋ฐํ ์์ ยท์ง์ ๋ถ๋ช ์ ํฉ๊ณ |
kpl_window_pending_publications, kpl_window_finalized_publications
|
๋ง๊ฐ ์ ๋ฉ์์ง์ ๊ธฐ๊ฐ์ด ์ง๋ ๋ฉ์์ง. ํ์ ๊ฒฐ๊ณผ๋ ๋ฆ์ telemetry๋ก ์ ์ ๊ฐ๋ฅ |
kpl_window_measurement_incomplete, kpl_window_legacy_publications
|
๊ด์ธก๋ ์ธก์ ๋ฒ์ ๋ถ๋ช stream ์ฌ๋ถ(0/1)์ ๊ณผ๊ฑฐ ์ ์ ๋ฐํ ์. 0๋ ์์ ๋ณด์ด์ง ์์ telemetry๋ ๊ฒ์ถํ์ง ๋ชปํจ |
kpl_window_propagation_latency_seconds |
์์ ๋์์ ๊ธฐํ ๋ด ์ฒซ ์๊ฒฉ envelope ์์ ์ง์ฐ. run_id, ์์ agent_id, topic์ผ๋ก ๊ตฌ๋ถ. rawยท๋ก์ปฌยท๋ง๊ฐ ํยท์ดํยท๋ถ๋ช
ยท๋ฌดํจ ํ๋ณธ ์ ์ธ |
kpl_window_duplicate_copies, kpl_window_duplicates_per_reached_pair
|
์์ ๋์์ ์๊ฒฉ ์ฑ๊ณต ์์์ ๊ธฐ๊ฐ ์์ ๊ด์ธกํ ์ถ๊ฐ PubSub ๋ณต์ฌ๋ณธ ๋ฐ ์ฑ๊ณต๋น ํ๊ท |
kpl_operation_failures_total |
onError: continue ์ ์ฑ
์์ ๊ธฐ๋กํ publish/leave ์คํจ |
kpl_telemetry_dropped_events_total |
๋ณด๊ณ ๋ telemetry ์ ์ค. P2P ํจํท ์์ค์ด๋ ๋ฏธ๋ณด๊ณ ์ ์ค์ด 0์ด๋ผ๋ ์ฆ๊ฑฐ๊ฐ ์๋ |
kpl_nodes |
์คํยทAgentยท๊ทธ๋ฃนยท์ญํ ยทํ์ ยท์ํ๋ณ ํผ์ด ์ |
kpl_agent_* |
Controller์์ ๊ด์ธกํ Agent ์ํยท์ฉ๋ยทheartbeat ๋ฐ Agent + Peer CPU/๋ฉ๋ชจ๋ฆฌ gauge |
kpl_experiment_* |
์คํ ์ํ, ๋จ๊ณ, job ์ํ |
kpl_network_configured_* |
starting/ready ํผ์ด์ ํ์ ์ค์ ์ ๊ทธ๋ฃน๋ณ ์ง๊ณ. delay๋ ํ๊ท /์ต์/์ต๋, jitter/loss๋ ํ๊ท |
kpl_local_* |
๊ฐ Agent์ ๋ก์ปฌ ํผ์ด ์ํ, ์ฉ๋, ์ ๋ฆฌ ๋๊ธฐ, telemetry ํ ๊ธธ์ด |
go_*, process_*
|
scrape ๋์ Controller/Agent ํ๋ก์ธ์ค์ ๋ฐํ์ยทCPUยท๋ฉ๋ชจ๋ฆฌ. Peer ์ปจํ ์ด๋ ์ ์ฒด ์์ ์ฌ์ฉ๋์ ์๋ |
kpl_network_configured_loss_ratio๋ ์ค์ ํ ํจํท ์์ค๋ฅ ์ด๋ฉฐ ์ค์ ๊ด์ธก ์์ค๋ฅ ์ด ์๋๋๋ค. ์ค์ delay๋ ์ค์ RTT์ ๊ตฌ๋ถํฉ๋๋ค. graft/prune/remove_peer ์ด๋ฒคํธ๋ PubSub mesh ๋ณํ๋ฅผ ๋ถ์ํ๋ ์๋ฃ์ด๋ฉฐ TCP ์ฐ๊ฒฐ ๊ทธ๋ํ๋ ์์ ํ mesh snapshot์ ๋ปํ์ง ์์ต๋๋ค.
์์ฝ ๋คํธ์ํฌ ๋ณ๊ฒฝ์ configured gauge๋ Peer๊ฐ ์ ์ฉ ์ฑ๊ณต์ ๋ณด๊ณ ํ ์ต์ ์กฐ๊ฑด์ ๋ฐ๋ฆ
๋๋ค. networkPending: "true"์ธ Peer๋ ๋ณด๊ณ ์ ๊น์ง ์ง๊ณ์์ ์ ์ธํฉ๋๋ค. ์ํ ๋ณด๊ณ ยทAgent heartbeatยทPrometheus scrape๋งํผ ๊ด์ธก ์ง์ฐ์ด ์์ผ๋ฉฐ, scope: all์ ๋ก์ปฌ ์์ฝ์ด ๊ณ์ ๋์ํ๋ ์ค์๋ ๋ณด๊ณ ๋ฅผ ๋ ๋ฆ์ถ ์ ์์ต๋๋ค.
์์ฝ Peer๋ ์ด๊ธฐ ์ ์ฉ๊ณผ ์ดํ ๋ณ๊ฒฝ๋ง๋ค network_config_applied์ fields.network, reference, after, revision, initial, lateByMs๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ด๊ธฐ ์ด๋ฒคํธ๋ ์์ ์กฐ๊ฑด์ ์ ์ฉ์ ํ์ธํ๋ฉฐ ์ดํ ์ด๋ฒคํธ๋ tc ์ฑ๊ณต ์งํ ๊ธฐ๋กํฉ๋๋ค. ์ง์ฐ์ ์ ํํ ์์ฝ ์์ ๊ธฐ์ค์ผ๋ก ๊ณ์ฐํ๋ฉฐ ์ด๊ธฐ ์ด๋ฒคํธ์๋ ์ด๊ธฐํ ์๊ฐ๋ ํฌํจํฉ๋๋ค. ์ค๊ฐ revision์ ๊ฑด๋๋ฐ๋ฉด ๋ฆ์ ์
์ฅ ๋๋ ํ์ด๋จธ ์ง์ฐ์ ๋ฐ๋ผ์ก์ ๊ฒฝ์ฐ์
๋๋ค. Clock basisยทoffsetยทuncertainty๋ ๊ธฐ์กด ์๊ณ ๋๊ธฐํ ์ด๋ฒคํธ ๊ท์น์ ๋ฐ๋ฆ
๋๋ค. network_config_failed์๋ ์คํจํ revisionยท๊ธฐ์คยท์์ ๊ฒฝ๊ณผ ์๊ฐยท์ค๋ฅ๋ฅผ ๊ธฐ๋กํ๊ณ , Peer๋ ํ์ธ๋์ง ์์ ์กฐ๊ฑด์ผ๋ก ๊ณ์ ์งํํ์ง ์๊ณ ์ค๋ฅ๋ก ์ข
๋ฃํฉ๋๋ค. ์ด ์ด๋ฒคํธ๋ events.jsonl์ ์ ์ฅํฉ๋๋ค. ์๋๋ฆฌ์ค ์ ์ฒด๊ฐ ์ดํ ์คํจํ๋์ง๋ readinessยทpublishยท์ค๋ฅ ์ฒ๋ฆฌ phase์๋ ๋ฌ๋ ค ์์ต๋๋ค. ์์ฝ ๋คํธ์ํฌ ๋ณ๊ฒฝ์ ์ฐธ๊ณ ํ์ญ์์ค.
์ ์ด counter๋ run_id, agent_id, direction, control_type label๋ง ์ฌ์ฉํฉ๋๋ค. IWANT์ IDONTWANT์๋ topic์ด ์๊ณ ํ๋์ RPC๊ฐ ์ฌ๋ฌ topic์ ๋ด์ ์ ์์ผ๋ฏ๋ก Topic filter๋ ์ ์ฉํ์ง ์์ต๋๋ค. send๋ ์๊ฒฉ ์์ ์ด ์๋ outbound queue ์๋ฝ, recv๋ ์ดํ router ์ ์ฑ
๊ฒ์ฌ ์ ๊ด์ธก, drop์ netem ์์ค์ด ์๋ ๋ก์ปฌ queue/ํฌ๊ธฐ ๊ฑฐ๋ถ์
๋๋ค. RPC, entry, ๋ฉ์์ง ID ์ฐธ์กฐ, PRUNE peer-exchange ์๋ฅผ ์๋ก ๋ค๋ฅธ ๋จ์๋ก ์ฝ์ผ์ญ์์ค. RPC๋ณ ์ ํํ topic ์์ metrics.json์ Agent๋ณ ๋์ ์น๋ ๊ฒฐ๊ณผ ZIP์ ๋จ์ต๋๋ค. ์คํ ์งํ ์ ์๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
ํ์ฌ ๊ด๊ณ๋ Dashboard์ ๋ํํ ํ ํด๋ก์ง๊ฐ Peer ์ํ snapshot์ผ๋ก transportยทKademlia ๋ผ์ฐํ
ํ
์ด๋ธยทGossipSub mesh๋ฅผ ๊ฐ๊ฐ ํ์ํฉ๋๋ค. Controller๋ observations.jsonl์๋ ํ๋ณธ ํ๋กํ ์ฝ ๊ทธ๋ํ๋ฅผ ์ ์ฅํ๋ฉฐ, ์ด ๊ทธ๋ํ๋ ํ๋กํ ์ฝ ์์์ ํ ํฝ ๊ฐ์ ์ ํฉ์น๊ณ ์ค๊ฐ ์ ์ด ์ ๋ถ๋ ๊ฐ๋ณ ์ ์ ์์ ๋ณด์กดํ์ง ์์ต๋๋ค. Prometheus์๋ ์ด์ ๋์ํ๋ ์ ์ฒด ๊ทธ๋ํ ์ด๋ ฅ์ด ์์ต๋๋ค.
Grafana ์ธ์
ํจ๋์๋ Run ํํฐ๋ง ์ ์ฉํ๊ณ ๋ฐฑ๋ถ์จ ํ๊ท ์ด ์๋ ์์ ์ ํฉ๊ณ๋ก ์ง๊ณํฉ๋๋ค. ๋ฒ์๋ ๊ด์ธก๋ ์ง๋จ์ ๋ํ ๊ฐ์ด๋ฉฐ ๋ณด์ด์ง ์๋ ๋ชจ์ง๋จ์ ์ฆ๋ช
ํ์ง ์์ต๋๋ค. ๋ฐํ ์์ ๊ฐ์ฉ์ฑ ๊ฒฝ๊ณ ๋ measurementIncomplete๊ฐ ์์ด๋ ํ์ธ๋ ๋ฐํ ์์ ๋๋ฌ๋ฅ ๊ณผ ์์ coverage๋ฅผ ํ์ํ๋ฉฐ, ์ ํํ run ์ ์ฒด์ ํ์ธ๋ ๋ฐํ ์์ ์์ด ํ๋๋ ์์ ๋๋ง N/A์
๋๋ค. ๊ฐ ์ง๊ณ์์ ํ์ธ๋ ๋ฐํ ์์ ๋์ = ์์ + ์ดํ + ์ง์ ์ฌ๋ถ ๋ถ๋ช
์ด ์ฑ๋ฆฝํฉ๋๋ค. ๊ณผ๊ฑฐ ๋ฐํ ํจ๋์ ์ ๊ฒฐ๊ณผ์์ ์ ์ธํ ๊ณผ๊ฑฐ ๋ฐ์ดํฐ๋ฅผ ํ์ํฉ๋๋ค. ์ ํจ๋์ kpl_window_*๋ง ์ฌ์ฉํ๊ณ ์ด์ kpl_delivery_*ยทkpl_propagation_latency_seconds๋ ๊ณผ๊ฑฐ ์๋ฏธ๋ฅผ ์ ์งํ๋ฏ๋ก ์์ง ๋ง์ญ์์ค.
์ ์ฒด deliver์๋ ๋ก์ปฌ ์์ ๋ ํฌํจ๋๋ฏ๋ก ๋ฐํ ์๋ก ๋๋์ด ๋๋ฌ๋ฅ ์ ๊ตฌํ์ง ์์ต๋๋ค. TCP ์ฌ์ ์ก์ ํจํท ์์ค์ ์ง์ฐ์ผ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค. ์งํ ์ ์์ ์์์ ํ์ธํ์ญ์์ค. ๋ฆ์ ๋ฐฐ์น๊ฐ ๊ธฐ๊ฐ gauge์ histogram ๋ฒํท์ ์ ์ ํ ์ ์์ด rate/increase ๋์ ์ง์ ์กฐํํฉ๋๋ค. Grafana ์ง์ฐ์ ์คํ ์ ์ฒด ๋์ ๋ถ์์์ด๋ฉฐ ์ ํ ์๊ฐ ๋ฒ์๋ง์ ๋ถ์์๊ฐ ์๋๋๋ค.
๋์ ์นด์ดํฐ๋ ์ต๊ทผ 300๊ฐ ์น ์ด๋ฒคํธ ๋ฒํผ์ ๋
๋ฆฝ์ ์
๋๋ค. Controller ํ๋ก์ธ์ค๊ฐ ์ฌ์์๋๋ฉด ์นด์ดํฐ๊ฐ ์ด๊ธฐํ๋๋ฉฐ ๊ณผ๊ฑฐ events.jsonl์ ์๋ ์ฌ์ํ์ง ์์ต๋๋ค. Prometheus์ ์ด๋ฏธ ์ ์ฅ๋ ์๊ณ์ด์ ์ ์ง๋๊ณ rate/increase๋ ๊ด์ธก๋ ์นด์ดํฐ ์ฌ์ค์ ์ ์ฒ๋ฆฌํฉ๋๋ค. ๋จ, scrape ์ ์ ์ฌ๋ผ์ง ์ด๋ฒคํธ๋ telemetry ์ ์ก ์คํจ๋ฅผ ๋ณต๊ตฌํ๋ ๊ธฐ๋ฅ์ ์๋๋๋ค. increase๋ scrape ํ๋ณธ์ผ๋ก ์ถ์ ํ ๊ตฌ๊ฐ ์ฆ๊ฐ๋์ด๋ฏ๋ก ๋์ ์ ์ ์ด๋ฒคํธ ์์ ํญ์ ์ ํํ ์ผ์นํ์ง๋ ์์ต๋๋ค.
์ ์ฅ Run์ ์ญ์ ํ๋ฉด Controller์ ํด๋น ์ด๋ฒคํธ ์นด์ดํฐ, ์งํ ์ด๊ธฐํ ์บ์, ์์ธ live ์ง๊ณ, phase ํ์ด๋ฐ ์ด๋ ฅ๊ณผ ์ต๊ทผ ์ด๋ฒคํธ ์ฐธ์กฐ๋ฅผ ํด์ ํฉ๋๋ค. ์์ ์ญ์ ํ์์ ์ฌ์์ ํ์๋ ๋ฆ์ telemetry๋ heartbeat ์ด๊ธฐํ๊ฐ ํด๋น ์นด์ดํฐ๋ฅผ ๋ค์ ๋ง๋ค์ง ๋ชปํ๊ฒ ํฉ๋๋ค. ์ข ๋ฃ Peer ์ธ๋ฒคํ ๋ฆฌ๋ ์๋ช ์ฃผ๊ธฐ ์ฐจ๋จ์ ์ํด ์ ์งํฉ๋๋ค. Prometheus๊ฐ ์ด๋ฏธ scrapeํ ํ๋ณธ์ ์์ฒด ๋ณด์กด ์ ์ฑ ์ ๋ฐ๋ผ ๋จ์ต๋๋ค. ์ญ์ ํ์ง ์์ ์๋ฃ Run์ live ์ง๊ณ๋ Run ์ญ์ ๋๋ Controller ์ฌ์์๊น์ง ์ ์งํฉ๋๋ค.
KPL ์ฌ์ฉ๋์ ๊ฐ Agent ์ปจํ
์ด๋์ ์์ ์คํ ์ค Peer ์ปจํ
์ด๋์ ํฉ๊ณ์
๋๋ค. CPU๋ Docker ํธ์คํธ์ ์ ์ฒด ๋
ผ๋ฆฌ CPU ์ฉ๋์ 100%๋ก ํ์ํ๋ฉฐ ๊ณต์์ 100 ร ์ฌ์ฉ ์ฝ์ด ์ / ํธ์คํธ ๋
ผ๋ฆฌ CPU ์์
๋๋ค. ์๋ฅผ ๋ค์ด 16์ฝ์ด ํธ์คํธ์์ 4์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ฉด 25%์
๋๋ค. Agent๋ Docker stats์ online_cpus ๋๋ ๊ตฌํ per-CPU ๋ฐฐ์ด์ ์ฝ๊ณ , ์์ผ๋ฉด ์ ํ์๊ฐ๊ณผ ์บ์๋ฅผ ์ ์ฉํ /info ์กฐํ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ถ๋ชจ๋ ํธ์คํธ ์ ์ฒด ์ฉ๋์ด๋ฉฐ Agent ์ปจํ
์ด๋์ CPU quota๋ Peer capacity ์ค์ ์ด ์๋๋๋ค. ๋ถ์๋ KPL ์ปจํ
์ด๋๋ง ํฌํจํ๋ฉฐ ๋ค๋ฅธ ํธ์คํธ ํ๋ก์ธ์ค๋ ํฌํจํ์ง ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ cgroup ์ฌ์ฉ๋ ํฉ๊ณ์ด๋ฉฐ ๊ธฐ๋ณธ ํ์๋ inactive file cache๋ฅผ ์ ์ธํ working set, ์บ์ ํฌํจ ์๋ณธ ์ฌ์ฉ๋๋ ๋ณ๋๋ก ์ ๊ณตํฉ๋๋ค.
Agent + Peers(๊ธฐ์กด ํฉ๊ณ), Agent only(Agent ์ปจํ
์ด๋), Peers only(์์ ์คํ ์ค Peer ์ปจํ
์ด๋ ํฉ๊ณ)๋ฅผ ํจ๊ป ์ ๊ณตํฉ๋๋ค. ๊ฐ์ Docker ์ฝ๊ธฐยทํ๋ณธ ์๊ฐยทํธ์คํธ CPU ์๋ฅผ ์ฌ์ฌ์ฉํ๋ฏ๋ก ๋ถ๋ฆฌ ์ธก์ ์ ์ํ ์ถ๊ฐ ํด๋ง์ด๋ Docker ์์ฒญ์ด ์์ต๋๋ค. ๊ฐ ๋ฒ์๋ ์ธก์ /๋์ ์ปจํ
์ด๋ ์์ ์ ํจ์ฑ์ ๋ณ๋๋ก ํ๋จํฉ๋๋ค. Agent ์ปจํ
์ด๋ ์ฌ์ฉ๋์ ๊ธฐ์กด process_*์ ํ๋ก์ธ์ค CPUยทresident memory์ ๊ตฌ๋ถํ๋ฉฐ, ๊ธฐ์กด ํ๋ก์ธ์ค ์ ์ฉ ํจ๋๋ ์ ์งํฉ๋๋ค.
์ ์ฒด Agent CPU๋ ์ต์ ํ๋ณธ๊ณผ CPU ์๊ฐ ์๋ Agent์ ๋ํด 100 ร ์ฌ์ฉ ์ฝ์ด ํฉ๊ณ / ํธ์คํธ ๋
ผ๋ฆฌ CPU ํฉ๊ณ๋ก ์ฉ๋ ๊ฐ์ค ๊ณ์ฐํฉ๋๋ค. ๋ฐฑ๋ถ์จ์ ํฉ์ด๋ ๋จ์ ํ๊ท ์ด ์๋๋๋ค. ํ์ค ๋ฐฐํฌ์ฒ๋ผ ํธ์คํธ๋ง๋ค Agent ํ๋๋ฅผ ์คํํ ๋ ์ฐธ์ฌ ํธ์คํธ ์ ์ฒด ์ฉ๋์์ KPL์ด ์ฐจ์งํ๋ ๋น์จ์
๋๋ค. ๋ฉ๋ชจ๋ฆฌ๋ ์ธก์ ๊ฐ๋ฅํ ๋ชจ๋ Agent๋ฅผ ํฉ์ฐํฉ๋๋ค. ๊ตฌํ Agent์ฒ๋ผ ํธ์คํธ CPU ์๊ฐ ์์ผ๋ฉด ๋ฉ๋ชจ๋ฆฌ๋ ํ์ํ๊ณ CPU ๋ฐฑ๋ถ์จ์ ๋ฏธ์์ผ๋ก ๋จ๊ธฐ๋ฉฐ, ์ ์ฒด CPU ์ธก์ Agent ์๋ ๋ณ๋๋ก ์๋ฆฝ๋๋ค. ๊ธฐ์กด ์์ ์ฝ์ด gauge์ process counter๋ ์ ์งํฉ๋๋ค. Grafana์ Agent ํ๋ก์ธ์ค ์ ์ฉ CPU ํจ๋๋ ํธ์คํธ ์ ์ฒด๋ฅผ 100%๋ก ํ์ฐํ๋ฉฐ, ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ๋ KPL ํฉ๊ณ์ ๋ณ๋๋ก ์ ์งํฉ๋๋ค.
Agent๋ ๋ณ๋ ๋ฃจํ์์ ์ฝ 10์ด๋ง๋ค ๋ก์ปฌ Docker Engine์ ์ฝ์ผ๋ฉฐ ๋์ ์ฝ๊ธฐ 4๊ฐ, ํ ์ฃผ๊ธฐ ์ ํ์๊ฐ 8์ด๋ฅผ ์ ์ฉํฉ๋๋ค. one-shot ์ฝ๊ธฐ์ ์ด์ CPU ์นด์ดํฐ๋ฅผ ์ฌ์ฌ์ฉํ๊ณ ์ฒ์ ๊ด์ธกํ ์ปจํ ์ด๋๋ง ๊ณตํต 1์ด ๋๊ธฐ ํ ๋ค์ ์ฝ์ต๋๋ค. ํ๋ณธ์ด๋ Peer๋ง๋ค Docker CLI ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค์ง ์์ผ๋ฉฐ Prometheus scrape์ heartbeat๋ Docker ์ฝ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค. ์ฃผ๊ธฐ ์์ ์ ์คํ ์ค์ธ ์ปจํ ์ด๋ ๋ชฉ๋ก์ ์ธก์ ๋์์ผ๋ก ์ผ์ผ๋ฏ๋ก, ํ๋ณธ ์ฌ์ด์ ์์ฑยท์ข ๋ฃ๋ ์ปจํ ์ด๋๋ ์งง์ ํผํฌ๋ ๋ณต์ํ ์ ์์ต๋๋ค.
์ผ๋ถ ์ธก์ ์ด ๋น ์ ธ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ฐ์ ํ์ํฉ๋๋ค. 47๊ฐ ์ค 46๊ฐ๋ฅผ ์ธก์ ํ๋ค๋ฉด ํด๋น 46๊ฐ์ CPUยท๋ฉ๋ชจ๋ฆฌ ํฉ๊ณ๋ฅผ ํ์ํ๊ณ Partial ยท 46/47 containers๋ฅผ ํจ๊ป ๋ณด์ฌ์ค๋๋ค. ๋๋ฝ ์ปจํ ์ด๋์ ์ฌ์ฉ๋์ ์ถ์ ํ์ง ์์ต๋๋ค. ์ ์ฒด ์ธก์ ์คํจ, Offline Agent, 30์ด๋ณด๋ค ์ค๋๋ ํ๋ณธ์ ํ์ฌ ํฉ๊ณ์ ํฌํจํ์ง ์์ผ๋ฉฐ ๋์ ์ปจํ ์ด๋๊ฐ ์๋๋ฐ ์ธก์ ๋ ์ปจํ ์ด๋๊ฐ 0๊ฐ๋ฉด N/A๋ก ๋จ๊น๋๋ค. ์ ์ ์กฐํ ๊ฒฐ๊ณผ ์คํ ์ค Peer๊ฐ 0๊ฐ๋ผ๋ฉด Peers ๋ฒ์๋ CPUยท๋ฉ๋ชจ๋ฆฌ 0์ ์๋ฃ ํ๋ณธ์ผ๋ก ๊ธฐ๋กํ๋ฉฐ, ์ธ๋ฒคํ ๋ฆฌ ์กฐํ ์คํจ๋ฅผ ๋น ๋ชฉ๋ก์ผ๋ก ์ทจ๊ธํ์ง ์์ต๋๋ค. Agent ์ปจํ ์ด๋ ์ธก์ ๋ง ์คํจํด๋ ์ธก์ ๊ฐ๋ฅํ Peer ๊ฐ์ ์ ์งํ๊ณ ๋ฐ๋์ ๊ฒฝ์ฐ๋ ๊ฐ์ต๋๋ค. ๋ฒ์๋ณ ์ ์ฒด ํฉ๊ณ๋ ๊ฐ๊ฐ์ ์ธก์ Agent ์์ CPU ๋ถ๋ชจ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ๋๋ฝ๋ ํ๋ณธ์ด ์๋ก ๋ค๋ฅด๋ฉด ์ ์ฒด ๋ฐฑ๋ถ์จ์ ํฉ์ด ๊ธฐ์กด ํฉ๊ณ์ ๋ค๋ฅผ ์ ์์ต๋๋ค. churn ์ค ์ฌ์ฉ๋ ๊ฐ์๋ฅผ ํด์ํ ๋ ์ธก์ ๋น์จ๋ ํจ๊ป ํ์ธํ์ญ์์ค.
Controller๋ agent_id gauge๋ก kpl_agent_cpu_usage_percent(ํธ์คํธ ๋ฐฑ๋ถ์จ), kpl_agent_cpu_capacity_cores(๋ถ๋ชจ), kpl_agent_cpu_usage_cores(์์ ์ฌ์ฉ ์ฝ์ด ์), kpl_agent_memory_working_set_bytes, kpl_agent_memory_usage_bytes, kpl_agent_resource_sample_timestamp_seconds, kpl_agent_resource_sample_complete, kpl_agent_resource_containers(kind="expected" ๋๋ "measured")๋ฅผ ์ ๊ณตํฉ๋๋ค. ๋ถ๋ถ ์ธก์ ์ ๊ฐ์ ๋ด๋ณด๋ด๋๋ผ๋ complete flag๊ฐ 0์ด๋ฉฐ, stale/offline/์ธก์ ๋ถ๊ฐ ์ํ์ measured ์ปจํ
์ด๋ ์๋ 0์
๋๋ค. Grafana๋ Agent๋ณยท์ ์ฒด ๊ฐ์ค CPU, ๋ฉ๋ชจ๋ฆฌ ํฉ๊ณ์ ์ปจํ
์ด๋ ์ธก์ ๋น์จ์ ํ์ํฉ๋๋ค. ๊ธฐ์กด 5์ด Controller scrape๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ปจํ
์ด๋๋ณ TSDB label์ ์ถ๊ฐํ์ง ์์ต๋๋ค.
์ kpl_agent_component_* gauge๋ ์ CPUยท๋ฉ๋ชจ๋ฆฌยทํ๋ณธ ์๊ฐยท์๋ฃ ์ฌ๋ถยท์ปจํ
์ด๋ ์ suffix๋ฅผ ๊ทธ๋๋ก ์ฌ์ฉํ๋ฉฐ agent_id, component="agent" ๋๋ component="peers" label์ ๊ฐ์ง๋๋ค(์ปจํ
์ด๋ ์์๋ kind๋ ํฌํจ). ๊ธฐ์กด ํฉ๊ณ kpl_agent_* ์ด๋ฆ๊ณผ label์ ์ ์งํฉ๋๋ค. Grafana์๋ Agent ์ปจํ
์ด๋ยทPeer ์ปจํ
์ด๋๋ณ CPU/๋ฉ๋ชจ๋ฆฌ, ๋ฒ์๋ณ ์ ์ฒด ํฉ๊ณ, ๋์/์ธก์ ์ปจํ
์ด๋ ์ ํจ๋์ ์ถ๊ฐํฉ๋๋ค. Agent๋ง๋ค ๊ณ ์ ๋ ๋ ๋ฒ์์ด๋ฉฐ Peer๋ง๋ค ์๋ฆฌ์ฆ๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค.
Agent Status โ Current CSV๋ ํ์ฌ๊ฐ, complete/partial ์ํ, ์ธก์ ๋ฒ์์ ์ ์ฒด ํฉ๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค. CPU๋ cpu_percent_host, ๋ถ๋ชจ๋ cpu_capacity_cores์
๋๋ค. 5๋ถ๋ถํฐ 24์๊ฐ๊น์ง ๊ธฐ๊ฐ์ ์ ํํด History CSV ๋๋ Summary CSV๋ก ํ๋ณธ ์ยทํ๊ท ยท์ต์๊ฐยท์ต๋๊ฐยท์ฒซ/๋ง์ง๋ง ์๊ฐ์ ๋ฐ์ต๋๋ค. ์ด๋ ฅ CPU๋ cpu_percent ์งํ์ percent_host ๋จ์๋ฅผ ์ฌ์ฉํ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๋ bytes์
๋๋ค. ์ธก์ ๋ฒ์๋ containers_expected, containers_measured ์๋ฆฌ์ฆ๋ก ๋ด๋ณด๋
๋๋ค. ํ๊ท ์๋ ๋ถ๋ถ ์ธก์ ๊ฐ๋ ํฌํจํ๋ฉฐ ๋๋ฝ ์ฌ์ฉ๋์ ์ถ์ ํ๊ฑฐ๋ ๋ณด๊ฐํ์ง ์์ต๋๋ค. ํ๊ท ์ ์ ํํ ์๊ฐ ์ ๋ถ์ด ์๋๋๋ค. CPU ๋ฐฑ๋ถ์จ์ ๋ณ๋ ์ gauge๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ด์ 1์ฝ์ด ๊ธฐ์ค ๊ฐ์ ์๊ฑฐ๋ ๊ณผ๊ฑฐ ๊ฐ์ ํ์ฌ CPU ์๋ก ๋๋์ง ์์ต๋๋ค. ์ CPU ์ด๋ ฅ์ AgentยทController ์
๊ทธ๋ ์ด๋ ํ ๋ณด๊ณ ๋๋ ์์ ๋ถํฐ ์ ๊ณต๋ฉ๋๋ค. ์ด๋ ฅ์ Prometheus์๋ง ๋ณด์กดํ๊ณ ์คํ ZIPยทSSEยทNAS ์คํ ๋ก๊ทธ์๋ ์ถ๊ฐํ์ง ์์ต๋๋ค.
ํ์ฌยท์ด๋ ฅยท์์ฝยท๊ตฌ๊ฐ CSV๋ scope๊ฐ agent_and_peers, agent, peers์ธ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ธฐ๋ก์ ํจ๊ป ๋ด๋ณด๋
๋๋ค. ๋ค์ด๋ก๋ ๋ถ์ ์ scope๋ณ๋ก ๊ตฌ๋ถํด์ผ ํ๋ฉฐ ์ธ ๋ฒ์๋ฅผ ์ ๋ถ ๋ํ๋ฉด ๊ฐ์ ์ฌ์ฉ๋์ ์ค๋ณต ๊ณ์ฐํฉ๋๋ค. ๋ถ๋ฆฌ ์ด๋ ฅ์ AgentยทController ์
๊ทธ๋ ์ด๋ ํ Prometheus๊ฐ ์ gauge๋ฅผ ์์งํ ์์ ๋ถํฐ ์๊น๋๋ค. ๊ตฌํ Agent์ ๊ณผ๊ฑฐ ํฉ๊ณ ์ ์ฉ ๊ธฐ๋ก์ ๋ถ๋ฆฌ๊ฐ์ 0์ผ๋ก ์ฑ์ฐ๊ฑฐ๋ ํ๋ก์ธ์ค counter๋ก ์ถ์ ํ์ง ์์ต๋๋ค.
Agent Status์ Interval measurement์์ Start measurement๋ก Controller์ ํ์ฌ ์๊ฐ์ ์์์ ์ผ๋ก ์ ์ฅํ๊ณ Stop measurement๋ก ์ข
๋ฃ ์๊ฐ์ ํ์ ํฉ๋๋ค. ์๋ฃ ๊ตฌ๊ฐ์ ์ ํํด Interval CSV ๋๋ Interval summary CSV๋ฅผ ๋ฐ์ต๋๋ค. ์งํ ์ค์ธ ๊ตฌ๊ฐ ํ๋๋ฅผ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ณต์ ํ๋ฉฐ ํ์ด์ง๋ฅผ ๋ซ์๋ ์ ์ง๋ฉ๋๋ค. Controller ๋ฐ์ดํฐ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ณด์กดํ๋ฉด ์ฌ์์ ํ์๋ ๋ณต์๋ฉ๋๋ค. 24์๊ฐ์ด ์ง๋๋ฉด ์๋ ์ข
๋ฃํฉ๋๋ค. ์ต๊ทผ 100๊ฐ ๊ตฌ๊ฐ์ runs ๋ฐ์ <data-dir>/agent-resource-measurements.json์ ๋ณด์กดํ๋ฉฐ, ํ๋์ ๋๋ฌํ ๋ค ์ ๊ตฌ๊ฐ์ ์์ํ๋ฉด ๊ฐ์ฅ ์ค๋๋ ๊ตฌ๊ฐ ๊ธฐ๋ก์ ์ ๊ฑฐํฉ๋๋ค. ํ์ฌ๊ฐ๊ณผ ์ต๊ทผ ์ด๋ ฅ ๋ด๋ณด๋ด๊ธฐ๋ ๊ณ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ตฌ๊ฐ ๋ค์ด๋ก๋ ์์ Delete interval๋ก ์ ํํ ์๋ฃ ์ธก์ ์ ์ญ์ ํฉ๋๋ค. ์งํ ์ค ์ธก์ ์ ๋จผ์ ์ข ๋ฃํ์ญ์์ค. ์ญ์ ๋ ์ฌ์์ ํ์๋ ์ ์ง๋๋ฉฐ ์ ์ฅ ๊ตฌ๊ฐยท๋ค์ด๋ก๋ ํญ๋ชฉ์ ์ ๊ฑฐํฉ๋๋ค. ๊ณต์ฉ Prometheus ์ด๋ ฅ๊ณผ ์ด๋ฏธ ๋ฐ์ CSV๋ ์ ์งํฉ๋๋ค.
Agent Status โ โ๏ธ โ Disable Agent์์ ID๋ณ ์ฐธ์ฌ ์ฌ๋ถ๋ฅผ ์ ์ฅํฉ๋๋ค. ๋นํ์ฑ Agent์ ํ๋์จ์ด ์ฌ์ฉ๋์ Excluded๋ก ํ์ํ๋ฉฐ ์ ์ฒด ํฉ๊ณ์ ์ฌ์ฉ๋๊ณผ CPU ๋ถ๋ชจ์์ ๋ชจ๋ ์ ์ธํ๊ณ ํ ํด๋ก์ง ๋ฐ ์ ๋ฐฐ์น ํ๋ณด์์๋ ์จ๊น๋๋ค. Agent์ ๊ธฐ์กด Peer๋ ๊ณ์ ์คํ๋ฉ๋๋ค. ๋ค์ scrape๋ถํฐ Controller ๋ฆฌ์์ค gauge์์ ์ ์ธํ๊ณ ๋ค์ discovery ๊ฐฑ์ ๋ถํฐ ํ๋ก์ธ์ค ์ ์ฉ Agent target๋ ์ ์ธํฉ๋๋ค. ๊ณผ๊ฑฐ ์ด๋ ฅ์ ์๊ธํด์ ์ ์ธํ๊ฑฐ๋ ์ง์ฐ์ง ์์ผ๋ฉฐ, ๋นํ์ฑํ ์์ ์ ํฌํจํ ๊ตฌ๊ฐ์๋ ํด๋น Agent๊ฐ ์ง๊ณ ๋์์ด๋ ์์ ์ ํ๋ณธ์ด ๋จ์ต๋๋ค. ์ฌํ์ฑํํ๋ฉด ์ฐธ์ฌ๋ฅผ ์ฌ๊ฐํฉ๋๋ค.
๊ตฌ๊ฐ์ Prometheus scrape ์๊ฐ์ด (startedAt, endedAt]์ ์ํ๋ ํ๋ณธ์ ์ ํํฉ๋๋ค. ์์ง๊ธฐ๋ฅผ ์ถ๊ฐ ์คํํ๊ฑฐ๋ Agent ์์ง ์ฃผ๊ธฐ๋ฅผ ๋ฐ๊พธ์ง ์์ต๋๋ค. CPU ๊ฐ์ ์ง์ Agent ์์ง ๊ธฐ๊ฐ(๋ณดํต ์ฝ 10์ด)์ ์์ฝํ๋ฏ๋ก ์์ ๊ฒฝ๊ณ ์ด์ ์ ์ผ๋ถ ์๊ฐ์ด ๋ฐ์๋ ์ ์๊ณ , ์ฌ๋ฌ scrape์ ๊ฐ์ ์ต์ Agent ํ๋ณธ์ด ๊ธฐ๋ก๋ ์๋ ์์ต๋๋ค. ๋๋ฌด ์งง์ ๊ตฌ๊ฐ์ ํ๋ณธ์ด ์์ ์ ์์ต๋๋ค. Controller ์ข
๋ฃยท์ฌ์์ ๋ฑ์ ๋๋ฝ ๊ตฌ๊ฐ์ ํต๊ณ์์ ์ ์ธํฉ๋๋ค. ์ข
๋ฃ๋ Prometheus ์์ด๋ ๊ฐ๋ฅํ๋ฉฐ ๋ค์ด๋ก๋๋ Prometheus ๋ณต๊ตฌ ํ ์ฌ์๋ํ ์ ์์ต๋๋ค. ๊ตฌ๊ฐ ์ธ๋ฑ์ค๋ ์๊ฐ๋ง ๋ณด๊ดํ๋ฏ๋ก ์ค์ ๋ค์ด๋ก๋ ๊ฐ๋ฅ ์ฌ๋ถ๋ Prometheus ๋ณด์กด ๊ธฐ๊ฐ๊ณผ ๋ด๋ณด๋ด๊ธฐ ํฌ๊ธฐ ์ ํ์ ๋ฐ๋ฆ
๋๋ค. ์ฅ๊ธฐ ๋ณด๊ดํ๋ ค๋ฉด CSV๋ฅผ ์ ์ฅํ์ญ์์ค.
Swarm์ KPL_SWARM_TASK_NAME์ task ์ด๋ฆ์ผ๋ก Agent ์์ ์ ์๋ณํ๊ณ ๊ธฐ์กด Docker socket mount์์ ์ฝ๊ธฐ ์ ์ฉ ์กฐํ๋ฅผ ์ํํฉ๋๋ค. ๋ณ๋ ์คํ์์๋ --self-container <container-name>, --docker-socket <socket-path>๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ณ์๋ socket์ด ์์ผ๋ฉด Peer๋ง ํฉ์ฐํด ํ์ํ์ง ์๊ณ KPL ์ธก์ ์ ์ฌ์ฉํ ์ ์๋ค๊ณ ์๋ฆฝ๋๋ค. Controller์ ์ด๋ ฅ ์กฐํ ์ฃผ์๋ --prometheus-url / KPL_PROMETHEUS_URL์ด๋ฉฐ stack์ http://prometheus:9090, ๋ณ๋ Controller์ ๊ธฐ๋ณธ๊ฐ์ http://127.0.0.1:9090์
๋๋ค. Prometheus๊ฐ ์์ด๋ ํ์ฌ๊ฐ์ ํ์ํฉ๋๋ค. ์ด๋ ฅ ๋ค์ด๋ก๋๋ ๋์๋ณด๋ ๋ก๊ทธ์ธ์ ์ฌ์ฉํ๋ฉฐ ๋์ ์์ฒญ 2๊ฐยท15์ดยท์๋ต 16 MiBยท250,000๊ฐ ํ๋ณธ์ผ๋ก ์ ํํ๋ฏ๋ก ํฐ ์์ฒญ์ ๊ธฐ๊ฐ์ ์ค์ด์ญ์์ค. ์์ง์ ์ ์ฉํ๋ ค๋ฉด ControllerยทAgent๋ฅผ ์ฌ๋น๋ยท์ฌ๋ฐฐํฌํ๊ณ ๋ฒ์ ์ด ๋ถ์ Grafana dashboard config๋ ๋ฐ์ํด์ผ ํฉ๋๋ค. ๊ณผ๊ฑฐ์ ์์งํ์ง ์์ ๊ฐ์ ์๊ธ ์์ฑํ ์ ์์ต๋๋ค.
Controller๋ ๋ณธ๋ฌธ ๋์ฝ๋ฉ ์ ์ telemetry ์๋ฝ ์๋ฅผ ์ ํํฉ๋๋ค. ์ ํํ ์ ํ๊ณผ ์ฌ์๋ ๊ณ์ฝ์ API์ ์์ต๋๋ค. kpl_controller_telemetry_inflight_requests๋ ๋์ฝ๋ฉยท์ ์ฅ ์ค ์์ฒญ, kpl_controller_telemetry_waiting_requests๋ ๋ณธ๋ฌธ์ ์ฝ์ง ์์ ๋๊ธฐ ์์ฒญ, kpl_controller_telemetry_rejected_total์ ๋์ฝ๋ฉ ์ ์ ๊ฑฐ์ ํ ์์ฒญ์ ๋ํ๋
๋๋ค. ๊ฑฐ์ ์ด ์ด๋ฏธ ์๋ฝํ telemetry์ ํ๊ธฐ๋ฅผ ๋ปํ์ง๋ ์์ผ๋ฏ๋ก Agent spool ์ ์ฒดยท์ ์ฅ ์ง์ฐ๊ณผ ํจ๊ป ํด์ํ์ญ์์ค. /metrics๋ ๋์ ์์ง ๋ ๊ฐ๋ฅผ ํ์ฉํ๊ณ ์ด๊ณผ ์์ฒญ์๋ 503์ ๋ฐํํฉ๋๋ค. ์์ง ํด๋ผ์ด์ธํธ๊ฐ ์๊ฐ ์ด๊ณผ๋์ด๋ ์์ง๊ณผ ์๋ต์ด ๋๋ ๋๊น์ง ํด๋น ์ฌ๋กฏ์ ์ ์งํฉ๋๋ค.
Live session-window-v1 ์งํ๋ ์ธ์
์ฆ๊ฑฐ๋ฅผ ๋ณด์กดํ๋ฉด์ ๋ณ๋์ legacy ์์ ์ยทcohort ์ธ๋ฑ์ค๋ฅผ ์ค๋ณต ๋ณด๊ดํ์ง ์์ต๋๋ค. ์บ์๋ ์ ํ ํ๋ณธ ์ ์ฒด์ ๋ณต์ฌ๋ณธ ๋์ ์ง๊ณํ ์ง์ฐ histogram bucket์ ์ ์งํฉ๋๋ค. ์ ์ฅ ๋ถ์์ ์๋ณธ ๋ก๊ทธ์์ ์์ ๊ทธ๋ฃนยทํ๋ณธ ์์ธ๋ฅผ ๊ณ์ ์ฌ๊ตฌ์ฑํฉ๋๋ค. ๋ฆ์ ์ฆ๊ฑฐ์ ๋๋ฌ ๊ธฐํ ๊ฒฝ๊ณผ์๋ ๊ฐ์ ์ ํํ ์ธก์ ์ ๊ฐฑ์ ํฉ๋๋ค. ์ง๊ณ๋ Run๋ณ ์ ๊ธ์ ์ฌ์ฉํ๋ฏ๋ก ๋๋ฆฐ ์ง๊ณ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ์ธ๋ฒคํ ๋ฆฌยท์๊ตฌ ์ ์ฅ ์ ๊ธ์ ์ ์ ํ์ง ์์ต๋๋ค. Dashboard SSE๋ ์ ํ๋ snapshot ๊ณ์ฐ์ ๊ณต์ ํ๊ณ ์ทจ์๋ ์กฐํ๋ฅผ ํด์ ํฉ๋๋ค.
์ด ๋ณ๊ฒฝ์ด Controller ์ ์ฒด heap์ ์ํ์ ์ ํ์ง๋ ์์ต๋๋ค. Run ์ธก์ ์ฆ๊ฑฐ๋ ๊ฒฐ๊ณผ ์ญ์ ์ ๊น์ง ๋ฆ์ ๋ณด์ ์ ์ํด ๋ณด์กดํ๊ณ , ์ข
๋ฃ Peer ์๋ณ์๋ ์๋ช
์ฃผ๊ธฐ ์ฐจ๋จ์ ์ํด ์ ์งํ๋ฏ๋ก ๋ณด๊ดํ Runยท๊ด์ธก ์์ ๋ฐ๋ผ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฆ๊ฐํ ์ ์์ต๋๋ค. Controller ํธ์คํธ์ MemAvailableยทํ์ผ/slab ์บ์๋ฅผ Controller ํ๋ก์ธ์ค RSSยทGo heapยท์ปจํ
์ด๋ working set๊ณผ ๋น๊ตํ๊ณ PrometheusยทGrafana๋ ๋ณ๋๋ก ํ์ธํ์ญ์์ค. MemFree๊ฐ ๋ฎ๋ค๋ ์ฌ์ค๋ง์ผ๋ก Go ๋์๋ฅผ ํ์ ํ ์๋ ์์ต๋๋ค. ์ ์ ์ด์์ ๊ฐ์ GC๋ ์ปค๋ ์บ์ ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค.
Agent๋ Peer ์ปจํ
์ด๋ ์ ๊ฑฐ๊ฐ ํ์ธ๋๋ฉด ์คํจํ ํ๋ก์ธ์ค๊น์ง ํฌํจํด ํ ํด๋ก์งยท์ ์ snapshot์ ํด์ ํฉ๋๋ค. Controller๊ฐ ํ์ธํ ์ข
๋ฃ ์ด๋ ฅ์ ์ต๊ทผ 64๊ฐ๋ง ๋ฉ๋ชจ๋ฆฌ์ ๋จ๊ธฐ๊ณ ์ค๋๋ ์ถ์ฝ ์๋ณ์์ ์คํ ์ธ๋ ์ฐจ๋จ ์ ๋ณด๋ Agent ๋ก์ปฌ peer-history/์ ๋ณด๊ดํฉ๋๋ค. runs ์๋๊ฐ ์๋๋๋ค. ์ข
๋ฃ Peer๋ ๊ฐ๋ณ JSON ํ์ผ ๋์ bbolt DB ํ์ผ ํ๋์ธ peer-history/nodes์ ๋ณด๊ดํ๊ณ , runs/์ fences/์๋ ์คํ๋ณ ์ ๋ณด๋ง ๋ก๋๋ค. ๋์คํฌ ํค๋ก ์กฐํํ๋ฉฐ Controller ์ฌ๋ฑ๋ก ์์๋ ์ ์ฒด ์ด๋ ฅ์ Go heap์ ๋ค์ ์ฌ๋ฆฌ์ง ์๊ณ ์ ํ๋ ํ์ด์ง๋ก ๋ณต๊ตฌํฉ๋๋ค. ๋คํธ์ํฌ ์ ์ก ์ค์๋ DB ํธ๋์ญ์
์ ์ ์งํ์ง ์์ต๋๋ค. ๋ฏธํ์ธ ์ข
๋ฃ ๊ธฐ๋ก๊ณผ ์ ๊ฑฐ ์คํจ ์ปจํ
์ด๋๋ ๋ฒ๋ฆฌ์ง ์์ต๋๋ค. ์ ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์๋ฃ ๊ธฐ๋ก ๋๋ ์ด๋ฒคํธ ํ ์ง์
์ ๊ธฐ๋ค๋ฆฌ๋ ์ข
๋ฃ ํ์์ด ๊ฐ๊ฐ 4,096๊ฐ์ ๋๋ฌํ๋ฉด ์ ๋ฌ/์ ์ฅ์ ๋ณต๊ตฌ ์ ๊น์ง ์ ๊ท ์์ฑ์ 503์ ๋ฐํํ๊ณ ๊ธฐ์กด Peer๋ ๊ณ์ ์คํํฉ๋๋ค. ์ค๋ณต ID ๋ฐ ์ธ๋ ์ฐจ๋จ ๊ฒ์ฌ๋ฅผ ์ ์งํ๋ ค๋ฉด Agent ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ ๋ณด์กดํ์ญ์์ค.
์ฒซ ์์ ์ ๊ธฐ์กด peer-history/nodes/ JSON์ ์ ํ๋ batch๋ก ๋ณต์ฌยท๊ฒ์ฆํ๊ณ ๊ฒฝ๋ก๋ฅผ ์์์ ์ผ๋ก ๊ตํํ์ฌ DB๋ฅผ ์ค์นํฉ๋๋ค. ์ด ๋ณํ์๋ rename-exchange๋ฅผ ์ง์ํ๋ Linux ํ์ผ์์คํ
์ด ํ์ํ๋ฉฐ ์คํจํ๋ฉด ์๋ณธ์ ๋จ๊ธฐ๊ณ ์์ ์ค๋ฅ๋ฅผ ๋ณด๊ณ ํฉ๋๋ค. ๊ธฐ์กด ๋๋ ํฐ๋ฆฌ๋ nodes.migrating/๊ฐ ๋๋ฉฐ ์ ์ง๋ณด์ ์์
์ด DB์ ๋์กฐํ์ฌ ์ผ์นํ๋ ํ์ผ์ ํ๋น ์ต๋ 128๊ฐ์ฉ ์ ๋ฆฌํฉ๋๋ค. ์ฌ์์ ํ์๋ ์ ๋ฆฌ๋ฅผ ์ด์ด๊ฐ๋๋ค. ๋ณํ๋ nodes ๊ฒฝ๋ก๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ๊ธฐ๋ํ๋ ๊ตฌ๋ฒ์ Agent์ ์์์ ๋ง์ ์ค๋ณต ID ์ฐจ๋จ ์ ๋ณด๊ฐ ์กฐ์ฉํ ๋๋ฝ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์ด ํ์์ ์ง์ํ๋ Agent๋ฅผ ๊ณ์ ์ฌ์ฉํด์ผ ํ๋ฉฐ telemetry ์ ๋ฌ์ ๋๋ด๋๋ผ๋ ๋ณํ๋ ์ด๋ ฅ์ ๊ตฌ๋ฒ์ ์ด๋ฏธ์ง๋ก ์ฝ์ ์๋ ์์ต๋๋ค.
Agent /metrics์์ kpl_local_history_records{kind="peers"|"run_fences"}, kpl_local_history_retired_total{kind="peers"|"run_fences"}, kpl_local_history_cleanup_errors_total์ ์ ๊ณตํ๋ฉฐ ๋ชจ๋ agent_id ๋ผ๋ฒจ์ ์ฌ์ฉํฉ๋๋ค. ์ ์ ์ํ์์ ํ์ธ๋ ๊ธฐ๋ก์ Peer 64๊ฐยท์ฐจ๋จ ์บ์ 128๊ฐ๋ก ์ ๋ฆฌ๋๊ณ ์งํ ์ค์ธ ํ์ธ/์ ๋ฆฌ ์์
๋งํผ ์ผ์์ ์ผ๋ก ๋ ์ ์์ต๋๋ค. kpl_local_cleanup_pending, kpl_local_telemetry_queue_events, go_memstats_heap_alloc_bytes, process_resident_memory_bytes๋ฅผ ํจ๊ป ํ์ธํ์ญ์์ค. Go์ ์ฌ์ฉ ์ค heap, ํ๋ก์ธ์ค RSS, ์ปจํ
์ด๋ working set์ ๋ค๋ฅธ ๊ฐ์ด๋ฏ๋ก ๊ฐ์ฒด๋ฅผ ํด์ ํด๋ RSS/working set์ด ์ฆ์ ๋จ์ด์ง์ง๋ ์์ ์ ์์ต๋๋ค. ์์น๋ฅผ ์จ๊ธฐ๊ธฐ ์ํ ๊ฐ์ GC๋ ์์์ 0 ํ์๋ฅผ ์ฌ์ฉํ์ง ์์ต๋๋ค. ํฉ์ฑ churn ํ๊ท ๊ฒ์ฆ์ ์ฐธ๊ณ ํ์ญ์์ค.
Peer ์ข
๋ฃ ๋๊ธฐ๋ Peer๋ง๋ค docker wait ํ๋ก์ธ์ค๋ฅผ ์ ์งํ๋ ๋์ ๋ก์ปฌ Docker Engine API ์ฐ๊ฒฐ์ ์ฌ์ฉํฉ๋๋ค. ์์ ์ธก์ ๊ณผ ๋ณ๋ ์ฐ๊ฒฐ ํ์ ์ฌ์ฉํ๊ณ Peer ์์กด ์๊ฐ์ ์ ํ์ ๋์ง ์์ผ๋ฉฐ, ์ทจ์ํ๋ฉด ๊ธฐ์กด ์ปจํ
์ด๋ ์ ๊ฑฐ ์ ์ฐจ๋ฅผ ์คํํฉ๋๋ค. --docker-socket์ ์ธก์ ๊ณผ ์ข
๋ฃ ๋๊ธฐ ์์ชฝ์ ์ฌ์ฉํ๋ฏ๋ก Peer๋ฅผ ์์ฑํ๋ Docker CLI์ ๊ฐ์ daemon์ ๊ฐ๋ฆฌ์ผ์ผ ํฉ๋๋ค. ์ปจํ
์ด๋ ์ ๊ฑฐ์ ์ต์ข
heartbeat ํ์ธ์ด ๋๋ Peer์ ์ค์ ํ์ผ์ ์ต๊ทผ ๊ธฐ๋ก์ ํฌํจํ์ฌ history ์ ์ง๋ณด์์์ ์ญ์ ํฉ๋๋ค. ๋ค๋ฅธ ํ์ผยท์๋ช
์ด๋ ฅยท์ ๊ฑฐ ์คํจ ๊ธฐ๋ก์ ์ ์งํฉ๋๋ค. ์ด์ Agent ํ๋ก์ธ์ค๊ฐ ๋จ๊ธด ๊ณ ์ ์ค์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๊ธํ์ฌ ์ ์ฒด ์ญ์ ํ์ง๋ ์์ต๋๋ค.
์๋ฝํ telemetry ๋ณธ๋ฌธ์ ๋ก์ปฌ ๋์คํฌ spool์ ๋๊ณ ๋ฉ๋ชจ๋ฆฌ์๋ ํ์ผ ์์น/Run ์ธ๋ฑ์ค์ ์ ์กํ ์ต๋ 5,000๊ฐ / ์ง๋ ฌํ ๊ธฐ์ค 1 MiB ๊ตฌ๊ฐ๋ง ์ ์งํฉ๋๋ค. ๊ฐ๋ณ์ ์ผ๋ก ์ ํจํ ํฐ ์ด๋ฒคํธ ํ๋๋ ์์ธ์ ์ผ๋ก ์ด ๊ตฌ๊ฐ์ ๋์ ์ ์์ผ๋ ๊ธฐ์กด batch envelope ํฌํจ 10 MiB ์ ์ก ์ ํ์ ๋ฐ๋ฆ
๋๋ค. ์ด๋ ์ง๋ ฌํ ๋ฐ์ดํฐ ํ๋์ด๋ฉฐ Go heap ์์ฒด์ ์ํ์ ์๋๋๋ค. ์ฌ์์ ๋ณต๊ตฌ๋ ๊ธฐ์กด spool ๋ฐฐ์ด์ ์์ฐจ ์ฝ๊ณ ์ด ๊ตฌ๊ฐ๋ง ์ ์ฌํฉ๋๋ค. ์์ ๋์ฝ๋ฉยท์ ์ฅ์ ๋์ 2๊ฐ๋ก ์ ํํ๊ณ , ์ต๋ 64๊ฐ ์์ฒญ๋ง ๋ณธ๋ฌธ์ ์ฝ์ง ์์ ์ฑ 1์ด๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ๋๊ธฐ์ด์ด ๊ฐ๋ ์ฐจ๊ฑฐ๋ ์๊ฐ์ด ์ง๋๊ฑฐ๋ ์ batch๊ฐ ๋๊ธฐ๋ 50,000๊ฐ / 256 MiB๋ฅผ ๋๊ธฐ๋ฉด 503๊ณผ Retry-After๋ก ์ฌ์๋๋ฅผ ์์ฒญํฉ๋๋ค. ๋์คํฌ ๋ฐ ์ ์ก ์ค ์ด๋ฒคํธ๋ ๋๊ธฐ๋์ ํฌํจํฉ๋๋ค. ๊ฐ๋ ์ฐฌ ๋์ ์ Peer ๋ฐฐ์น๋ ์ผ์ ์ค๋จํ์ฌ churn์ผ๋ก ์ข
๋ฃ ๊ธฐ๋ก์ด ๊ณ์ ๋์ด๋๋ ๊ฒ์ ๋ง๊ณ , ์ด๋ฏธ ์คํ ์ค์ธ Peer์ ์ต์ข
์ฆ๊ฑฐ๋ ์ ์งํ๋ฏ๋ก ์ผ์์ ์ผ๋ก ์ ์ ํ๋๋ฅผ ๋์ ์ ์์ต๋๋ค. ๊ธฐ์กด ํ๋ ์ด๊ณผ ์ ์ฒด๋ ์ญ์ ํ์ง ์๊ณ ์ ๋ฌํฉ๋๋ค. ์คํ ์ข
๋ฃ ํ์ธ์ ํด๋น Run์ ๋์คํฌ ๋๊ธฐ๋๊ณผ ์ ์ก ์ค ์๋ฃ๊น์ง ๊ธฐ๋ค๋ฆฌ๋ฉฐ ์ฌ์๋ ์ ์ด๋ฒคํธ ID์ ์์๋ฅผ ์ ์งํฉ๋๋ค.
์ข ๋ฃ ์ฆ๊ฑฐ์ ํ ์ง์ ๊ณผ telemetry backlog ํ์ธ ๋๊ธฐ๋ Agent ์ํ ์ ๊ธ ๋ฐ์์ ์ํํฉ๋๋ค. spool ์ฐ๊ธฐ๊ฐ ์ง์ฐ๋์ด๋ heartbeat snapshot๊ณผ ๋ค๋ฅธ Peer์ ์๋ช ๋ง๋ฃ ์ทจ์ ์ฒ๋ฆฌ๋ ๊ณ์ ๊ฐ๋ฅํฉ๋๋ค. ์์ฑ admission์ ์ฉ๋์ ์์ฝํ๊ธฐ ์ ์ ์ทจ์์ Run ์ธ๋ ์ฐจ๋จ์ ๋ค์ ํ์ธํฉ๋๋ค. ์์ฑ ํ์ฉ๊ณผ ์ ๋ฆฌ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
์์ batch๋ 4 MiB๋ฅผ ๋ชฉํ๋ก ๊ต์ฒดํ๋ append-only .jsonl ํ์ผ์ ๊ณต์ ํ๊ณ , ACK๋ ์ฒดํฌ์ฌ์ด ์๋ journal์ ์ถ๊ฐํฉ๋๋ค. ๊ฐ๋ณ ํฐ batch ํ๋๋ ๊ธฐ์กด segment ์ ํ ์์์ ๋ชฉํ ํฌ๊ธฐ๋ฅผ ๋์ ์ ์์ต๋๋ค. ์ ๋ถ ํ์ธ๋ ํ์ฑ ํ์ผ ํ๋๋ ์ฌ์ฌ์ฉํ๋ฏ๋ก ๋๊ธฐ ์ด๋ฒคํธ๊ฐ 0์ด์ด๋ spool ๋๋ ํฐ๋ฆฌ๊ฐ ๋น์ด ์์ง๋ ์์ ์ ์์ต๋๋ค. batch๋ง๋ค payloadยทcursor ํ์ผ์ ๋ง๋ค๊ณ ๋ฐ๊พธ๋ ์์
์ ์ค์ฌ inode/dentry ์์ฑ ๋ฐ ์ปค๋ ์บ์ ๋ถ๋ด์ ์ค์
๋๋ค. ์ ์ก์ ์ ์ฅ๋ JSON์ Fields map์ผ๋ก ๋ค์ ํ์ง ์๊ณ ๋ฐ์ดํธ ํ๋ ๋ด์์ ์ง์ ๋ณต์ฌํ๊ณ , ๋ณต๊ตฌ ์์๋ ํ์ผ ์์น ์ธ๋ฑ์ค๋ง ์ ์งํฉ๋๋ค. ์ด๋ฒคํธ ์ ์ ํ์ 250๊ฐ์์ 5,000๊ฐ๋ก ๋๋ ค ์์ ์ด๋ฒคํธ๋ ๊ธฐ์กด 1 MiB ํ๋๋ฅผ ํ์ฉํฉ๋๋ค.
์
์ฅ ์ ์ ๊ฑฐ์ ๋ 503์ Controller๊ฐ ์์ ํ๊ฒ ์ฌ์๋ํฉ๋๋ค. Agent ๋ฏธ์ง์ ๋ฐฐ์น๋ Retry-After ๋์ ํด๋น Agent๋ฅผ ์ ์ธํ๊ณ ๋ค๋ฅธ ๊ฐ๋ฅํ Agent์ ๋ฐฐ์นํ ์ ์์ผ๋ฉฐ, ํน์ Agent ์ง์ ๋๋ single-agent ๋ฐฐ์น๋ ์ ํํ Agent๋ฅผ ์ ์งํ์ฌ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์๋๋ฆฌ์ค context๊ฐ ๋๊ธฐ ์๊ฐ์ ์ ํํ๊ณ ์ค์งยท์ทจ์ํ๋ฉด ์์ฝ์ ์ฆ์ ๋ฐํํฉ๋๋ค. ์์ฑ ์ฌ๋ถ๊ฐ ๋ถํ์คํ ์ผ๋ฐ 503ยท์ฐ๊ฒฐ ์ค๋ฅยทtimeout์ ๋ค๋ฅธ Agent์ ๋ฌด์กฐ๊ฑด ์ฌ์์ฑํ์ง ์์ต๋๋ค. ๋๊ธฐ๋ Run/Agent ID์ ํจ๊ป ๋ก๊ทธ์ ๋จ์ผ๋ฉฐ ์ง์์ ์ธ ๊ณผ๋ถํ์์๋ ์
์ฅ ์๊ฐ์ด ์ง์ฐ๋ ์ ์์ต๋๋ค.
๊ธฐ์กด .json spool ๋ฐฐ์ด๋ ๋ณต๊ตฌํฉ๋๋ค. format-v2.json์ ๊ตฌ๋ฒ์ Agent๊ฐ ๋กค๋ฐฑ ๋ ๋๊ธฐ ์ค์ธ .jsonl ์๋ฃ๋ฅผ ๋ฌด์ํ์ง ์๋๋ก ์์์ ๋ง๋ ํ์ ํ์์
๋๋ค. ์ ๋ฌ์ ๋๋ด๊ณ ์ ์ ์ข
๋ฃํ๋ฉด ๋น ํ์ฑ ํ์ผ๊ณผ ํ์์ ์ ๊ฑฐํฉ๋๋ค. ์ด๋ ํด์ ๋๋ ๊ฒ์ spool ๋ณดํธ ์ฅ์น๋ฟ์ด๋ฉฐ, ๋ณํ๋ Peer ์ด๋ ฅ DB๋ ๊ณ์ ํธํ๋๋ Agent ์ด๋ฏธ์ง๋ฅผ ํ์๋ก ํฉ๋๋ค. ์
๋ฐ์ดํธยท๋ณต๊ตฌ ์ค์๋ Agent volume์ ์ ์งํด์ผ ํฉ๋๋ค.
Agent ๋ฉ๋ชจ๋ฆฌ ์ฆ๊ฐ ์์ธ์ ๊ตฌ๋ถํ๋ ์งํ๋ ์ ๊ณตํฉ๋๋ค.
| ์งํ | ํด์ |
|---|---|
kpl_local_agent_memory_bytes{kind="โฆ"} (usage, working_set, anonymous, file, inactive_file, kernel, slab, slab_reclaimable, slab_unreclaimable, kernel_stack, page_tables, socket) |
๊ธฐ์กด ์์ ํ๋ณธ์ Agent ์ปจํ ์ด๋ cgroup ์์น์ด๋ฉฐ ์์ ํ๋ก์ธ์ค๋ ํฌํจํฉ๋๋ค. ๋ฏธ์ง์ ํญ๋ชฉ์ ์๋ตํฉ๋๋ค. ํญ๋ชฉ๋ผ๋ฆฌ ์ค๋ณต๋๋ฏ๋ก ํฉ์ฐํ์ง ๋ง์ญ์์ค. |
kpl_local_agent_memory_sample_timestamp_seconds |
์๋ณธ ํ๋ณธ ์๊ฐ์ ๋๋ค. ํ์ฌ์ฑ์ ํ์ธํ๊ณ ํด์ํ์ญ์์ค. ์๊ธฐ ์ปจํ ์ด๋ ์ธก์ ์ด ์คํจํ๋ฉด ์์ธ ํญ๋ชฉ์ ์๋ตํฉ๋๋ค. |
kpl_local_peer_wait_connections |
Docker CLI ํ๋ก์ธ์ค๋ฅผ ์์ฑํ์ง ์๋ Engine ์ข ๋ฃ ๋๊ธฐ ์ฐ๊ฒฐ ์์ ๋๋ค. |
kpl_local_telemetry_backlog_bytes, kpl_local_telemetry_window_bytes
|
์ง๋ ฌํ๋ ์ ์ฒด ๋๊ธฐ๋๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ ์ฌ/์ ์ก ๊ตฌ๊ฐ ํฌ๊ธฐ์ ๋๋ค. Go heap ์ธก์ ๊ฐ์ ์๋๋ฉฐ ์ ์ฒด ๋๊ธฐ๋์๋ ๋์คํฌ ์๋ฃ๋ ํฌํจํฉ๋๋ค. |
kpl_local_telemetry_decoders, kpl_local_telemetry_decoder_waiters, kpl_local_telemetry_decoder_rejected_total
|
ํ์ฌ ๋์ฝ๋ฉยท์ ์ฅ ์์ฒญ ์(์ต๋ 2๊ฐ), ๋ณธ๋ฌธ์ ์ฝ์ง ์์ ๋๊ธฐ ์์ฒญ ์(์ต๋ 64๊ฐ), ๋์ฝ๋ฉ ์ ๊ฑฐ๋ถ ํ์์ ๋๋ค. ๊ฑฐ๋ถ๋ batch๋ ์ฌ์๋ํด์ผ ํฉ๋๋ค. |
go_threads, go_memstats_stack_sys_bytes
|
Go ๋ฐํ์์ OS ์ค๋ ๋ ์์ ์คํ์ฉ ์์ฝ ๋ฉ๋ชจ๋ฆฌ์
๋๋ค. cgroup kernel_stack๊ณผ ํจ๊ป ์ด๊ธฐ ๋ฐํ์ ์ฆ๊ฐ์ ์ด๋ ฅยท์บ์ ๋์ ๋น์ฉ์ ๊ตฌ๋ถํฉ๋๋ค. |
go_gc_heap_live_bytes, go_gc_heap_goal_bytes, go_gc_cycles_total_gc_cycles_total
|
๋ง์ง๋ง GC์ live heapยท๋ค์ heap ๋ชฉํยทGC ํ์์
๋๋ค. ๊ธฐ์กด go_memstats_*, go_gc_duration_seconds์ ํจ๊ป ํ์ธํฉ๋๋ค. |
go_cpu_classes_gc_total_cpu_seconds_total, go_cpu_classes_gc_mark_assist_cpu_seconds_total, go_memory_classes_*
|
Go ๋ฐํ์์ GC CPU ์ถ์ ์นยทํ ๋น ์ GC ๋ณด์กฐ ๋น์ฉยทheap/metadata ๊ตฌ๋ถ์ ๋๋ค. Agent Go ํ๋ก์ธ์ค๋ฅผ ์ธก์ ํฉ๋๋ค. |
์ฒซ ์คํ ํ ์ฆ๊ฐ๋ ๋ฐํ์ ์คํ, ์ฐ๊ฒฐ ํ, ์ฌ์ฌ์ฉ ๋ฒํผ๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ํ์ฑ Peer ์๊ฐ ๋น์ทํ๊ณ telemetry ํ๊ฐ ๋น ํด์ง ๊ตฌ๊ฐ๋ผ๋ฆฌ ๋น๊ตํ์ญ์์ค. ์ค๋ ๋ ์์ live heap์ด ์์ ์ ์ธ๋ฐ ๋์ ์ข
๋ฃ Peer์ ํจ๊ป slab_reclaimable์ด ๋๋ฉด Go ๊ฐ์ฒด๋ณด๋ค ํ์ผ์์คํ
๋ฉํ๋ฐ์ดํฐ ๋น์ฉ์ ์์ฌํ ์ ์์ต๋๋ค. ๋จ์ผ ํ์ผ ์ด๋ ฅ ์ ์ฅ์๋ Peer๋ณ inode ์ฆ๊ฐ๋ฅผ ์์ ์ง๋ง DB ํ์ผ ํฌ๊ธฐ, OS ํ์ด์ง ์บ์, ์ ์ฒด ์ปจํ
์ด๋ ๋ฉ๋ชจ๋ฆฌ์ ์ํ์ ๋์ง๋ ์์ต๋๋ค. ๊ด์ธกํ ์ด๋ ฅยท์บ์ ์ถ์ธ๋ฅผ ์ฐธ๊ณ ํ์ญ์์ค.
Agent only working set, process_resident_memory_bytes, Go live heap์ ๋น๊ตํ์ญ์์ค. ํ๋ก์ธ์ค RSS๋ ๋ฎ์๋ฐ ์ปจํ
์ด๋ ์์น๊ฐ ํฌ๋ค๋ฉด cgroup file/kernel ํญ๋ชฉ์ ํ์ธํด์ผ ํฉ๋๋ค. ๊ฐ์ GC๋ก ๋ค๋ฅธ ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํด์ ํ๊ฑฐ๋ ์ปค๋ ์ฌ์ฉ๋ ์ ์ฒด๋ฅผ ์ค๋ช
ํ ์๋ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ๊ท ๊ฒ์ฆ์ ์ด์ ์ค ๊ฐ์ GC ์์ด ํ ๋ณต๊ตฌยท์ ๋ฌ ๋ณด์กด์ ํ์ธํฉ๋๋ค.
Agent Status โ Controller & services๋ Agent ๋ชฉ๋ก ์์ Controller, Prometheus, Grafana์ ์์ ์์ง๊ธฐ์ ์ํ๋ฅผ ๋ณ๋๋ก ํ์ํฉ๋๋ค. ๊ฐ ํ ํ์๋ ์๋น์ค๋ช ๊ณผ Docker ํธ์คํธ, ์ปจํ ์ด๋ ์คํ ์ํ, ํธ์คํธ ์ ์ฒด๋ฅผ 100%๋ก ๊ณ์ฐํ CPU, working-set ๋ฉ๋ชจ๋ฆฌ, ์ธก์ /๋์ ์ปจํ ์ด๋ ์๊ฐ ํ์๋๋ฉฐ Controller ๊ฐ๋ ์๊ฐ๋ ์ ๊ณตํฉ๋๋ค. Controller & services์ Agents & Peers ํ๋ ๋ชจ๋ ๋งจ ์์ Total ํ์ ํ์ํฉ๋๋ค. ์๋น์ค ๋ฉ๋ชจ๋ฆฌ๋ ์ธก์ ๊ฐ์ ํฉ์ฐํ๊ณ , ์๋น์ค CPU๋ ์ธก์ ๋ CPU ์ฌ์ฉ๋ ํฉ๊ณ๋ฅผ ํด๋น ํธ์คํธ๋ค์ CPU ์ฉ๋ ํฉ๊ณ๋ก ๋๋๋ฉฐ ๊ฐ์ ํธ์คํธ์ ์ฉ๋์ ์ค๋ณต ๊ณ์ฐํ์ง ์์ต๋๋ค. ์ธก์ ๋๋ฝ์ด๋ ๋ถ๋ถ ์ธก์ ์ ์ปค๋ฒ๋ฆฌ์ง๋ก ๊ตฌ๋ถํฉ๋๋ค. Agent ํฉ๊ณ๋ ์ ์ฒดยทAgent๋งยทPeers๋ง ๊ตฌ๋ถ์ ์ ์งํ๋ฉฐ ๋นํ์ฑ Agent๋ฅผ ์ ์ธํฉ๋๋ค. Peer ์์ ์ฉ๋์ ํ์ฑํ๋ ์จ๋ผ์ธ Agent๋ง ํฉ์ฐํฉ๋๋ค. Running์ Docker ์ปจํ ์ด๋์ ์คํ ์ํ์ด๋ฉฐ ์ ํ๋ฆฌ์ผ์ด์ ์ค๋น ์๋ฃ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ์๋น์ค ์ค๋จ, ์ธ๋ฒคํ ๋ฆฌ ์กฐํ ์คํจ, ์ค๋๋ ์์ง๊ธฐ ๋ณด๊ณ ๋ฅผ CPUยท๋ฉ๋ชจ๋ฆฌ 0์ผ๋ก ๊ธฐ๋กํ์ง ์์ต๋๋ค. ์ผ๋ถ๋ง ์ธก์ ๋๋ฉด ์ฑ๊ณตํ ์ปจํ ์ด๋ ๊ฐ์ ํ์ํ๊ณ , 30์ด๊ฐ ์ง๋ ๋ณด๊ณ ๋ stale๋ก ์ฒ๋ฆฌํฉ๋๋ค.
์คํ์ ๋์ Linux Swarm ๋
ธ๋๋ง๋ค resource-monitor ํ์คํฌ๋ฅผ ํ๋ ๋ฐฐํฌํฉ๋๋ค. Agent ๋ฐฐ์น ๋ผ๋ฒจ์ด๋ UI์ Agent ํ์ฑํ ์ค์ ๊ณผ ๋
๋ฆฝ์ ์ผ๋ก ๋์ํฉ๋๋ค. ๊ธฐ์กด Docker ์ํ๋ฌ๋ฅผ ์ฌ์ฌ์ฉํ์ฌ ์ฝ 10์ด ๊ฐ๊ฒฉ, ๋์ GET ์์ฒญ ์ต๋ 4๊ฐ, ์ํ๋ง ์ ํ ์๊ฐ 8์ด๋ก ์์งํ๋ฉฐ ์ ์ปจํ
์ด๋์ CPU ์นด์ดํฐ ์ค๋น ๋๊ธฐ๋ ํจ๊ป ์ํํฉ๋๋ค. ์์ ์ ์คํ์ ์ํ๋ฉฐ ์ปจํ
์ด๋ ๋ผ๋ฒจ io.kpl.resource-monitor=true๊ฐ ์๋ ์ปจํ
์ด๋๋ง ์ ํํ๊ณ ์์ ๊ถ์ ์ฌํ์ธํฉ๋๋ค. Agent์ managed Peer๋ ์ค๋ณต ์ง๊ณ๋ฅผ ํผํ๊ธฐ ์ํด ์ ์ธํฉ๋๋ค. ๊ธฐ๋ณธ ๋ผ๋ฒจ ๋์์ ControllerยทPrometheusยทGrafanaยท์์ง๊ธฐ ์์ฒด์ด๋ฉฐ ์์ง๊ธฐ ๋น์ฉ์ monitor ๋ฒ์์ ๋ฐ๋ก ๊ธฐ๋กํฉ๋๋ค. ์ค์ ๋ ์ ์ด ๋
ธ๋๋ ์ฒ์๋ถํฐ ์คํ๋์ง ๋ชปํ ๊ธฐ๋ณธ ์๋น์ค๋ ๋๋ฝ ์ํ๋ก ๋ณด๊ณ ํฉ๋๋ค. ๊ฐ์ ์คํ์ ๋ค๋ฅธ ๊ด๋ฆฌ ์๋น์ค๋ ์ด ์ปจํ
์ด๋ ๋ผ๋ฒจ๋ก ์ฐธ์ฌํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ํธ์คํธ์ ๋ณต์ ๋ณธ์ ๋ณ๋ ๋ ์ฝ๋๋ก, ๊ฐ์ ํธ์คํธ์ ๋ณต์ ๋ณธ์ ํด๋น ํธ์คํธ CPU ๋ถ๋ชจ๋ก ํฉ์ฐํฉ๋๋ค.
์์ง๊ธฐ๋ ๋ก์ปฌ Docker ์์ผ๊ณผ ํด๋ฌ์คํฐ ๋ณด๊ณ ์ฉ ์ธ์ฆ ์ ๋ณด๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์น Controller์๋ Docker ์์ผ์ ์ถ๊ฐํ์ง ์๊ณ ๊ธฐ์กด ์ฌ์ฉ์ ๊ถํ์ ์ ์งํฉ๋๋ค. ์ฝ๊ธฐ ์ ์ฉ ์์ผ ๋ง์ดํธ ์์ฒด๊ฐ Docker API ๋ฉ์๋๋ฅผ ์ ํํ์ง๋ ์์ผ๋ฉฐ, ์์ง ์ฝ๋์์ GET ์์ฒญ๋ง ์ฌ์ฉํฉ๋๋ค. ์ ํ๋ ํฌ๊ธฐ์ ์ธ์ฆ ๋ณด๊ณ ๋ฅผ monitoring ์ค๋ฒ๋ ์ด๋ก ๋ณด๋ด๊ณ Controller๋ ๋
ธ๋๋ณ ์ต์ ๋ณด๊ณ ๋ง ์บ์ํฉ๋๋ค. ์ด๋ ฅ์ runs๊ฐ ์๋ Prometheus์ ๋จ์ต๋๋ค. UI๋ Agent ํญ์ด ๋ณด์ผ ๋๋ง ์๋น์ค ํ์ฌ ๊ฐ์ ์กฐํํ๋ฉฐ SSE์ ์๋น์ค ์ด๋ ฅ์ ์ถ๊ฐํ์ง ์์ต๋๋ค. 10๋ถ ๋์ ๋ณด๊ณ ํ์ง ์์ ํธ์คํธ๋ ์ค์๊ฐ ๋ชฉ๋ก์์ ๋ง๋ฃ๋๊ณ Prometheus ์ด๋ ฅ์ ์ ์ง๋ฉ๋๋ค.
Controller /metrics์ kpl_service_cpu_usage_percent, kpl_service_cpu_usage_cores, kpl_service_cpu_capacity_cores, kpl_service_memory_working_set_bytes, kpl_service_memory_usage_bytes, kpl_service_resource_containers (kind=expected|measured), kpl_service_resource_sample_complete, kpl_service_resource_sample_timestamp_seconds๋ฅผ ์ถ๊ฐํ์ต๋๋ค. ๋ผ๋ฒจ์ service, node_id, scope (controller, third_party, monitor)์
๋๋ค. kpl_service_running์ ์ ์ ํ ์ธ๋ฒคํ ๋ฆฌ์์ ์คํ/๋ถ์ฌ๋ฅผ 1/0์ผ๋ก ๊ธฐ๋กํ๋ฉฐ unknownยทstale์์๋ ์๋ตํฉ๋๋ค. kpl_service_resource_report_fresh๋ ์ ์ยท์ ์ ํ ๋ณด๊ณ ์ ์คํจยท์ค๋๋ ๋ณด๊ณ ๋ฅผ ๊ตฌ๋ถํฉ๋๋ค. ์ด ์งํ๋ Agent ๋นํ์ฑํ ๋ฐ Grafana Agent ํํฐ์ ๋
๋ฆฝ์ ์
๋๋ค. Grafana์ Controller and supporting services ์์ญ์ CPU, ๋ ๋ฉ๋ชจ๋ฆฌ ์งํ, ์ปค๋ฒ๋ฆฌ์ง, ์คํ ์ํ, ๋ณด๊ณ ์ํ ๊ทธ๋ํ๊ฐ ํ์๋ฉ๋๋ค.
๊ธฐ์กด Start measurement / Stop measurement๊ฐ ์ ์ฅํ๋ ๊ฐ์ ๊ตฌ๊ฐ์ ์๋น์ค์ Agent/Peer ์ธ ๋ฒ์๊ฐ ํจ๊ป ํฌํจ๋ฉ๋๋ค. ํ์ฌ ๊ฐยท์ต๊ทผ ์ด๋ ฅยท๊ตฌ๊ฐยท์์ฝ CSV๋ ๊ธฐ์กด ์ด์ ์ ์งํ๊ณ entity_type, service, node_id, node_name์ ๋ค์ ์ถ๊ฐํฉ๋๋ค. Agent ํ์ entity_type=agent (ํ์ฌ ํฉ๊ณ๋ agent_total), ์๋น์ค ํ์ service์ด๋ฉฐ Agent ์๋ณ์ ์ด์ ๋น์ ๋ก๋๋ค. ์ด๋ ฅ์ ์์ ์ ์ธ ๋
ธ๋ ID๋ฅผ ์ฌ์ฉํ๊ณ node_name์ ๋น์ ๋ก๋๋ค. ์ ํยท์๋น์คยท๋
ธ๋ยท๋ฒ์๋ฅผ ํจ๊ป ๊ตฌ๋ถํด์ผ ํ๋ฉฐ scope=third_party๊ฐ ๊ฐ๋ค๊ณ ์๋ก ๋ค๋ฅธ ์๋น์ค๋ฅผ ํฉ์น๊ฑฐ๋, ๋ค๋ฅธ ํธ์คํธ์ CPU ๋ฐฑ๋ถ์จ์ ๋ํ๊ฑฐ๋, ์ค๋ณต๋๋ Agent ์ธ ๋ฒ์๋ฅผ ๋ํ๋ฉด ์ ๋ฉ๋๋ค. ์คํยท๋ณด๊ณ ์ํ๋ ๋จ์๊ฐ boolean์ธ ์ด๋ ฅ ์งํ์ด๋ฉฐ ํ๊ท ์ ํ๋ณด๋ scrape ํ๋ณธ ์ค 1์ ๋น์จ์
๋๋ค. ์ ํํ ๊ฐ๋๋ฅ ์ด ์๋๊ณ ์์ง ๊ณต๋ฐฑ์ ๋๋ฝ์ผ๋ก ๋จ์ต๋๋ค.
KPL ์ด๋ฏธ์ง๋ฅผ ๋ค์ ๋น๋ยท๊ฒ์ํ๊ณ ์คํ์ ์ฌ๋ฐฐํฌํ๋ฉด ์์ง๊ธฐ, ์๋น์ค ์ปจํ
์ด๋ ๋ผ๋ฒจ, Controller ์งํ, ๋ฒ์ ์ด ๊ฐฑ์ ๋ Grafana ์ค์ ์ด ํจ๊ป ์ ์ฉ๋ฉ๋๋ค. ๊ธฐ์กด ๊ตฌ๊ฐ์ ์ ์ง๋์ง๋ง ์๋น์ค ์ด๋ ฅ์ ์
๋ฐ์ดํธ ์ดํ scrape๋ถํฐ ์์
๋๋ค. ์์ง๊ธฐ๋ ์ ๋ผ๋ฒจ์ด ์๋ Swarm ์ปจํ
์ด๋๊ฐ ํ์ํ๋ฉฐ ์์ง๊ธฐ๊ฐ ์๋ ๋จ๋
ยท์ฌ์ฉ์ ์ ์ ๋ฐฐํฌ์์๋ ์๋น์ค ๊ฐ์ ์ ๊ณตํ์ง ์์ต๋๋ค. ๋ก๊ทธ๋ sh scripts/swarm.sh logs resource-monitor --tail 100์ผ๋ก ํ์ธํฉ๋๋ค.
Controller๋ <data-dir>/logs ์๋์ ํ ์ค๋น JSON ๊ฐ์ฒด ํ๋๋ฅผ ์๋ ๊ธฐ๋กํฉ๋๋ค. ๋ก์ปฌ ๊ธฐ๋ณธ ๊ฒฝ๋ก๋ data/logs, Swarm์์๋ ์์ controller-data volume์ /var/lib/kpl/data/logs์
๋๋ค.
| ํ์ผ | ๊ธฐ๋ก ๋์ |
|---|---|
access.jsonl |
๋์๋ณด๋ยท์ ์ ํ์ผยทAPI ์ ๊ทผ, ๋ฆฌ๋ค์ด๋ ํธ, ์คํจ ์๋ต, SSE ์ฐ๊ฒฐ ์์ยท์ข ๋ฃ |
auth.jsonl |
๋ก๊ทธ์ธ ์ฑ๊ณตยท์คํจ, ๋ก๊ทธ์์ ์๋, ์ธ์ ๋ถ์ฌยท๋ง๋ฃ๋ก ๊ฑฐ์ ๋ ์ ๊ทผ๊ณผ ๋์ผ ์ถ์ฒ ๊ฒ์ฌ ๊ฑฐ์ |
UTC timestamp, event, ์๋ฒ๊ฐ ์์ฑํ requestId, remoteIp, HTTP methodยทpath, ์๋ต status, ๋ณธ๋ฌธ bytes, ์ฒ๋ฆฌ ์๊ฐ durationMs, userAgent, ์ธ์ฆ ๋ฐฉ์ authentication(anonymousยทsessionยทinternal)๊ณผ ํ์ธ ๊ฐ๋ฅํ user๋ฅผ ๊ธฐ๋กํฉ๋๋ค. ์ธ์ฆ ๊ธฐ๋ก์๋ outcome๊ณผ invalid_credentials, rate_limited, invalid_request, origin_denied, login_required ๋ฑ์ ์ด์ ๊ฐ ํฌํจ๋ฉ๋๋ค. ์ ํจํ JSON ๋ก๊ทธ์ธ ์์ฒญ์์๋ ์คํจํ๋๋ผ๋ ์
๋ ฅํ ๊ณ์ ๋ช
์ ๋จ๊น๋๋ค. ๊ฐ์ ์์ฒญ์ ์ ๊ทผยท์ธ์ฆ ๊ธฐ๋ก์ request ID๋ก ์ฐ๊ฒฐํ๋ฉฐ, SSE๋ ์๋ต ์์ ์ฆ์ sse_open, ์ข
๋ฃ ์ sse_close๋ฅผ ๋จ๊น๋๋ค.
๋น๋ฐ๋ฒํธ, ์ธ์
์ฟ ํค, Authorization ํค๋, ์์ฒญยท์๋ต ๋ณธ๋ฌธ, Referer์ URL ์ฟผ๋ฆฌ๋ ๊ธฐ๋กํ์ง ์์ต๋๋ค. ์
๋ ฅ ๋ฌธ์์ด์ ๊ธธ์ด๋ฅผ ์ ํํ๊ณ JSON escaping์ ์ ์ฉํฉ๋๋ค. remoteIp๋ ์ค์ ์ฐ๊ฒฐ ์ฃผ์์ด๋ฉฐ ํด๋ผ์ด์ธํธ๊ฐ ๋ณด๋ธ ForwardedยทX-Forwarded-For๋ฅผ ์ ๋ขฐํ์ง ์์ต๋๋ค. reverse proxy ๋ค์์๋ proxy ์ฃผ์๊ฐ ๊ธฐ๋ก๋ฉ๋๋ค. ์คํ ์ค ์ด๋ฒคํธ๋ง๋ค ๋์คํฌ์ ์ฐ์ง ์๋๋ก ์ธ์ฆ์ ์ฑ๊ณตํ ์ ์ AgentยทPeer ํต์ ๊ณผ ์ ์ healthยทmetricsยทPrometheus target ์ ๊ฒ์ ์ ์ธํฉ๋๋ค. ํด๋น ์์ฒญ์ ์ค๋ฅ์ ์ธ์ฆ ์คํจ๋ ๊ธฐ๋กํฉ๋๋ค.
๊ฐ ํ์ผ์ 10 MiB๋ฅผ ๋๊ธฐ๊ธฐ ์ ์ ํ์ ํ๋ฉฐ ํ์ฌ ํ์ผ๊ณผ ๋ฐฑ์
5๊ฐ(.1์ด ์ต์ , .5๊ฐ ๊ฐ์ฅ ์ค๋๋จ), ๋ ์ข
๋ฅ ํฉ๊ณ ์ฝ 120 MiB๊น์ง ๋ณด๊ดํฉ๋๋ค. ์ฌ์์ํด๋ ๊ธฐ์กด ํ์ผ์ ์ด์ด ์๋๋ค. ๋๋ ํฐ๋ฆฌ๋ 0700, ํ์ผ์ 0600 ๊ถํ์
๋๋ค. ์์ ์ ๋ก๊ทธ ๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ ์ ์์ผ๋ฉด ์ค๋ฅ๋ก ์ข
๋ฃํฉ๋๋ค. ์คํ ์ค ์ฐ๊ธฐ ์คํจ๋ Controller์ ์ผ๋ฐ ์๋น์ค ๋ก๊ทธ์ ์๋ฆฌ๊ณ HTTP ์์ฒญ ์ฒ๋ฆฌ๋ ์ ์งํ๋ฉฐ ์ดํ ์์ฒญ์์ ๊ธฐ๋ก์ ์ฌ์๋ํฉ๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ ์์ด ํ์ผ์ appendํ์ง๋ง ๊ฑด๋ง๋ค fsyncํ์ง๋ ์์ต๋๋ค. ์ ๊ทผ ๊ธฐ๋ก์ ๋ณด์กดํ๋ ค๋ฉด Controller volume ๋ฐฑ์
์ logs๋ฅผ ํฌํจํ์ญ์์ค. ๋์๋ณด๋์์ ์ด ํ์ผ์ ์ ๊ณตํ๊ฑฐ๋ ์คํ ZIP์ ๋ฃ์ง๋ ์์ต๋๋ค.
๋ก์ปฌ Controller์์๋ ๋ค์๊ณผ ๊ฐ์ด ๋ ํ์ผ์ ํ์ธํฉ๋๋ค.
tail -F data/logs/access.jsonl data/logs/auth.jsonlSwarm์์๋ manager helper๋ก ์ต๊ทผ 100์ค์ JSONL ์๋ฌธ ๊ทธ๋๋ก ์ถ๋ ฅํฉ๋๋ค.
sh scripts/swarm.sh logs access
sh scripts/swarm.sh logs auth
sh scripts/swarm.sh logs access --tail 500
sh scripts/swarm.sh logs auth --tail all > auth.jsonl--tail์ ์์ ์ ์ ๋๋ all์ ๋ฐ์ต๋๋ค. ํ์ฌ ํ์ผ๋ง ์กฐํํ๋ฉฐ ํ์ ๋ .1~.5 ๋ฐฑ์
์ Controller volume์ ๋จ์ ์์ต๋๋ค. ๋ช
๋ น ์คํ ์์ ์ ๋ด์ฉ์ ์ถ๋ ฅํ๋ฏ๋ก jq ๊ฐ์ ๋๊ตฌ๋ก ํ์ดํ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๊ธฐ์กด logs controller, logs agent, logs prometheus, logs grafana๋ ํ์์คํฌํ๊ฐ ์๋ ์๋น์ค ๋ก๊ทธ๋ฅผ ๊ณ์ ์กฐํํ๋ฉฐ --tail๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
Helper๋ ํ์ฌ manager Docker context์์ ์คํ ์ค์ธ Controller task๋ฅผ ์ฐพ๊ณ , docker exec๋ก ํ์ผ์ ์ฝ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฌ Docker daemon์ด ํด๋น task๋ฅผ ์คํํ๋ ๋
ธ๋์ฌ์ผ ํฉ๋๋ค. Controller๊ฐ ๋ค๋ฅธ ๋
ธ๋(worker ํฌํจ)์ ์์ผ๋ฉด ๊ทธ ๋
ธ๋์ Docker context๋ฅผ ๋ง๋ค๊ณ ํ์ผ ์กฐํ์ฉ์ผ๋ก๋ง ์ง์ ํ์ญ์์ค.
# user์ control-node๋ฅผ ์ค์ SSH ๊ณ์ ๊ณผ Controller ํธ์คํธ๋ก ๋ฐ๊ฟ๋๋ค.
docker context create kpl-control --docker "host=ssh://user@control-node"
sh scripts/swarm.sh logs access --context kpl-control
sh scripts/swarm.sh logs auth --context kpl-control --tail 500ํธ์ถ์์ Docker context๋ manager์ ์ฐ๊ฒฐ๋ ์ํ๋ก ์ ์งํฉ๋๋ค. ์ ๋ ๋ช
๋ น์ --context๋ ๋
ธ๋ ํ์ธ๊ณผ ํ์ผ ์กฐํ์๋ง ์ ์ฉ๋๋ฉฐ, task ํ์์ manager์์ ์ํํฉ๋๋ค. ์ ํํ daemon์ด task์ ์ค์ ์คํ ๋
ธ๋์ธ์ง ๊ฒ์ฌํฉ๋๋ค. ์น ๋ก๊ทธ ๊ธฐ๋ฅ์ด ํฌํจ๋ Controller๊ฐ ์คํ ์ค์ด์ด์ผ ํ๋ฉฐ, ํ์ผ ๋ถ์ฌยทtask ์คํ ๋ถ๊ฐยท์๋ชป๋ ๋
ธ๋๋ ์ค๋ฅ๋ก ์๋ดํฉ๋๋ค. ์ปจํ
์ด๋๋ฅผ ์๋ก ๋์ฐ๊ฑฐ๋ stack์ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ์ค์๊ฐ ์ถ์ ์ด๋ ํ์ ๋ ๋ฐฑ์
์กฐํ๋ Controller ๋
ธ๋์์ ํ์ผ์ ์ง์ ํ์ธํ์ญ์์ค.
๋์๋ณด๋๊ฐ ๋ณด์ด๋ ๋์ Overview๊ฐ Off(ํ์ด์ง๋ฅผ ์ด ๋์ ๊ธฐ๋ณธ๊ฐ)์ด๋ฉด /api/v1/stream?view=dashboard&topology=0, On์ด๋ฉด topology=1์ ์ฌ์ฉํ๋ฉฐ ์ฒซ snapshot ์ดํ snapshot_delta ๋๋ ์ ํด heartbeat๋ฅผ ๋ฐ์ต๋๋ค. Off์์๋ ์์ธ ๊ทธ๋ํ ๊ณ์ฐยท์ ์ก์ ์๋ตํ๋ฉด์ ํผ์ด ์์ ์คํ ์งํ๋ฅผ ๊ณ์ ๊ฐฑ์ ํฉ๋๋ค. ํ์ด์ง๋ฅผ ์จ๊ธฐ๋ฉด ์ฐ๊ฒฐ์ ๋๊ณ ๋ค์ ๋ณด์ด๋ฉด ๋๊ธฐํํฉ๋๋ค. ์ค๋ ์ ์งํ ์ฐ๊ฒฐ์ ๋์ ๋ฐ์ดํธ๋ ์ ์ ํ์ด์ง ํฌ๊ธฐ๊ฐ ์๋๋๋ค. ๋ณธ๋ฌธ ํ์, ์ฐ๊ฒฐ ์ ํ์๊ฐ, ์ฌ์๋์ ๊ธฐ์กด ํด๋ผ์ด์ธํธ ๊ท์น์ Dashboard SSE๊ฐ ์ ์ํฉ๋๋ค.
์ ์ก๋์ด ํฌ๊ฑฐ๋ Reconnecting์ด ์ง์๋๋ฉด ๋ค์์ ํ์ธํ์ญ์์ค.
- ์ด๋ฏธ์ง ๊ฐฑ์ ํ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ๊ณ ๋ธ๋ผ์ฐ์ Network์์ ์์ dashboard view๋ฅผ ์ฌ์ฉํ๋์ง ํ์ธํฉ๋๋ค.
- ์ ๊ทผ ๋ก๊ทธ์
sse_close.bytes์durationMs๋ฅผ ๋น๊ตํ๊ณsse_openยทsse_close,/api/v1/auth/session์๋ต ์ํยท์๊ฐ์ ํจ๊ป ํ์ธํฉ๋๋ค. - Controllerยท์๋น์ค์ ๋ถํ์ ์ฐ๊ฒฐ์ ํ์ธํฉ๋๋ค. ๋ก๊ทธ์ธ ๊ฑฐ์ ๊ณผ ๋๋ฆฐ ์ธ์ ์กฐํ๋ ๋ค๋ฅด๋ฉฐ ๋ธ๋ผ์ฐ์ ์ฐ๊ฒฐ ํด์ ๋ง์ผ๋ก ์คํ ์คํจ๋ฅผ ํ๋จํ์ง ์์ต๋๋ค. ์ ์ฅ๋ ์คํ ์ํ๋ฅผ ํ์ธํ ๋ค ๋ณต๊ตฌ๋ฅผ ์ ํํฉ๋๋ค.
๊ธฐ์กด ๋์ฉ๋ trace ์ธก์ ๊ณผ churn ๋ฒค์น๋งํฌ๋ ๊ฒ์ฆ ๋ฒ์์ ํจ๊ป ์ฑ๋ฅ ๊ทผ๊ฑฐ์ ๋ณด์กดํฉ๋๋ค.
Prometheus ์๊ณ์ด์ prometheus-data, Grafana ์ค์ ์ grafana-data named volume์ ์ ์ฅ๋ฉ๋๋ค. ์ผ๋ฐ์ ์ธ ์ปจํ
์ด๋ ์ฌ์์ฑ ํ์๋ ์ ์ง๋ฉ๋๋ค. Prometheus ๋ณด์กด ์ค์ ์ 15์ผ/5GB์ด๋ฉฐ ๋จผ์ ๋๋ฌํ ์ ์ฑ
์ด ์ ์ฉ๋ฉ๋๋ค. 5GB๋ ๋์คํฌ ์ฌ์ฉ๋์ ์๊ฒฉํ ์ํ์ด ์๋๋ฉฐ WALยทheadยท์์ถ ์์
์๋ ์ถ๊ฐ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค. Prometheus ์ ์ฅ์ ๋ฌธ์
Swarm config๋ ๋ถ๋ณ์ด๋ฏ๋ก Prometheus์ dashboard ์ค์ ๋ณ๊ฒฝ์ ๋ฒ์ ์ด ๋ถ์ config ์ฐธ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ stack์ ๋ค์ ๋ฐฐํฌํด์ผ ์ ์ฉ๋ฉ๋๋ค. ๋ฐฐํฌ๋ ์๋ณธ์ ํ์ผ๋ก ๊ด๋ฆฌํ๋ฉฐ ๋ณ๋ ๋์๋ณด๋๋ฅผ ์ ์ฅํ๋ ค๋ฉด ๊ด๋ฆฌ์ ๋ก๊ทธ์ธ ํ ๋ณต์ฌ๋ณธ์ ์ฌ์ฉํ์ญ์์ค. Grafana provisioning ๋ฌธ์
# ์์ง ๋์ ์ํ ํ์ธ
curl http://control-node:9090/api/v1/targets
# manager์์ ์๋น์ค ์ํ์ ๋ก๊ทธ๋ฅผ ํ์ธํฉ๋๋ค.
sh scripts/swarm.sh status
sh scripts/swarm.sh logs prometheus
sh scripts/swarm.sh logs grafanaController target๋ ๋ธ๋ผ์ฐ์ ์์ ์ด ์ ์๋ ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. GET /api/v1/prometheus/controller-targets๋ control ๋
ธ๋์ Swarm ์ฃผ์์ ๊ฒ์๋ KPL_HTTP_PORT๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐฐํฌ helper๋ ๋งค ๋ฐฐํฌ์์ KPL_CONTROLLER_METRICS_URL๊ณผ KPL_PROMETHEUS_EXTERNAL_URL์ ์์ฑํ๋ฉฐ ์ฌ์ฉ์ ์ง์ ํฌํธ์ IPv6๋ฅผ ๋ฐ์ํฉ๋๋ค. Prometheus ์์ฒด ๋งํฌ์๋ ํ์๋ฅผ --web.external-url๋ก ์ ๋ฌํฉ๋๋ค. ํ์ ์์ฒญ๊ณผ Grafana datasource๋ ๋ด๋ถ DNS๋ฅผ ์ฌ์ฉํฉ๋๋ค. Prometheus ์ปจํ
์ด๋์์ control ๋
ธ๋์ ๊ฒ์๋ HTTP ํฌํธ์ ์ ๊ทผํ ์ ์์ด์ผ ํฉ๋๋ค. Controller metrics URL์ด ๋ฏธ์ค์ ์ด๋ฉด target ๋ชฉ๋ก์ ๋น์ด ์์ต๋๋ค.
Swarm stack์ GET /api/v1/prometheus/agent-targets์์ ๋ฑ๋ก๋ target์ ํ์ํฉ๋๋ค. sh scripts/swarm.sh access๋ก ๊ด๊ณ ์ฃผ์๋ฅผ ํ์ธํ๊ณ , ์ค์ ํ ํฌํธ๊ฐ ์ ํ๋ ๋ชจ๋ Agent ๋
ธ๋์์ ๋น์ด ์์ผ๋ฉฐ control ๋
ธ๋์์ TCP ์ ๊ทผ์ด ํ์ฉ๋๋์ง ํ์ธํ์ญ์์ค. ์ด์์๊ฐ Agent metrics ๋งํฌ๋ฅผ ์ง์ ์ด ๋์๋ ๋ธ๋ผ์ฐ์ ๊ฐ ์ํ ์ ๋ขฐ ๊ด๋ฆฌ๋ง์์๋ ์ ๊ทผ์ ํ์ฉํ๊ณ ์ ๋ขฐํ์ง ์๋ ์ถ๋ฐ์ง๋ ์ฐจ๋จํ์ญ์์ค. up{job="kpl-agent"}๋ฅผ ๋ณด๋ฉด ๋ฑ๋ก๋์์ง๋ง ๋ฐฉํ๋ฒฝ์ด๋ ์๋ชป๋ Swarm NodeAddr ๋๋ฌธ์ ์ ๊ทผํ ์ ์๋ target์ ์ฑ๊ณตํ scrape์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
ํ์ฌ ์ด๋ฏธ์ง ๋ฒ์ ์ Prometheus v3.13.2์ Grafana 13.2.1๋ก ๊ณ ์ ํ์ต๋๋ค. ์
๋ฐ์ดํธ ์ ๊ณต์ Prometheus ๋ค์ด๋ก๋์ Grafana Docker ์ค์น ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํ๊ณ ์ค์ ยท๋์๋ณด๋๋ฅผ ์ฌ๊ฒ์ฆํ์ญ์์ค.
Linux์์ ์ ์คํ์ ๊ฒ์ฆํ๊ณ ZIP, ์ฝ๋ revision ๋๋ image digest, Prometheus ์๊ฐ ๋ฒ์๋ฅผ ๋ณด์กดํ์ญ์์ค. ์ ์ฅ์์๋ ์ด์ ๋ชจ๋ํฐ๋ง ์คํ ์์์ ์๋ณธ ZIP์ด ํฌํจ๋์ด ์์ง ์์ผ๋ฏ๋ก ํด๋น ๊ณผ๊ฑฐ ์์น๋ฅผ ํ์ฌ ์ธ์ ๊ธฐ๊ฐ ๊ตฌํ์ ๊ฐ์ฌ ๊ฐ๋ฅํ ๊ธฐ์ค์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค.
examples/monitoring.yaml์์๋ ๋ค์์ ํ์ธํ์ญ์์ค.
| ํ์ธ ํญ๋ชฉ | ์์ค์ ๋ฐ๋ฅธ ๊ธฐ๋๊ฐ |
|---|---|
| ์ฑ๊ณต ๋ฐํ | ๋ชจ๋ ์์ฝ ๋ฐํ์ด ์ฑ๊ณตํ๊ณ telemetry๊ฐ ์์ง๋๋ฉด envelope 60 + raw 6 = 66๊ฑด |
| worker ๋คํธ์ํฌ ์ค์ | worker ์ธ ๊ฐ์ delay 50ms, jitter 5ms, loss 1% ์ค์ |
| ๋๋ฌ๋ฅ ๋ถ๋ชจ | ์ ์ฒด deliver ์๊ฐ ์๋๋ผ ๊ฐ ๋ฐํ์ ์์ ๊ธฐ๊ฐ์ ํด๋นํ๋ ๋์ผ run/topic ์ธ์
์ฆ๊ฑฐ์์ ์ฌ๊ตฌ์ฑ |
| ์ง์ฐ ํ๋ณธ | ์์ ๋์์ ๊ธฐํ ๋ด ์๊ฒฉ envelope ์๋ง ํฌํจ. raw์ ๋ฐํ์ ๋ก์ปฌ ์์ ์ ์ ์ธ |
| ๊ด์ธก ํ์ง | pending, unknown, incomplete์ ๋ณด๊ณ ๋ telemetry-drop ๊ฐ์ ๋ณด์กด. ๋ณด๊ณ ๋ drop์ด 0์ด์ด๋ ์์ ํ ๋ก๊ทธ๋ฅผ ์ฆ๋ช ํ์ง ์์ |
| ์ ๋ฆฌ | ๋ง์ง๋ง stop-all์ด Peer ์ ๊ฑฐ๋ฅผ ์์ฒญํ๋ฏ๋ก Agent ์ํ์ ๊ฐ Linux ํธ์คํธ์ ์์กด Peer ์ปจํ
์ด๋ ํ์ธ |
metrics.json์ ์ ํํ ๊ฐ์ events.jsonl ๊ฒฝ๊ณ์ export.json.exportedAt์ ๋ง์ถฐ ๋น๊ตํ์ญ์์ค. Counter ๋น๊ต์๋ ๊ฐ์ Controller ์๋ช
์ฃผ๊ธฐ์ ์์ง ๊ฒฝ๊ณ๊ฐ ํ์ํฉ๋๋ค. Heartbeat๊ฐ add_peer/remove_peer์ 0 ๊ธฐ์ค๊ฐ์ ์ด๊ธฐํํ์ง๋ง ์ฒซ scrape ์ ์ด๋ฒคํธ๋ increase ์ถ์ ์์ ๋๋ฝ๋ ์ ์์ต๋๋ค. ์์ ยท์ค๋ณตยทmesh ์ด๋ฒคํธยท์ง์ฐ ํฉ๊ณ๋ ์คํ๊ณผ ๊ด์ธก์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋ฏ๋ก ๊ณ ์ ๋ ํฉ๊ฒฉ ๊ธฐ์ค๊ฐ์ด ์๋๋๋ค.
์งํ ๊ตฌํ๊ณผ ํ๊ท ์ฌ๋ก๋ ์คํ ์งํ์ ์ฐ๊ฒฐ๋์ด ์์ต๋๋ค. Linux ๊ฒ์ฆ ๋ช ๋ น์ ๊ฐ๋ฐ ๊ฐ์ด๋๋ฅผ ์ฌ์ฉํ์ญ์์ค.
์ด ๋ด์ฉ์ ๋์๋ณด๋๋ก ์ฎ๊ฒผ์ต๋๋ค.
์ ์ฅ ๊ฒฐ๊ณผ ๊ฒ์์ผ๋ก ์ด๋ํ์ต๋๋ค.
๋์๋ณด๋ ํจ๋๋ก ์ด๋ํ์ต๋๋ค.
์ด ๋ด์ฉ์ ์ ์ฅ ๊ฒฐ๊ณผ๋ก ์ฎ๊ฒผ์ต๋๋ค.
์ด ๋ด์ฉ์ ์ ์ฅ ๊ฒฐ๊ณผ๋ก ์ฎ๊ฒผ์ต๋๋ค.