์์ด์ ํธ ๋ฑ๋ก ๋ฐ ํ API ๋ช ์ธ
์ด ๋ฌธ์๋ AI ์์ด์ ํธ(๋๋ ์์์ ํธ์คํธ)๋ฅผ GIIP ๋
ผ๋ฆฌ ๋จธ์ ์ผ๋ก ๋ฑ๋กํ๊ณ , ์์ ์ CQE ํ์คํฌ ํ๋ฅผ ํด๋งํ๋ฉฐ, ์คํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ๋ ๊ธฐ์ ๋ช
์ธ๋ค โ ํ๋ก๋์
์ giipAgentWin/giipAgentLinux๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฉ์ปค๋์ฆ์ด๋ค.
๐ ๊ฐ์
์ด API๋ ํธ์คํธ โ giipAgentWin/giipAgentLinux๋ฅผ ์คํ ์ค์ธ ๋ฌผ๋ฆฌ/๊ฐ์ ๋จธ์ , ๋๋ ์์ฒด ํ๋์จ์ด ์ ์ฒด์ฑ์ด ์๋ AI ์ฝ๋ฉ ์์ด์ ํธ ์ธ์
โ ๊ฐ ์์ ์ tLSvr์ ๋
ผ๋ฆฌ ๋จธ์ (lssn)์ผ๋ก ๋ฑ๋กํ ๋ค, ๊ทธ lssn์ CQE(Centralized Queue Engine) ํ์คํฌ ํ๋ฅผ ํด๋งํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ ํ ์ ์๊ฒ ํ๋ค. ์ธ ๋์ ๋ชจ๋ ํ๋์ ์๋ํฌ์ธํธ๋ฅผ ํตํ๋ค.
๐ ์ธ์ฆ โ REST ๊ณ์ด๊ณผ ๋ค๋ฅธ ๋จ์ผ ๋์คํจ์ฒ ์๋ํฌ์ธํธ
์ด์ ๊ด๋ฆฌ API์ API ํํ๊ฐ ๋ค๋ฅด๋ค. ๊ทธ์ชฝ์
x-api-keyํค๋์ ์ค์ HTTP ์ํ ์ฝ๋๋ฅผ ์ฐ๋ ์ผ๋ฐ REST ์๋ํฌ์ธํธ(/api/giipIssues)๋ค. ์ด API๋giipApiSk2โ ํผ ์ธ์ฝ๋ฉ ๋ฐฉ์์ ๋จ์ผ ๋ฒ์ฉ ๋์คํจ์ฒ ์๋ํฌ์ธํธ์ด๋ฉฐ ํญ์ HTTP 200์ ๋ฐํํ๋ค.
๋ฒ ์ด์ค URL
https://giipfaw.azurewebsites.net/api/giipApiSk2
์์ฒญ ํํ (ํญ์ ๋์ผํ 3๊ฐ ํ๋)
| ํ๋ | ๋ด์ฉ |
|---|---|
text | ์คํ ์ด๋ ํ๋ก์์ "๋ช
๋ น" ์ด๋ฆ๊ณผ ํ๋ผ๋ฏธํฐ ์ด๋ฆ์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด ๋์ด(์: AgentAutoRegister hostname jsondata) โ ํ๋ผ๋ฏธํฐ ๊ฐ์ด ์๋ |
token | SK, ์ผ๋ฐ ํผ ํ๋๋ก ์ ์ก. HTTP ํค๋๊ฐ ์๋๋ค. |
jsondata | ์ค์ ํ๋ผ๋ฏธํฐ ๊ฐ์ ๋ด์ JSON ๊ฐ์ฒด |
curl -s -X POST "https://giipfaw.azurewebsites.net/api/giipApiSk2" \
-H "Content-Type: application/x-www-form-urlencoded" \
--data-urlencode "text=AgentAutoRegister hostname jsondata" \
--data-urlencode "token=${GIIP_API_KEY}" \
--data-urlencode 'jsondata={"hostname":"Lowy-DP01-claude-code","os":"Windows 10"}'
HTTP ์ํ ์ฝ๋๋ ๊ฑฐ์ ์๋ฌด๊ฒ๋ ์๋ ค์ฃผ์ง ์๋๋ค
์ด ์๋ํฌ์ธํธ๊ฐ ํ์ฑํ ์ ์๋ ์์ฒญ์ ๋ชจ๋ 200 OK๋ฅผ ๋ฐํํ๋ค. ์๋ชป๋ SK์ ๋ํ 401๋, ์กด์ฌํ์ง ์๋ lssn์ ๋ํ 404๋, ๊ถํ ๋ฌธ์ ์ ๋ํ 403๋ ์๋ค. ์ค์ ๊ฒฐ๊ณผ๋ ํญ์ JSON ๋ฐ๋์ data[0].RstVal์ ๋ด๊ธด๋ค(giipfaw/giipApiSk2/run.ps1 ์์ค ๊ฒํ ๋ฐ ๋ผ์ด๋ธ ํ
์คํธ๋ก ํ์ธ, 2026-09-06):
{"data":[{"Proc_MSG":"401|Unauthorized - Invalid SK","RstVal":401,"RstMsg":"Unauthorized - Invalid Secret Key"}]}
์ ์๋ต๋ HTTP 200์ด๋ค. giipApiSk2 ํธ์ถ์ ์ค์ ์ฑ๊ณต ์ฌ๋ถ๋ HTTP ์ํ๊ฐ ์๋๋ผ ํญ์ data[0].RstVal๋ก ํ๋จํ ๊ฒ.
SK โ Issue API์ ๊ฐ์ ํค ์ข ๋ฅ, ๋ค๋ฅธ ์ ์ก ๋ฐฉ์
- Issue API๊ฐ ์ฐ๋ ๊ฒ๊ณผ ๊ฐ์,
/svclist์์ ๋ฐ๊ธํ๋ csn ๋จ์ ํ๋ก์ ํธ SK๋ค โ ๋ค๋ง ์ฌ๊ธฐ์๋x-api-keyํค๋๊ฐ ์๋๋ผ POST ๋ฐ๋์token=<sk>๋ก ์ ์กํ๋ค. - csn์ SK๋ก๋ถํฐ ์๋ฒ ์ฌ์ด๋์์ ๋์ถ๋๋ค(
dbo.lwGetCSNbysk(@sk)) โ ์์ฒญ์ csn์ ์ง์ ๋ณด๋ด์ง ์์ผ๋ฉฐ,AgentAutoRegister/CQEQueueGet์๋ ํด๋ผ์ด์ธํธ๊ฐ ์ง์ ํ csn์ ๋ชฐ๋ ํด๋จํํ ์ฌ์ง ์์ฒด๊ฐ ์๋ค(giipdb/SP/pApiAgentAutoRegisterBySK.sql๊ฒํ ๋ก ํ์ธ, 2026-09-06).KVSPut์ ์ด์ ๊ด๋ จ๋์ง๋ง ๋ค๋ฅธ ์์ ๊ถ ๊ฒ์ฌ๋ฅผ ํ๋ค โ ์๋ ์ฐธ๊ณ .
์๋ํฌ์ธํธ
AgentAutoRegister โ ๋
ผ๋ฆฌ ๋จธ์ ๋ฑ๋ก ๋๋ ๊ธฐ์กด ๋จธ์ heartbeat
์์ฒญ:
text=AgentAutoRegister hostname jsondata
token=<sk>
jsondata={
"hostname": "Lowy-DP01-claude-code",
"os": "Windows 10",
"cpu": "...", "cpu_cores": 8, "memory_gb": 32, "disk_gb": 512,
"agent_version": "giip-agent-skill/1.0.0",
"ipv4_global": "...", "ipv4_local": "...",
"network": [{"name":"eth0","ipv4":"...","ipv6":"...","mac":"..."}],
"software": [{"name":"...","version":"...","vendor":"...","type":"..."}],
"services": [{"name":"...","status":"...","start_type":"...","port":80}]
}
hostname๋ง ํ์์ด๊ณ ๋๋จธ์ง ํ๋๋ best-effort์ด๋ฉฐ ์๋ต ๊ฐ๋ฅํ๋ค.
์๋ณ ํค๋ (hostname, csn)์ด๋ค. ์คํ ์ด๋ ํ๋ก์์ (pApiAgentAutoRegisterBySK)๋ LSHostname = hostname AND CSn = <SK๋ก๋ถํฐ ๋์ถ> ์กฐ๊ฑด์ผ๋ก tLSvr์ ์กฐํํ๋ค:
| ๊ธฐ์กด ํ ์กด์ฌ? | ๋์ | ์๋ต |
|---|---|---|
| ์์ | ์ tLSvr ํ INSERT, lssn = SCOPE_IDENTITY() | {"data":[{"lssn":<new>,"action":"new","RstVal":200,...}]} |
| ์์ | ๊ธฐ์กด ํ UPDATE(์คํ, ๋คํธ์ํฌ/์ํํธ์จ์ด/์๋น์ค ์ธ๋ฒคํ ๋ฆฌ, LSLastHeartbeat) | {"data":[{"lssn":<same>,"action":"update","RstVal":200,...}]} |
๋ผ์ด๋ธ ๊ฒ์ฆ ์๋ฃ (2026-09-06, csn 47):
$ python scripts/giip_agent.py register --tool-slug claude-code
{"success": true, "hostname": "Lowy-DP01-claude-code", "lssn": 71290, "action": "new"}
$ python scripts/giip_agent.py register --tool-slug claude-code # ๋ฐ๋ณต ํธ์ถ
{"success": true, "hostname": "Lowy-DP01-claude-code", "lssn": 71290, "action": "update"}
ํ์ ํธ์คํธ๋ช
๊ท์น: <๋ฌผ๋ฆฌ ํธ์คํธ๋ช
>-<tool-slug>. ๊ฐ์ ํธ์คํธ์ ์๋ก ๋ค๋ฅธ AI ๋๊ตฌ๋ ๊ฐ์์ hostname์ผ๋ก(๋ฐ๋ผ์ ๊ฐ์์ lssn์ผ๋ก) ๋ฑ๋กํด์ผ ํ๋ค โ ๊ฐ์ PC์์ ๋์๊ฐ๋ Claude Code, Codex, Antigravity๋ ์๋ก ๋ค๋ฅธ ์ธ ๋
ผ๋ฆฌ ๋จธ์ ์ด๋ค(์: Lowy-DP01-claude-code, Lowy-DP01-codex, Lowy-DP01-antigravity). ์ด๋ ์๋ฒ๊ฐ ๊ฐ์ ํ๋ ์ ์ฝ์ด ์๋๋ผ ๋ฌธ์/ํด๋ผ์ด์ธํธ ์ฐจ์์ ๊ท์จ์ด๋ค โ ์๋ฒ๋ ์ด๋ค hostname์ ๋ณด๋ด๋ ๊ทธ๋๋ก ์์ฑํ๋ฏ๋ก, ๊ท์จ์ ํธ์ถํ๋ ์ชฝ์์ ์ง์ผ์ผ ํ๋ค.
์๋ชป๋ SK๋ 401์ ๋ฐํํ์ง ์๊ณ data[0] ์์ RstVal: 401๋ก ํํ๋๋ค({"Proc_MSG":"401|Unauthorized - Invalid SK",...}).
CQEQueueGet โ ์ด lssn์ ํ๋ฅผ ํ ๋ฒ ํด๋ง
์์ฒญ:
text=CQEQueueGet lssn hostname os op
token=<sk>
jsondata={"lssn":71290,"hostname":"Lowy-DP01-claude-code","os":"Windows 10","op":"op"}
์๋ต, ์์ ์์:
{"data":[{"RstVal":"200","ms_body":"<script or payload text>","mslsn":8032,"script_type":"sh","mssn":123}]}
์๋ต, ํ ์์ (๋ผ์ด๋ธ ๊ฒ์ฆ, 2026-09-06) โ ์ด๋ ์ฑ๊ณต์ด์ง ์๋ฌ๊ฐ ์๋๋ค:
{"data":[{"RstVal":"404","ProcName":"[pCQEQueueGetbySK02] no queue 2"}]}
$ python scripts/giip_agent.py poll --lssn 71290 --tool-slug claude-code
{"success": true, "lssn": 71290, "has_work": false}
RstVal ์๋ฏธ (giipdb/SP/pApiCQEQueueGetbySK.sql ๊ฒํ ๋ก ํ์ธ, 2026-09-06):
RstVal | ์๋ฏธ |
|---|---|
200 | ํ์ ์์
์์; ms_body/mslsn/mssn/script_type์ด ์ฑ์์ง |
201 | ์ ๊ท lssn์ ๋ํ ์ต์ด ํด๋ง์ด ์๋ฌต์ ์ฌ๋ฑ๋ก ๊ฒฝ๋ก๋ฅผ ์ ๋ฐํจ โ "์์ง ์์
์์"๊ณผ ๋์ผํ๊ฒ ์ทจ๊ธํ๊ณ ์ ์ ํ ๋ค์ ํด๋ง |
0 ๋๋ 404 | ํ์ธํ์ง๋ง ์ง๊ธ์ ํ๊ฐ ์์ โ ์ ์, ์๋ฌ ์๋ |
| ๊ทธ ์ธ | ์ค์ ์๋ฌ |
๊ถ์ฅ ํด๋ง ์ฃผ๊ธฐ: 60์ด. ์ค์ giipAgentLinux ์ค์น๊ฐ cron์ผ๋ก ์ฐ๋ ์ฃผ๊ธฐ(* * * * *)์ ๋์ผํ๋ค. ์ด API ์์ฒด๊ฐ ํด๋ง์ ์๋ ์ ํํ์ง๋ ์์ง๋ง ๋ ๋น ๋ฅด๊ฒ ํด๋งํ ์ด์ ๊ฐ ์๋ค โ ํ๋ GIIP ์์ฒด ์ผ์ ์ ๋ฐ๋ผ ์ฑ์์ง๋ค.
์๋ชป๋ lssn์ "์์
์์"๊ณผ ๊ตฌ๋ถ๋์ง ์๋๋ค. ํด๋งํ๋ lssn์ด ๊ทธ SK์ csn ์์์ด ์๋๋ฉด, ๋๊ธฐ ์์
์ ์ฐพ๋ ์กฐ์ธ(tMgmtScriptList ms inner join tLSvr ls on ... where ls.csn = @csn and ms.lssn = @lssn)์ด ์๋ฌด ํ๋ ์ฐพ์ง ๋ชปํด ๋น ํ์ ๋์ผํ RstVal: 404๋ฅผ ๋ฐํํ๋ค. ๋ณ๋์ "๊ถํ ์์"์ด๋ "lssn ์์" ์๋ต์ ์๋ค โ ์๋ชป๋ lssn์ ํด๋งํ๊ณ ์๋ ๊ฒ ๊ฐ์ผ๋ฉด register๋ฅผ ๋ค์ ์คํํด ๋น๊ตํ ๊ฒ.
KVSPut (kFactor=cqeresult) โ ๊ฒฐ๊ณผ ๋ณด๊ณ
์ ์ฉ "์๋ฃ/ack" ๋ช
๋ น์ ์๋ค. ๊ฒฐ๊ณผ๋ GIIP์ ๋ชจ๋ ์์ด์ ํธ ํ
๋ ๋ฉํธ๋ฆฌ์ ์ฐ์ด๋ ๊ฒ๊ณผ ๊ฐ์ ๋ฒ์ฉ ํค-๊ฐ ๋ฉ์ปค๋์ฆ์ธ KVSPut์ผ๋ก ๊ธฐ๋กํ๋ค.
์์ฒญ:
text=KVSPut kType kKey kFactor
token=<sk>
jsondata={
"kType": "lssn", "kKey": "71290", "kFactor": "cqeresult",
"kValue": {"mslsn": 8032, "mssn": 123, "lssn": 71290,
"status": "success", "exit_code": 0,
"stdout": "...", "stderr": ""}
}
kType์ ๋ฐ๋์ ๋ฌธ์์ด ๋ฆฌํฐ๋ด "lssn", kKey๋ ๊ฒฐ๊ณผ๊ฐ ์ํ lssn(๋ฌธ์์ด)์ด์ด์ผ ํ๋ค.
register/poll๊ณผ ๋ฌ๋ฆฌ ์ด ํธ์ถ์ ์์ ๊ถ์ ๊ฒ์ฌํ๋ฉฐ ๊น๋ํ๊ฒ ์คํจํ๋ค (giipdb/SP/pApiKVSPutbySk.sql ๊ฒํ ๋ก ํ์ธ, 2026-09-06): SP๋ ์ฐ๊ธฐ ์ ์ EXISTS(SELECT 1 FROM tLSvr WHERE LSsn = @kKey AND CGSn = <SK๋ก๋ถํฐ ๋์ถ>)์ ํ์ธํ๋ค. lssn์ด ๊ทธ SK์ ํค ๊ทธ๋ฃน ์์ ๊ฐ ์๋๋ฉด:
{"data":[{"RstVal":411,"RstMsg":"..."}]}
report์์ 200์ด ์๋ RstVal์ ๋ชจ๋ ์คํจ๋ก ๊ฐ์ฃผํ ๊ฒ โ heartbeat์ฒ๋ผ ์ฌ์๋ํ์ง ๋ง๊ณ , ๊ฒฐ๊ณผ๋ฅผ ์กฐ์ฉํ ๋ฒ๋ฆฌ์ง๋ ๋ง ๊ฒ.
๋ฑ๋ก ํด์ (unregister/deregister) ์๋ํฌ์ธํธ ์์
๋
ผ๋ฆฌ ๋จธ์ ์ ์ญ์ ํ๋ ํธ์ถ์ ์๋ค. heartbeat๋ฅผ ๋ฉ์ถ ๋จธ์ ์ ๊ทธ๋ฅ ์ค๋๋ผ ๊ฐ ๋ฟ์ด๋ค(LSLastHeartbeat๊ฐ ๋ก์๊ฐ) โ API ์ฐจ์์ "์๋ณ ์ธ์ฌ"๋ ์๋ค.
๐ ์๋ต ํ์ค
์ธ ๋ช
๋ น ์ค ๋ฌด์์ ํธ์ถํ๋ giipApiSk2 ํธ์ถ์ ํญ์ ๊ฒฐ๊ณผ๋ฅผ data ๋ฐฐ์ด๋ก ๊ฐ์ผ๋ค:
{ "data": [ { "RstVal": 200, ... } ] }
- ์ฑ๊ณต:
RstVal์ด200(๊ฐ๋AgentAutoRegister/CQEQueueGet์ ์ฃ์ง ์ผ์ด์ค์์201).RstVal์ ๋ช ๋ น์ ๋ฐ๋ผ ์ซ์ ๋๋ ์ซ์ ๋ฌธ์์ด์ด๋ค โ ์ด ๋ช ์ธ์ ํด๋ผ์ด์ธํธ ์คํฌ๋ฆฝํธ๋ ๋ ๋ค ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฌธ์์ด๋ก ๋น๊ตํ๋ค. - poll์ "์์
์์":
RstVal0๋๋404โ ์ฑ๊ณต, ์คํจ ์๋. - ์คํจ: ๊ทธ ์ธ์
RstVal๊ณผ ํจ๊ป ์ด์ ๋ฅผ ์ค๋ช ํ๋RstMsg/Proc_MSG/ProcName. - ์ ์ก ๊ณ์ธต ์คํจ (๋คํธ์ํฌ ์ค๋ฅ, ํ์์์, 200์ด ์๋ HTTP ์ํ): ์์ฒญ์ด ์คํ ์ด๋ ํ๋ก์์ ์ ์์ ๋๋ฌํ์ง ๋ชปํ๋ค๋ ๋ป โ
RstVal์คํจ์๋ ์์ ํ ๋ค๋ฅธ ์คํจ ์ ํ์ด๋ค.
๐ค AI ์์ด์ ํธ๋ฅผ ์ํ ์ ์ฒด ์ ์ฐจ (๋ฑ๋ก โ ํด๋ง โ ๋ณด๊ณ )
export GIIP_API_KEY="<the SK>"
# 1. ๋ฑ๋ก (๋ฉฑ๋ฑ โ ์ต์ด ํธ์ถ์ lssn์ ์์ฑํ๊ณ , ๊ฐ์ hostname์ ์ดํ ํธ์ถ์
# ๊ทธ lssn์ ๋ํ heartbeat)
python scripts/giip_agent.py register --tool-slug claude-code
# {"success": true, "hostname": "Lowy-DP01-claude-code", "lssn": 71290, "action": "new"}
# 2. ํ ๋ฒ ํด๋ง. ์์ฒด ์ผ์ (~60์ด)์ผ๋ก ๋ฐ๋ณตํ ๊ฒ -- ๋ด๋ถ์์ ๋ฐ๋ณตํ์ง ๋ง ๊ฒ.
python scripts/giip_agent.py poll --lssn 71290 --tool-slug claude-code
# {"success": true, "lssn": 71290, "has_work": false}
# 3. has_work๊ฐ true๋ฉด ms_body๋ฅผ ์ฒ๋ฆฌํ ๋ค ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ณ .
python scripts/giip_agent.py report --lssn 71290 --mslsn 8032 --mssn 123 \
--status success --exit-code 0
โ ๏ธ ์ค์ ์ฐธ๊ณ ์ฌํญ
- ์ด์ ๊ด๋ฆฌ API์๋ ๋ค๋ฅธ API ๊ณ์ด์ด๋ค. ๋์ ํผ๋ํ์ง ๋ง ๊ฒ:
giip-issueํด๋ผ์ด์ธํธ๋ SK๋ฅผx-api-keyํค๋๋ก ์ค์ HTTP ์ํ ์ฝ๋๋ฅผ ์ฐ๋ REST ์๋ํฌ์ธํธ์ ๋ณด๋ด๊ณ ,giip-agentํด๋ผ์ด์ธํธ๋ SK๋ฅผtokenํผ ํ๋๋ก ํญ์ HTTP 200์ ๋ฐํํ๋ ๋จ์ผ ๋์คํจ์ฒ ์๋ํฌ์ธํธ์ ๋ณด๋ธ๋ค. - ํธ์คํธ๋ช
๊ท์น์ ์๋ฒ ์ ์ฝ์ด ์๋๋ผ ํด๋ผ์ด์ธํธ ์ธก ๊ท์จ์ด๋ค. ์๋ก ๋ค๋ฅธ ๋ ๋๊ตฌ์ ๋ํด
foo๋ฅผ ๋ ๋ฒ ๋ฑ๋กํ๋ ๊ฒ์ ๋ง๋ ์ฅ์น๋ ์๋ค โ ํ์ง๋ง ๊ทธ๋ ๊ฒ ํ๋ฉด ์๋ก์ ํ ์ด๋ ฅ์ ํท๊ฐ๋ฆฌ๊ฒ ํ๋ ๋ ๊ฐ์lssn์ด ์๊ธด๋ค.<host>-<tool-slug>๊ท์น์ ์๊ฒฉํ ์งํฌ ๊ฒ. - ์์คํ
์ ๋ณด ํ์ด๋ก๋๊ฐ ๋ฐ๋์ด๋ ๋ฐ๋ณต
register๋ ์ฌ์ ํ heartbeat๋ค โ ์ ๋จธ์ ์ด ์๋๋ค. ์ ์ฒด์ฑ์ ๊ฒฐ์ ํ๋ ๊ฒ์ ์ค์งhostname๋ฌธ์์ด์ด๋ค.
๋ฌธ์ ํด๊ฒฐ
| ์ฆ์ | ์์ธ | ํด๊ฒฐ |
|---|---|---|
AgentAutoRegister์์ data[0].RstVal์ด 401 | SK๊ฐ ์ ํจํ์ง ์๊ฑฐ๋ ์ฌ๋ฐ๊ธ๋จ | /svclist์์ SK ์ฌํ์ธ |
poll์ด ๊ณ์ RstVal 404/has_work: false | ์ค์ ๋ก ํ๊ฐ ์๊ฑฐ๋, lssn์ด ์ด SK์ ๋ค๋ฅธ csn ์์ | register๋ฅผ ์ฌ์คํํด ๋ฐํ๋ lssn์ ๋น๊ต |
report๊ฐ RstVal 411 ๋ฐํ | lssn์ด ์ด SK์ ํค ๊ทธ๋ฃน(cgsn) ์์ ๊ฐ ์๋ | ์์ ์ register ํธ์ถ์ด ๋ฐํํ lssn์๋ง ๋ณด๊ณ |
| HTTP ์ํ ์์ฒด๊ฐ 200์ด ์๋ | ์ ์ก ๊ณ์ธต ์คํจ(๋คํธ์ํฌ, ๋ผ์ฐํฐ ์์ฒด๊ฐ ๊ฑฐ๋ถํ ์๋ชป๋ ์์ฒญ) | RstVal ์คํจ์๋ ๋ค๋ฆ โ ์ฐ๊ฒฐ ํ์ธ ํ ์ฌ์๋๊ฐ ํฉ๋ฆฌ์ ์ผ ์ ์์(RstVal ์คํจ๋ ์ฌ์๋ ๊ธ์ง) |
ํ ๋จธ์ ์ด๋ผ๊ณ ์๊ฐํ๋๋ฐ ์๋ก ๋ค๋ฅธ lssn ๋ ๊ฐ๊ฐ ๋ํ๋จ | hostname ๊ตฌ์ฑ์ด ์ผ๊ด๋์ง ์์(๋ค๋ฅธ --tool-slug ์ฌ์ฉ, ๋๋ bare hostname์ผ๋ก ์ค๋ฒ๋ผ์ด๋) | hostname์ ํญ์ <host>-<tool-slug>๋ก ๊ตฌ์ฑํ๊ณ ํธ์ถ ๊ฐ ์์ ์ ์ผ๋ก ์ ์ง |
๋ฒ์ : 1.0
์ต์ข
๊ฐฑ์ : 2026-09-06 (giipfaw ํ๋ก๋์
๋ผ์ด๋ธ ๊ฒ์ฆ, csn 47, ๊ฒฐ๊ณผ lssn 71290)
์์ค ํ์ผ: giipv3/public/help/giip-agent-api.ko.md
v1.0 (2026-09-06, giip #2081): ์ต์ด ๋ฆด๋ฆฌ์ค.
giipdb/SP/pApiAgentAutoRegisterBySK.sql,pApiCQEQueueGetbySK.sql,pApiKVSPutbySk.sql,giipfaw/giipApiSk2/run.ps1์์ค ๊ฒํ ์giipAgentLinux(scripts/giip-auto-discover.sh,lib/cqe.sh,lib/kvs.sh,cqe/giipCQE.sh)์ ํ๋ก๋์ ํด๋ผ์ด์ธํธ ๋์์ ๊ทผ๊ฑฐ๋ก,giipApiSk2๋์คํจ์ฒ ์์AgentAutoRegister,CQEQueueGet,KVSPut(kFactor=cqeresult)์ ๋ฌธ์ํํ๋ค. ๋ผ์ด๋ธ ๊ฒ์ฆ:register1ํ(์ ๊ท lssn 71290), ๋ฐ๋ณตregister1ํ(heartbeat, ๋์ผ lssn),poll1ํ(ํ ์์).
๊ด๋ จ ๋ฌธ์: