giip
SES Proposal
4 min read

CQE ๋ ˆํฌ์ง€ํ† ๋ฆฌ ์Šคํฌ๋ฆฝํŠธ ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ

CQE(Custom Query Engine) ๋ ˆํฌ์ง€ํ† ๋ฆฌ์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋“ฑ๋กํ•˜๋ฉฐ, ์‹คํ–‰ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค.

๐Ÿค– CQE ๋ ˆํฌ์ง€ํ† ๋ฆฌ ๋ชฉ๋ก ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’

๐Ÿ“‹ ๊ฐœ์š”

CQE Repo List๋Š” ์œ ์ง€๋ณด์ˆ˜ ๋ฐ ์ง„๋‹จ์šฉ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์ €์žฅ๋œ ์Šคํฌ๋ฆฝํŠธ๋Š” ์—ฌ๋Ÿฌ ๋…ผ๋ฆฌ ์„œ๋ฒ„(LSVR)์— ์„œ๋กœ ๋‹ค๋ฅธ ์‹คํ–‰ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐฐํฌํ•˜์—ฌ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ” ์Šคํฌ๋ฆฝํŠธ ์ƒ์„ธ ๋ฐ ์‹คํ–‰ ์„ค์ •

๋ชฉ๋ก์—์„œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ๋ชจ๋‹ฌ์ด ์—ด๋ฆฌ๋ฉฐ, ๋‹ค์Œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ์Šคํฌ๋ฆฝํŠธ ๋ณธ๋ฌธ ํ™•์ธ

์Šคํฌ๋ฆฝํŠธ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์ „์ฒด ํ™”๋ฉด์œผ๋กœ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (๋ชฉ๋ก์—์„œ๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋ฉฐ, ์ˆ˜์ •์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ํŽธ์ง‘ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜์„ธ์š”.)

2. ์‹คํ–‰ ์„ค์ • (์‹ ๊ทœ)

์„œ๋ฒ„์— ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ ์ „์— ์‹คํ–‰ ๋ฐฉ์‹์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ™œ์„ฑ (Active): ์„ ํƒํ•œ ์„œ๋ฒ„์—์„œ ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰์„ ํ™œ์„ฑํ™”ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต (Repeat): ํ™œ์„ฑํ™” ์‹œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ฐ˜๋ณต ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  • ์‹คํ–‰ ๊ฐ„๊ฒฉ (๋ถ„): ๋ฐ˜๋ณต ์‹คํ–‰ ์‹œ์˜ ์ฃผ๊ธฐ(๋ถ„ ๋‹จ์œ„)๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ์ž‘ ์ผ์‹œ: ์ฒซ ์‹คํ–‰์ด ์‹œ์ž‘๋  ์‹œ์ ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

3. ์„œ๋ฒ„ ๋“ฑ๋ก (LSVR ํ ๋“ฑ๋ก)

ํ˜„์žฌ ํ”„๋กœ์ ํŠธ์˜ ์„œ๋ฒ„ ์ค‘ ์›ํ•˜๋Š” ์„œ๋ฒ„๋ฅผ ์„ ํƒํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • LSVR ์„ ํƒ๊ธฐ: ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํ†ตํ•ด ๋Œ€์ƒ ์„œ๋ฒ„๋“ค์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  • ํ ๋“ฑ๋ก: ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ์ •์˜๋œ ์„ค์ •์œผ๋กœ ์„ ํƒ๋œ ๋ชจ๋“  ์„œ๋ฒ„์— ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋“ฑ๋ก๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š ์Šคํฌ๋ฆฝํŠธ ๋“ฑ๋ก ํ˜„ํ™ฉ

๋ชจ๋‹ฌ ํ•˜๋‹จ์˜ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ๋ก ํ˜„ํ™ฉ ํ…Œ์ด๋ธ”์—์„œ ํ˜„์žฌ ์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ธ ๋ชจ๋“  ์„œ๋ฒ„ ๋ชฉ๋ก์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ํ˜ธ์ŠคํŠธ๋ช…: ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋“ฑ๋ก๋œ ์„œ๋ฒ„์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
  • ์šฉ๋„: ํ•ด๋‹น ๋…ผ๋ฆฌ ์„œ๋ฒ„์˜ ์ •์˜๋œ ์šฉ๋„์ž…๋‹ˆ๋‹ค.
  • ์„ค์ • ์ •๋ณด: ๊ฐ ์„œ๋ฒ„๋ณ„๋กœ ์„ค์ •๋œ ํ™œ์„ฑ/๋ฐ˜๋ณต/๊ฐ„๊ฒฉ ์ƒํƒœ๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.
  • ๋งˆ์ง€๋ง‰ ์‹คํ–‰: ํ•ด๋‹น ์„œ๋ฒ„์—์„œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋งˆ์ง€๋ง‰์œผ๋กœ ์‹คํ–‰๋œ ์‹œ๊ฐ์„ ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

API ์ฐธ์กฐ

์ด ๊ธฐ๋Šฅ์˜ API ์ƒ์„ธ ์‚ฌ์–‘์€ ๋ณ„๋„ ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ“˜ ์‹œ์Šคํ…œ ๊ด€๋ฆฌ API ๋ ˆํผ๋Ÿฐ์Šค

๋ฌธ์ œ ํ•ด๊ฒฐ

์ฆ์ƒ์›์ธํ•ด๊ฒฐ
ํ ๋“ฑ๋ก ํ›„์—๋„ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์Œ์‹คํ–‰ ์„ค์ •์—์„œ ํ™œ์„ฑ(Active) ์ด ๊บผ์ ธ ์žˆ์Œ์ƒ์„ธ ๋ชจ๋‹ฌ์—์„œ Active๋ฅผ ์ผ  ๋’ค ๋‹ค์‹œ ํ์— ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
LSVR ์„ ํƒ๊ธฐ์— ๋Œ€์ƒ ์„œ๋ฒ„๊ฐ€ ๋ณด์ด์ง€ ์•Š์Œํ˜„์žฌ ์„ ํƒ๋œ ํ”„๋กœ์ ํŠธ์— ์„œ๋ฒ„๊ฐ€ ์—†๊ฑฐ๋‚˜ ์„œ๋ฒ„๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์†ํ•จ์ƒ๋‹จ์—์„œ ์˜ฌ๋ฐ”๋ฅธ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
๋ฐ˜๋ณต ์‹คํ–‰์ด ๋™์ž‘ํ•˜์ง€ ์•Š์Œ๋ฐ˜๋ณต(Repeat) ์€ ์ผฐ์ง€๋งŒ ์‹คํ–‰ ๊ฐ„๊ฒฉ(๋ถ„) ์ด ๋น„์–ด ์žˆ์Œ์‹คํ–‰ ๊ฐ„๊ฒฉ์„ 1 ์ด์ƒ์œผ๋กœ ์„ค์ •ํ•œ ๋’ค ๋‹ค์‹œ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
๋“ฑ๋ก ํ˜„ํ™ฉ์˜ ๋งˆ์ง€๋ง‰ ์‹คํ–‰ ์ด ๊ฐฑ์‹ ๋˜์ง€ ์•Š์Œ๋Œ€์ƒ ์„œ๋ฒ„์˜ ์—์ด์ „ํŠธ๊ฐ€ ์•„์ง ํ๋ฅผ ์ˆ˜์‹ ํ•˜์ง€ ๋ชปํ•จ์—์ด์ „ํŠธ ์—ฐ๊ฒฐ ์ƒํƒœ์™€ ์‹œ์ž‘ ์ผ์‹œ๊ฐ€ ๊ณผ๊ฑฐ ์‹œ๊ฐ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”Œ CQE API (์ž๋™ํ™”์šฉ)

์œ„ UI ๋™์ž‘์€ ๋‹ค์Œ CQE API ๋ฒ„๋ธŒ(byAK/bySk ๋””์ŠคํŒจ์ฒ˜)์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. ์š”์ฒญ์€ text(๋ฒ„๋ธŒ+ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„), jsondata(๊ฐ’), token์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

  • CQERepoPut msName msDetail msBody msPer msPrice msType โ€” ์Šคํฌ๋ฆฝํŠธ๋ฅผ repo์— ๋“ฑ๋ก.

    • text ์—๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์ด๋ฆ„๋งŒ ๋‹ด์Šต๋‹ˆ๋‹ค: CQERepoPut msName msDetail msBody msPer msPrice msType
    • jsondata ์— ์‹ค์ œ ๊ฐ’์„ ๋‹ด์Šต๋‹ˆ๋‹ค: {"msName":"...","msDetail":"...","msBody":"#!/bin/sh\n...","msPer":0,"msPrice":0,"msType":"sh"}
    • msType ์€ 5์ž ์ด๋‚ด์ž…๋‹ˆ๋‹ค(varchar(5)). powershellยทexpectยทcmdwin ๊ฐ™์€ ๊ธด ์ด๋ฆ„์€ ์ €์žฅ๋˜์ง€ ์•Š์œผ๋‹ˆ ์•„๋ž˜ ํ‘œ์˜ ์งง์€ ์ฝ”๋“œ๋ฅผ ์”๋‹ˆ๋‹ค.
    msType์‹คํ–‰ ๋Œ€์ƒ OS์—์ด์ „ํŠธ๊ฐ€ ์‹ค์ œ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•
    ps1Windowspowershell.exe (์ฐฝ ์—†์ด)
    cmdWindowscmd.exe
    batWindowscmd ๋กœ ์ •๊ทœํ™”๋œ ๋’ค cmd.exe
    wsfWindowswscript.exe //B //Nologo
    ps1ui / cmduiWindows๋ฐ์Šคํฌํ†ฑ ์„ธ์…˜์—์„œ ์ฐฝ์„ ๋„์›Œ ์‹คํ–‰
    shLinuxsh <์ž„์‹œํŒŒ์ผ>
    pyLinuxpython3 <์ž„์‹œํŒŒ์ผ>
    ps1Linuxpwsh <์ž„์‹œํŒŒ์ผ>

    OS ๋ฅผ ์„ž์ง€ ๋งˆ์„ธ์š”. Windows ์—์ด์ „ํŠธ๋Š” ์œ„ Windows ํƒ€์ž…๋งŒ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๋ฐ–์˜ ๊ฐ’์€ unsupported_script_type ์˜ค๋ฅ˜๋กœ ๊ธฐ๋ก๋งŒ ํ•˜๊ณ  ์‹คํ–‰ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Linux ์—์ด์ „ํŠธ๋Š” ๋ฐ˜๋Œ€๋กœ ๋ชจ๋ฅด๋Š” ํƒ€์ž…์„ ์ „๋ถ€ sh ๋กœ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค โ€” bat/wsf ์Šคํฌ๋ฆฝํŠธ๋ฅผ Linux ์„œ๋ฒ„์— ํ• ๋‹นํ•˜๋ฉด ์กฐ์šฉํžˆ sh ๋กœ ๋Œ์•„๊ฐ€ ๊นจ์ง‘๋‹ˆ๋‹ค. ํ• ๋‹นํ•  ์„œ๋ฒ„์˜ OS ์— ๋งž๋Š” ํƒ€์ž…์œผ๋กœ ๋“ฑ๋กํ•˜์„ธ์š”.

    • Linux ์…ธ ์Šคํฌ๋ฆฝํŠธ ๋“ฑ๋ก: msType ์— sh, msBody ์— ์…ธ ์Šคํฌ๋ฆฝํŠธ ์ „๋ฌธ์„ ๋„ฃ์Šต๋‹ˆ๋‹ค. Linux ์—์ด์ „ํŠธ๋Š” ๋ฐ›์€ ๋ณธ๋ฌธ์„ ์ž„์‹œ ํŒŒ์ผ๋กœ ์ €์žฅํ•œ ๋’ค sh ๋กœ ์‹คํ–‰ํ•˜๋ฏ€๋กœ #!/bin/bash ์…ฐ๋ฑ…์€ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. bash ์ „์šฉ ๋ฌธ๋ฒ•([[ ]], ๋ฐฐ์—ด ๋“ฑ)์€ ์“ฐ์ง€ ๋ง๊ณ  POSIX ์…ธ๋กœ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜, ๋ณธ๋ฌธ ์ฒซ ์ค„์—์„œ exec bash "$0" "$@" ๋กœ bash ์— ๋„˜๊ธฐ์„ธ์š”.

      #!/bin/sh
      # sh ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ POSIX ๋ฌธ๋ฒ•๋งŒ ์”๋‹ˆ๋‹ค. sk/lssn/apiaddrv2 ๋Š” ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋“ค์–ด์˜ต๋‹ˆ๋‹ค.
      curl -s -H "Authorization: Bearer $sk" "$apiaddrv2/health" | jq -r .status
    • ์Šคํฌ๋ฆฝํŠธ ๋ณธ๋ฌธ์„ ์–ด๋””์— ๋‘˜์ง€: ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.

      • ๋ณธ๋ฌธ ์ „์ฒด๋ฅผ msBody ์— ๋„ฃ๊ธฐ โ€” ํ˜ธ์ŠคํŠธ์— ํŒŒ์ผ์„ ๋ฏธ๋ฆฌ ๊น”์ง€ ์•Š์•„๋„ ๋˜๊ณ  giip ์ชฝ ๋ณ€๊ฒฝ๋งŒ์œผ๋กœ ์ „์ฒด ์„œ๋ฒ„์— ๋ฐฐํฌ๋ฉ๋‹ˆ๋‹ค. ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
      • ํ˜ธ์ŠคํŠธ์— ๋‘” ์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ˜ธ์ถœ๋งŒ ํ•˜๊ธฐ โ€” ํ˜ธ์ŠคํŠธ์— jqยทcurl ๋“ฑ ์ „์ œ๊ฐ€ ์žˆ๊ฑฐ๋‚˜ ๋ณธ๋ฌธ์ด ์•„์ฃผ ๊ธธ ๋•Œ ์”๋‹ˆ๋‹ค. ๋Œ€์‹  ํ˜ธ์ŠคํŠธ๋ณ„ ๋ฐฐํฌ ์ƒํƒœ๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • msBody ๋Š” ntext ๋ผ ์‹ค์šฉ์ ์ธ ๊ธธ์ด ์ œํ•œ์ด ์—†์Šต๋‹ˆ๋‹ค(์‹ค์ธก ์ตœ๋Œ€ 20,883์ž).
  • CQEQueuePut mssn lssngroup csn interval active script_type custom_values repeat startdate auid โ€” ์„œ๋ฒ„์— ์Šคํฌ๋ฆฝํŠธ ํ• ๋‹น.

    • lssngroup: ์ฝค๋งˆ ๊ตฌ๋ถ„ LSSN ๋ชฉ๋ก(์„œ๋ฒ„๋งˆ๋‹ค 1๊ฑด ํ• ๋‹น).
    • interval: ๋ถ„. repeat: 0/1 = ์ผํšŒ์„ฑ, 2 = ์žฌ๊ท€(interval๋งˆ๋‹ค ๋ฐ˜๋ณต).
    • custom_values: ์„œ๋ฒ„๋ณ„ ์ฃผ์ž…๊ฐ’ โ†’ ์Šคํฌ๋ฆฝํŠธ ๋ณธ๋ฌธ์˜ {{CustomVariables}}๋กœ ์น˜ํ™˜.
  • CQEQueueGet lssn hostname os op โ€” ์—์ด์ „ํŠธ๊ฐ€ ํด๋งํ•ด ๋‹ค์Œ ์Šคํฌ๋ฆฝํŠธ ๋ณธ๋ฌธ์„ ์ˆ˜์‹ .

์Šคํฌ๋ฆฝํŠธ ๋ณธ๋ฌธ ์น˜ํ™˜์ž: {{CustomVariables}}(ํ• ๋‹น๋ณ„ custom_values, ์„œ๋ฒ„์ธก ์ฃผ์ž…), {{sk}}(์—์ด์ „ํŠธ ํ† ํฐ), {{lssn}}(์—์ด์ „ํŠธ LSSN).

Linux ์—์ด์ „ํŠธ๋Š” sk, lssn, apiaddrv2 ๋ฅผ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ๋„ export ํ•ฉ๋‹ˆ๋‹ค. {{sk}}/{{lssn}} ์น˜ํ™˜์ž ๋Œ€์‹  ์Šคํฌ๋ฆฝํŠธ์—์„œ $skยท$lssnยท$apiaddrv2 ๋ฅผ ๊ทธ๋Œ€๋กœ ์จ๋„ ๋ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ์ œํ•œ

๊ตฌ๋ถ„Windows ์—์ด์ „ํŠธLinux ์—์ด์ „ํŠธ
์‹คํ–‰ ์‹œ๊ฐ„ ์ œํ•œ๊ธฐ๋ณธ 600์ดˆ. giipAgent.cfg ์˜ cqetimeoutsec ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ณผํ•˜๋ฉด ๊ฐ•์ œ ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค์ œํ•œ ์—†์Šต๋‹ˆ๋‹ค
์‹คํ–‰ ๋ฐฉ์‹์ž„์‹œ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ์ฐฝ ์—†์ด ์‹คํ–‰์ž„์‹œ ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด sh ๋กœ ์‹คํ–‰
๋ณธ๋ฌธ ๊ธธ์ด์ œํ•œ ์—†์Œ(ntext)๊ฐ™์Œ

์‹คํ–‰ ๊ฐ„๊ฒฉ: interval ์€ ๋ถ„ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ์žฌ์‹คํ–‰ ์ฃผ๊ธฐ๋Š” ์—์ด์ „ํŠธ ํด๋ง ์ฃผ๊ธฐ์— ์ขŒ์šฐ๋ฉ๋‹ˆ๋‹ค โ€” interval=0 ์€ "์ฃผ๊ธฐ ์—†์Œ" ์ด ์•„๋‹ˆ๋ผ ํด๋ง ๋กœํ…Œ์ด์…˜๋งˆ๋‹ค ์žฌ๋ฐฐ๊ธ‰ ์ž…๋‹ˆ๋‹ค. ํ™œ์„ฑ ํ๊ฐ€ ์—ฌ๋Ÿฌ ๊ฑด์ด๋ฉด ๋กœํ…Œ์ด์…˜์œผ๋กœ ๋Œ์•„๊ฐ€๋ฏ€๋กœ ํ๊ฐ€ N๊ฑด์ผ ๋•Œ ์ฒด๊ฐ ์ฃผ๊ธฐ๊ฐ€ ์•ฝ N๋ฐฐ๋กœ ๋Š˜์–ด๋‚ฉ๋‹ˆ๋‹ค(giipdb docs/30_Specs/SPEC_AND_CHECKLIST.md ์‹ค์ธก). ๊ฐ„๊ฒฉ์„ 1๋ถ„์œผ๋กœ ๋‘ฌ๋„ ํด๋ง๋ณด๋‹ค ์ž์ฃผ ์‹คํ–‰๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.

์‹คํ–‰ ๊ฒฐ๊ณผ ์ €์žฅ: ์Šคํฌ๋ฆฝํŠธ์˜ ํ‘œ์ค€์ถœ๋ ฅยทํ‘œ์ค€์˜ค๋ฅ˜๋Š” ์—์ด์ „ํŠธ๊ฐ€ ๋Œ์•„๊ฐ€๋Š” ์„œ๋ฒ„์˜ ๋กœ์ปฌ ๋กœ๊ทธ ํŒŒ์ผ์— ์Œ“์ž…๋‹ˆ๋‹ค. giip ์ชฝ์œผ๋กœ๋Š” ์š”์•ฝ๋งŒ ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค โ€” KVSPut(kType=lssn, kKey=<lssn>, kFactor=giipagent) ๋กœ event_type="script_execution" ๋ ˆ์ฝ”๋“œ๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๊ทธ ์•ˆ์— script_type, exit_code, execution_time_seconds, mslsn, mssn ์ด ๋‹ด๊น๋‹ˆ๋‹ค. ์ถœ๋ ฅ ๋ณธ๋ฌธ ์ž์ฒด๋Š” giip ์— ์ €์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ถœ๋ ฅ์„ giip ์—์„œ ๋ณด๋ ค๋ฉด ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ง์ ‘ KVSPut ์œผ๋กœ ์˜ฌ๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค(๋ณด์กด ๊ธฐ๊ฐ„์€ ๊ทธ KVS ์„ค์ •์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค).

์‹คํŒจ ์•Œ๋ฆผ: ์ž๋™ ์•Œ๋ฆผ ๊ธฐ๋Šฅ์€ ์—†์Šต๋‹ˆ๋‹ค. exit_code ๊ฐ€ 0์ด ์•„๋‹Œ script_execution ๋ ˆ์ฝ”๋“œ๋ฅผ ์กฐํšŒํ•ด ๊ฐ์ง€ํ•˜๊ฑฐ๋‚˜, ์Šคํฌ๋ฆฝํŠธ ์•ˆ์—์„œ ์ง์ ‘ ์•Œ๋ฆผ์„ ๋ณด๋‚ด๋„๋ก ๋งŒ๋“œ์„ธ์š”.

์ „์ฒด ์‚ฌ์–‘: giipdb docs/30_Specs/CQE_SPECIFICATION.md.


๋ฒ„์ „: 1.3 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-10-19 ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/cqerepolist.ko.md