giip
SES Proposal
9 min read

๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€(Net3D) API ๋ ˆํผ๋Ÿฐ์Šค

์ด ๊ฐ€์ด๋“œ๋งŒ ์ฝ์œผ๋ฉด GIIP ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€(Net3D) ์‹œ๊ฐํ™”์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค์–ด ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”Œ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€ ํŽ˜์ด์ง€๋กœ ์ด๋™ โ†’

โš ๏ธ ์ด ๋ฌธ์„œ์˜ ์ ์šฉ ๋ฒ”์œ„ โ€” ๋จผ์ € ์ฝ์œผ์„ธ์š”

์ด ๋ฌธ์„œ๋Š” ์„œ๋ฒ„ยท๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€ ์ „์šฉ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์ ํžŒ ๋‘ ํ˜•์‹ (netstat, db_connections)์€ Net3D ํ™”๋ฉด์ด ์ฝ๋Š” ์œ ์ผํ•œ ๋‘ ๊ฐ€์ง€ ํ˜•์‹์ž…๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹Œ ์ž„์˜์˜ ๋ฐ์ดํ„ฐ(์ฃผ๋ฌธ ํ๋ฆ„, ์กฐ์ง๋„, ์„œ๋น„์Šค ์˜์กด ๊ด€๊ณ„ ๋“ฑ)๋ฅผ ์ด 3D ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ๋‹ค๋ฉด โ†’ ๋ถ€๋ก: ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ ๋ฅผ ๋จผ์ € ์ฝ์œผ์„ธ์š”. kFactor ๋งŒ ์ž„์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ” tKVS ์— ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์€ ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ์ €์žฅ์€ RstVal 200 ์œผ๋กœ ์„ฑ๊ณตํ•˜์ง€๋งŒ ํ™”๋ฉด์—๋Š” ์—๋Ÿฌ ์—†์ด ์•„๋ฌด๊ฒƒ๋„ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


์‹œ์ž‘ ์ „ ์ค€๋น„๋ฌผ

ํ•ญ๋ชฉ์„ค๋ช…์–ป๋Š” ๋ฐฉ๋ฒ•
SK (Secret Key)API ์ธ์ฆ์— ์‚ฌ์šฉํ•˜๋Š” ๋น„๋ฐ€ ํ‚คGIIP ๊ด€๋ฆฌ ํ™”๋ฉด์˜ lsvrdetail(์„œ๋ฒ„ ์ƒ์„ธ) ๋˜๋Š” corpgroup(๋ฒ•์ธยท๊ทธ๋ฃน ๊ด€๋ฆฌ) ํŽ˜์ด์ง€์—์„œ ํ™•์ธ
API URLGIIP ์„œ๋ฒ„ ์ฃผ์†Œ์˜ˆ: https://your-api.azurewebsites.net
LSSN์„œ๋ฒ„ ๋“ฑ๋ก ํ›„ ๋ฐœ๊ธ‰๋˜๋Š” ๊ณ ์œ  ์„ธ์…˜ ๋ฒˆํ˜ธStep 1 ์™„๋ฃŒ ํ›„ ์‘๋‹ต์—์„œ ์ทจ๋“

LSSN์ด๋ž€?

LSSN(Long-term Session Serial Number)์€ ์„œ๋ฒ„ 1๋Œ€๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ˆซ์ž ID์ž…๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฅผ ์ฒ˜์Œ ๋“ฑ๋ก(AgentAutoRegister)ํ•˜๋ฉด ์„œ๋ฒ„๋งˆ๋‹ค ๊ณ ์œ ํ•œ LSSN์ด ๋ฐœ๊ธ‰๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋ชจ๋“  KVSPut ๋ฐ์ดํ„ฐ ์ „์†ก ์‹œ kKey ๊ฐ’์œผ๋กœ ์ด LSSN์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํ๋ฆ„ ์š”์•ฝ:

์„œ๋ฒ„ ๋“ฑ๋ก (AgentAutoRegister) โ†’ LSSN ๋ฐœ๊ธ‰ โ†’ LSSN์„ kKey๋กœ ์‚ฌ์šฉํ•˜์—ฌ netstat/db_connections ์ „์†ก

์ธ์ฆ ๋ฐฉ์‹

  • Content-Type: application/x-www-form-urlencoded
  • ์ธ์ฆ ์œ„์น˜: HTTP ํ—ค๋”๊ฐ€ ์•„๋‹Œ ์š”์ฒญ ๋ฐ”๋””์˜ token ํ•„๋“œ์— SK ๊ฐ’์„ ํฌํ•จ
  • ์ž˜๋ชป๋œ ๋ฐฉ์‹: Authorization: Bearer YOUR_SK (์‚ฌ์šฉ ๋ถˆ๊ฐ€)
  • ์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ์‹: ๋ฐ”๋””์— token=YOUR_SK ํฌํ•จ

Step 1: ์„œ๋ฒ„ ๋“ฑ๋ก (AgentAutoRegister) โ€” LSSN ํš๋“

์„œ๋ฒ„๋ฅผ GIIP์— ๋“ฑ๋กํ•˜๊ณ  LSSN์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์ด LSSN์„ ๋ฐ˜๋“œ์‹œ ์ €์žฅํ•˜์„ธ์š”.

  • Endpoint: POST https://YOUR_API_URL/api/giipApi?cmd=AgentAutoRegister
  • Content-Type: application/x-www-form-urlencoded

์š”์ฒญ Body ํ•„๋“œ:

ํ•„๋“œ๊ฐ’
tokenYOUR_SK
textAgentAutoRegister
jsondata์•„๋ž˜ JSON์„ ๋ฌธ์ž์—ด๋กœ ์ง๋ ฌํ™”ํ•œ ๊ฐ’

jsondata ์˜ˆ์‹œ:

{
  "hostname": "WEB-SRV-01",
  "os": "Windows Server 2022",
  "cpu_cores": 8,
  "ipv4_local": "10.0.0.5"
}

curl ์˜ˆ์‹œ:

curl -X POST "https://YOUR_API_URL/api/giipApi?cmd=AgentAutoRegister" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     --data-urlencode "token=YOUR_SK" \
     --data-urlencode "text=AgentAutoRegister" \
     --data-urlencode 'jsondata={"hostname":"WEB-SRV-01","os":"Windows Server 2022","cpu_cores":8,"ipv4_local":"10.0.0.5"}'

์‘๋‹ต ์˜ˆ์‹œ:

{
  "RstVal": 200,
  "RstMsg": "Success",
  "lssn": 123456
}

์ค‘์š”: ์‘๋‹ต์˜ lssn ๊ฐ’(์˜ˆ: 123456)์„ ๋ฐ˜๋“œ์‹œ ์ €์žฅํ•˜์„ธ์š”. Step 2, 3์˜ ๋ชจ๋“  ์š”์ฒญ์—์„œ kKey๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.


Step 2: ์„œ๋ฒ„ ๊ฐ„ ์—ฐ๊ฒฐ ์ „์†ก (netstat KVSPut)

ํ˜„์žฌ ์„œ๋ฒ„์—์„œ ์™ธ๋ถ€ ์„œ๋ฒ„๋กœ ํ–ฅํ•˜๋Š” TCP ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

  • Endpoint: POST https://YOUR_API_URL/api/giipApi (cmd ํŒŒ๋ผ๋ฏธํ„ฐ ์—†์Œ)
  • Content-Type: application/x-www-form-urlencoded

์š”์ฒญ Body ํ•„๋“œ:

ํ•„๋“œ๊ฐ’์„ค๋ช…
tokenYOUR_SK์ธ์ฆ ํ‚ค
textKVSPut kType kKey kFactor๋ฆฌํ„ฐ๋Ÿด ๊ณ ์ • ๋ฌธ์ž์—ด (๊ทธ๋Œ€๋กœ ์ž…๋ ฅ)
jsondata์•„๋ž˜ JSON์„ ๋ฌธ์ž์—ด๋กœ ์ง๋ ฌํ™”ํ•œ ๊ฐ’์‹ค์ œ ๋ฐ์ดํ„ฐ

jsondata ์˜ˆ์‹œ:

{
  "kType": "lssn",
  "kKey": "123456",
  "kFactor": "netstat",
  "kValue": [
    {
      "remote_ip": "10.0.0.10",
      "remote_port": 8080,
      "process_name": "nginx.exe",
      "state": "ESTABLISHED"
    },
    {
      "remote_ip": "10.0.0.20",
      "remote_port": 3306,
      "process_name": "myapp.exe",
      "state": "ESTABLISHED"
    }
  ]
}

curl ์˜ˆ์‹œ:

curl -X POST "https://YOUR_API_URL/api/giipApi" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     --data-urlencode "token=YOUR_SK" \
     --data-urlencode "text=KVSPut kType kKey kFactor" \
     --data-urlencode 'jsondata={"kType":"lssn","kKey":"123456","kFactor":"netstat","kValue":[{"remote_ip":"10.0.0.10","remote_port":8080,"process_name":"nginx.exe","state":"ESTABLISHED"}]}'

์‘๋‹ต ์˜ˆ์‹œ:

{
  "RstVal": 200,
  "RstMsg": "Success"
}

kValue ํ•ญ๋ชฉ๋ณ„ ํ•„๋“œ ์„ค๋ช…:

ํ•„๋“œํƒ€์ž…์„ค๋ช…
remote_ipstring์—ฐ๊ฒฐ ๋Œ€์ƒ ์„œ๋ฒ„ IP
remote_portinteger์—ฐ๊ฒฐ ๋Œ€์ƒ ํฌํŠธ
process_namestring์—ฐ๊ฒฐ์„ ์ƒ์„ฑํ•œ ํ”„๋กœ์„ธ์Šค๋ช…
statestring์—ฐ๊ฒฐ ์ƒํƒœ. ESTABLISHED์ธ ํ•ญ๋ชฉ๋งŒ ํ† ํด๋กœ์ง€์— ์„ (Link)์œผ๋กœ ํ‘œ์‹œ

์ฃผ์˜: state๊ฐ€ ESTABLISHED์ธ ํ•ญ๋ชฉ๋งŒ ํ† ํด๋กœ์ง€ ํ™”๋ฉด์— ์—ฐ๊ฒฐ์„ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.


Step 3: DB ์—ฐ๊ฒฐ ์ •๋ณด ์ „์†ก (db_connections KVSPut)

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์—์„œ DB ์„œ๋ฒ„๋กœ ์ „์†กํ•˜๋Š” ์ฟผ๋ฆฌ ๋ฐ ๋ถ€ํ•˜ ์ •๋ณด๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

  • Endpoint: POST https://YOUR_API_URL/api/giipApi (netstat๊ณผ ๋™์ผ)
  • Content-Type: application/x-www-form-urlencoded

์š”์ฒญ Body ํ•„๋“œ:

ํ•„๋“œ๊ฐ’์„ค๋ช…
tokenYOUR_SK์ธ์ฆ ํ‚ค
textKVSPut kType kKey kFactor๋ฆฌํ„ฐ๋Ÿด ๊ณ ์ • ๋ฌธ์ž์—ด (๊ทธ๋Œ€๋กœ ์ž…๋ ฅ)
jsondata์•„๋ž˜ JSON์„ ๋ฌธ์ž์—ด๋กœ ์ง๋ ฌํ™”ํ•œ ๊ฐ’์‹ค์ œ ๋ฐ์ดํ„ฐ

jsondata ์˜ˆ์‹œ:

{
  "kType": "lssn",
  "kKey": "123456",
  "kFactor": "db_connections",
  "kValue": [
    {
      "client_net_address": "10.0.0.5",
      "program_name": "MyApp.exe",
      "cpu_load": 15,
      "last_sql": "SELECT * FROM users WHERE id = 1",
      "query_hash": "0xAB12CD34"
    },
    {
      "client_net_address": "10.0.0.5",
      "program_name": "MyApp.exe",
      "cpu_load": 42,
      "last_sql": "UPDATE orders SET status = 'shipped' WHERE order_id = 9901",
      "query_hash": "0xCD56EF78"
    }
  ]
}

curl ์˜ˆ์‹œ:

curl -X POST "https://YOUR_API_URL/api/giipApi" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     --data-urlencode "token=YOUR_SK" \
     --data-urlencode "text=KVSPut kType kKey kFactor" \
     --data-urlencode 'jsondata={"kType":"lssn","kKey":"123456","kFactor":"db_connections","kValue":[{"client_net_address":"10.0.0.5","program_name":"MyApp.exe","cpu_load":15,"last_sql":"SELECT * FROM users WHERE id = 1","query_hash":"0xAB12CD34"}]}'

์‘๋‹ต ์˜ˆ์‹œ:

{
  "RstVal": 200,
  "RstMsg": "Success"
}

kValue ํ•ญ๋ชฉ๋ณ„ ํ•„๋“œ ์„ค๋ช…:

ํ•„๋“œํƒ€์ž…์„ค๋ช…
client_net_addressstring์†Œ์Šค ์„œ๋ฒ„ IP. tManagedDatabase.db_host์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•ด์•ผ DB ๋งํฌ ์ƒ์„ฑ
program_namestring์‹คํ–‰ ํ”„๋กœ๊ทธ๋žจ๋ช…. ํ† ํด๋กœ์ง€ Outgoing ๋…ธ๋“œ ๋ผ๋ฒจ๋กœ ํ‘œ์‹œ
cpu_loadinteger์ฟผ๋ฆฌ ๋ถ€ํ•˜(%). ๋งํฌ ์„ ์˜ ๊ตต๊ธฐ ๋ฐ ํŒŒํ‹ฐํด ์†๋„ ๊ฒฐ์ •
last_sqlstringํ˜„์žฌ ์‹คํ–‰ ์ค‘์ธ SQL ๋ฌธ. ์ƒ์„ธ ๋ณด๊ธฐ ๋ชจ๋‹ฌ์— ํ‘œ์‹œ
query_hashstringSQL ๊ตฌ๋ฌธ ํ•ด์‹œ. ๋™์ผ ์ฟผ๋ฆฌ ๊ทธ๋ฃนํ™”์— ์‚ฌ์šฉ

Step 4: DB ๋ชฉ๋ก ์กฐํšŒ (ManagedDatabaseList)

ํ”„๋กœ์ ํŠธ์— ๋“ฑ๋ก๋œ ๊ด€๋ฆฌ ๋Œ€์ƒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชฉ๋ก์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

  • Endpoint: POST https://YOUR_API_URL/api/giipApi
  • Content-Type: application/x-www-form-urlencoded

์š”์ฒญ Body ํ•„๋“œ:

ํ•„๋“œ๊ฐ’
tokenYOUR_SK
textManagedDatabaseList mssql (db_type ์ง€์ • ๊ฐ€๋Šฅ)

curl ์˜ˆ์‹œ:

curl -X POST "https://YOUR_API_URL/api/giipApi" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     --data-urlencode "token=YOUR_SK" \
     --data-urlencode "text=ManagedDatabaseList mssql"

์‘๋‹ต ์˜ˆ์‹œ:

{
  "RstVal": 200,
  "RstMsg": "Success",
  "data": [
    {
      "db_host": "10.0.0.30",
      "db_name": "ProductionDB",
      "db_type": "mssql"
    }
  ]
}

token์— ํฌํ•จ๋œ SK๊ฐ€ ํ”„๋กœ์ ํŠธ ์ •๋ณด๋ฅผ ๋‚ดํฌํ•˜๋ฏ€๋กœ csn์„ ๋ณ„๋„๋กœ ์ „๋‹ฌํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๊ฐ€ ์ž๋™์œผ๋กœ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.


์–ธ์–ด๋ณ„ ์ „์ฒด ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ

PowerShell ยท Bash ยท Python ์ „์ฒด ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ๋Š” ๋ถ„๋Ÿ‰ ๊ด€๊ณ„๋กœ ๋ณ„๋„ ๊ฐ€์ด๋“œ๋กœ ๋ถ„๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“˜ ๋„คํŠธ์›Œํฌ ํ† ํด๋กœ์ง€(Net3D) ์–ธ์–ด๋ณ„ ์˜ˆ์ œ ์Šคํฌ๋ฆฝํŠธ


๋ฐ์ดํ„ฐ ํ™•์ธ ๋ฐฉ๋ฒ•

์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰ ํ›„ ์•„๋ž˜ ๋‹จ๊ณ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

  1. ์„œ๋ฒ„ ๋“ฑ๋ก ํ™•์ธ: ๊ธฐ๋ณธ์ •๋ณด ๊ด€๋ฆฌ > ์„œ๋ฒ„ ์ธ๋ฒคํ† ๋ฆฌ ๋ฉ”๋‰ด์—์„œ ํ•ด๋‹น ํ˜ธ์ŠคํŠธ๋ช…์˜ ์„œ๋ฒ„๊ฐ€ ๋“ฑ๋ก๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. DB ๋งคํ•‘ ํ™•์ธ: client_net_address ๊ฐ’์ด tManagedDatabase.db_host์™€ ์ •ํ™•ํžˆ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ํ† ํด๋กœ์ง€ ๋ทฐ์–ด: /admin/network-topology ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์—ฌ ๋…ธ๋“œ ๊ฐ„ ์—ฐ๊ฒฐ์„ ์ด ํ™œ์„ฑํ™”๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋Š” ์ „์†ก ํ›„ ์•ฝ 1~2๋ถ„ ๋‚ด ์‹ค์‹œ๊ฐ„ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๊ทœ์น™

๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ธฐ ์ „์— ๋ฐ˜๋“œ์‹œ ์•„๋ž˜ ์กฐ๊ฑด์„ ํ™•์ธํ•˜์„ธ์š”.

  1. IP ๋งคํ•‘: tLSvr.ips ํ•„๋“œ๋Š” ๋ฐ˜๋“œ์‹œ [{"CIDR":"10.0.0.5/24"}] ํ˜•ํƒœ์˜ JSON ๋ฐฐ์—ด์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœ ๋ฌธ์ž์—ด์ด๋ฉด ํ† ํด๋กœ์ง€์—์„œ 'External' ๋…ธ๋“œ๋กœ ๋ถ„๋ฆฌ๋ฉ๋‹ˆ๋‹ค.
  2. DB ํ˜ธ์ŠคํŠธ ์ผ์น˜: db_connections์˜ client_net_address ๊ฐ’์ด tManagedDatabase.db_host์™€ ํ…์ŠคํŠธ ๋ ˆ๋ฒจ์—์„œ 100% ์ผ์น˜ํ•ด์•ผ DB ๋งํฌ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž, ๊ณต๋ฐฑ๊นŒ์ง€ ๋™์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  3. JSON Depth: kValue ๋ฐฐ์—ด์„ ํฌํ•จํ•œ jsondata ์ „์ฒด๋ฅผ ์ง๋ ฌํ™”ํ•  ๋•Œ Depth 10 ์ด์ƒ์œผ๋กœ ์ธ์ฝ”๋”ฉํ•ฉ๋‹ˆ๋‹ค. ๊นŠ์ด๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ํ•˜์œ„ ๊ฐ์ฒด๊ฐ€ ์ž˜๋ฆฝ๋‹ˆ๋‹ค.
  4. state ๊ฐ’: netstat kValue์—์„œ state๊ฐ€ ESTABLISHED์ธ ํ•ญ๋ชฉ๋งŒ ํ† ํด๋กœ์ง€ ์—ฐ๊ฒฐ์„ ์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
  5. kFactor๋Š” ๋ฐ”๊ฟ€ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค: ์กฐํšŒ SP(pApiNet3dDatabyAK)๋Š” netstat๊ณผ db_connections ๋‘ ๋ฆฌํ„ฐ๋Ÿด๋งŒ ์ฝ๋„๋ก ํ•˜๋“œ์ฝ”๋”ฉ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž„์˜์˜ kFactor(์˜ˆ: my_graph)๋กœ KVSPut ํ•˜๋ฉด ์‘๋‹ต์€ RstVal 200(์ €์žฅ ์„ฑ๊ณต)์ด์ง€๋งŒ ํ† ํด๋กœ์ง€ ํ™”๋ฉด์—๋Š” ์—๋Ÿฌ ์—†์ด ์•„๋ฌด๊ฒƒ๋„ ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. tKVS ์ž์ฒด๋Š” ๋ฒ”์šฉ ์ €์žฅ์†Œ๋ผ ์–ด๋–ค ๊ฐ’์ด๋“  ๋ฐ›์•„๋“ค์ด๋ฏ€๋กœ, ์ €์žฅ ์„ฑ๊ณต์„ "ํ™”๋ฉด์— ๋‚˜์˜จ๋‹ค"๋Š” ๋œป์œผ๋กœ ์˜คํ•ดํ•˜์ง€ ๋งˆ์„ธ์š”.
  6. kKey๋Š” ์ด๋ฏธ ๋“ฑ๋ก๋œ ์ž์‚ฐ ID์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค: netstat์€ kKey๊ฐ€ ํ˜„์žฌ CSN์— ๋“ฑ๋ก๋œ tLSvr.LSsn์ด์–ด์•ผ ํ•˜๊ณ , db_connections๋Š” tManagedDatabase.mdb_id์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋“ฑ๋ก๋˜์ง€ ์•Š์€ ์ž„์˜์˜ ํ‚ค(์ฃผ๋ฌธ๋ฒˆํ˜ธ, ๊ณ„์ • ID ๋“ฑ)๋ฅผ kKey๋กœ ๋„ฃ์œผ๋ฉด ๊ทธ ํ–‰์€ ์กฐํšŒ ๋Œ€์ƒ์—์„œ ์กฐ์šฉํžˆ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค.

ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

์‘๋‹ต RstVal์ด 200์ด ์•„๋‹Œ ๊ฒฝ์šฐ

RstVal์˜๋ฏธ์กฐ์น˜
401์ธ์ฆ ์‹คํŒจtoken ๊ฐ’(SK)์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ. HTTP ํ—ค๋”๊ฐ€ ์•„๋‹Œ ๋ฐ”๋””์— ์žˆ๋Š”์ง€ ํ™•์ธ
400์ž˜๋ชป๋œ ์š”์ฒญtext ํ•„๋“œ ๊ฐ’์ด ์ •ํ™•ํ•œ์ง€ ํ™•์ธ (KVSPut kType kKey kFactor ๋ฆฌํ„ฐ๋Ÿด)
500์„œ๋ฒ„ ์˜ค๋ฅ˜jsondata JSON ํ˜•์‹์ด ์œ ํšจํ•œ์ง€ ํ™•์ธ. ์ค‘์ฒฉ ๋”ฐ์˜ดํ‘œ ์ด์Šค์ผ€์ดํ”„ ํ™•์ธ

ํ† ํด๋กœ์ง€์— ์—ฐ๊ฒฐ์„ ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

  1. netstat kValue์˜ state ๊ฐ’์ด ์ •ํ™•ํžˆ ESTABLISHED (๋Œ€๋ฌธ์ž)์ธ์ง€ ํ™•์ธ
  2. db_connections์˜ client_net_address๊ฐ€ GIIP์— ๋“ฑ๋ก๋œ DB ํ˜ธ์ŠคํŠธ IP์™€ ์™„์ „ํžˆ ๋™์ผํ•œ์ง€ ํ™•์ธ
  3. tLSvr.ips๊ฐ€ ๋‹จ์ˆœ ๋ฌธ์ž์—ด์ด ์•„๋‹Œ [{"CIDR":"..."}] JSON ๋ฐฐ์—ด์ธ์ง€ ํ™•์ธ

LSSN์„ ๋ถ„์‹คํ•œ ๊ฒฝ์šฐ

AgentAutoRegister๋ฅผ ๋™์ผํ•œ hostname์œผ๋กœ ์žฌํ˜ธ์ถœํ•˜๋ฉด ๊ธฐ์กด LSSN์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋งˆ๋‹ค hostname์ด ๊ณ ์œ ํ•˜๋ฉด LSSN๋„ ๊ณ ์œ ํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

curl์—์„œ jsondata๊ฐ€ ์ž˜๋ฆฌ๋Š” ๊ฒฝ์šฐ

-d ๋Œ€์‹  --data-urlencode๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŠน์ˆ˜๋ฌธ์ž๊ฐ€ ํฌํ•จ๋œ JSON ๋ฌธ์ž์—ด๋„ ์•ˆ์ „ํ•˜๊ฒŒ ์ „์†ก๋ฉ๋‹ˆ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋Š” giipApiSk3 ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š” (์•„๋ž˜ Sk3 ํ•ญ๋ชฉ ์ฐธ์กฐ).

Python์—์„œ SK ๋ฏธ์ •์˜(NameError) ์˜ค๋ฅ˜

์ด ๊ฐ€์ด๋“œ์˜ Python ์˜ˆ์ œ๋Š” AT ๋ณ€์ˆ˜ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. SK ๋ณ€์ˆ˜๋ฅผ ๋”ฐ๋กœ ์ •์˜ํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”.


๊ณ ์„ฑ๋Šฅ ๋กœ๊น… ์—”๋“œํฌ์ธํŠธ (Sk3)

์ˆ˜์ฒœ ๊ฑด ์ด์ƒ์˜ ์—ฐ๊ฒฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•˜๊ฑฐ๋‚˜ ๋””๋ฒ„๊น…์ด ํ•„์š”ํ•  ๋•Œ giipApiSk3 ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

  • Endpoint: https://giipfaw.azurewebsites.net/api/giipApiSk3
  • ์žฅ์ : ๋Œ€์šฉ๋Ÿ‰ jsondata ์ „์†ก ์‹œ ๋ฐ์ดํ„ฐ ์ ˆ๋‹จ ๋ฐฉ์ง€, ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์—์ด์ „ํŠธ ํ™˜๊ฒฝ ์ •๋ณด์™€ StackTrace ์ž๋™ ๊ธฐ๋ก
  • ์‚ฌ์šฉ๋ฒ•: KVSPut ๋ช…๋ น ์‚ฌ์šฉ ์‹œ ๋™์ผํ•œ ๋ฐฉ์‹์œผ๋กœ ์—”๋“œํฌ์ธํŠธ๋งŒ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ถ€๋ก: ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„๋‹Œ ๋ฐ์ดํ„ฐ๋ฅผ ์ด ๋ ˆ์ด์•„์›ƒ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ธฐ (๋ฒ”์šฉ ์žฌ์‚ฌ์šฉ)

๊ฒฐ๋ก  ๋จผ์ €

์ž„์˜์˜ {nodes, links} ๋ฅผ ๊ทธ๋Œ€๋กœ ๋ฐ›๋Š” ์ „์šฉ "๋ฒ”์šฉ ๊ทธ๋ž˜ํ”„" ์ž…๋ ฅ ๊ฒฝ๋กœ๋Š” ํ˜„์žฌ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. (giip #2526 ์—์„œ ์„ค๊ณ„ ์ถ”์ง„ ์ค‘)

  • โŒ ๋˜์ง€ ์•Š๋Š” ๊ฒƒ: kFactor ๋ฅผ my_graph ๊ฐ™์€ ์ž„์˜ ๊ฐ’์œผ๋กœ ๋ฐ”๊ฟ” {nodes, links} ๋ฅผ tKVS ์— ๋„ฃ๊ธฐ. โ†’ KVSPut ์€ RstVal 200 ์„ ๋Œ๋ ค์ค๋‹ˆ๋‹ค(tKVS ๋Š” ์–ด๋–ค kFactor ๋“  ์ €์žฅํ•˜๋Š” ๋ฒ”์šฉ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค). ํ•˜์ง€๋งŒ Net3D ์กฐํšŒ SP ๊ฐ€ ๊ทธ ํ–‰์„ ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ™”๋ฉด์€ ์—๋Ÿฌ ์—†์ด ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • โœ… ์ง€๊ธˆ ๋˜๋Š” ๊ฒƒ: ๋‚ด ๋ฐ์ดํ„ฐ์˜ ๊ฐœ์ฒด๋ฅผ "์„œ๋ฒ„"๋กœ, ๊ด€๊ณ„๋ฅผ "์—ฐ๊ฒฐ"๋กœ ๋งคํ•‘ํ•˜๋ฉด ์ž„์˜์˜ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋ฅผ ์˜ค๋Š˜ ๋ฐ”๋กœ ๊ทธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๊ฐ€ ๊ทธ ์ ˆ์ฐจ์ž…๋‹ˆ๋‹ค.

๋งคํ•‘ ๊ทœ์น™ โ€” ๋‚ด ๋„๋ฉ”์ธ์„ Net3D ๋ชจ๋ธ์— ๋งž์ถ”๊ธฐ

๋‚ด ๋ฐ์ดํ„ฐNet3D ์—์„œ์˜ ํ‘œํ˜„๋„ฃ๋Š” ๋ฐฉ๋ฒ•
๊ฐœ์ฒด(๋…ธ๋“œ) 1๊ฐœ์„œ๋ฒ„ ๋…ธ๋“œ(๊ตฌ) 1๊ฐœAgentAutoRegister ๋กœ ๋“ฑ๋ก โ†’ LSSN ํš๋“
๊ฐœ์ฒด์˜ ํ‘œ์‹œ ์ด๋ฆ„๋…ธ๋“œ ๋ผ๋ฒจhostname ๊ฐ’์ด ๊ทธ๋Œ€๋กœ ๋…ธ๋“œ ์ด๋ฆ„์ด ๋ฉ๋‹ˆ๋‹ค
๊ฐœ์ฒด์˜ ๊ณ ์œ  ์‹๋ณ„์žํ•ฉ์„ฑ IPipv4_local ์— ๊ฒน์น˜์ง€ ์•Š๋Š” IP ๋ถ€์—ฌ(์˜ˆ: 10.99.0.1)
๊ด€๊ณ„(๊ฐ„์„ ) 1๊ฐœ์—ฐ๊ฒฐ์„ (Link)netstat KVSPut ์˜ remote_ip ์— ์ƒ๋Œ€ ๊ฐœ์ฒด์˜ ํ•ฉ์„ฑ IP
๊ด€๊ณ„์˜ ๋ผ๋ฒจ๋งํฌ์˜ ํ”„๋กœ์„ธ์Šค๋ช…process_name ๊ฐ’

๐Ÿ’ก ์ƒ๋Œ€ ๊ฐœ์ฒด๋ฅผ ๋ฐ˜๋“œ์‹œ ๋“ฑ๋กํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. remote_ip ๊ฐ€ ๋“ฑ๋ก๋œ ์–ด๋А ์„œ๋ฒ„์˜ IP ์™€๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด Net3D ๊ฐ€ ๊ทธ IP ์ด๋ฆ„์˜ External ๋…ธ๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด๋ฆ„์ด IP ๋ฌธ์ž์—ด ๊ทธ๋Œ€๋กœ์ด๋ฏ€๋กœ, ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  ์‹ถ์€ ๊ฐœ์ฒด๋Š” AgentAutoRegister ๋กœ ๋“ฑ๋กํ•˜์„ธ์š”.

์ž…๋ ฅ ์Šคํ‚ค๋งˆ

โ‘  ๊ฐœ์ฒด ๋“ฑ๋ก โ€” AgentAutoRegister

ํ•„๋“œํƒ€์ž…ํ•„์ˆ˜์ œ์•ฝ์˜ˆ์‹œ
hostnamestringโœ…CSN ๋‚ด ๊ณ ์œ . ์ด ๊ฐ’์ด ๋…ธ๋“œ ๋ผ๋ฒจ์ด ๋ฉ๋‹ˆ๋‹ค"์ฃผ๋ฌธ์ ‘์ˆ˜"
ipv4_localstringโœ…์œ ํšจํ•œ IPv4. ๊ฐœ์ฒด๋งˆ๋‹ค ๊ณ ์œ ํ•ด์•ผ ๊ฐ„์„ ์ด ์ •ํ™•ํžˆ ์ด์–ด์ง‘๋‹ˆ๋‹ค"10.99.0.1"
osstringโ€”์ž์œ  ๋ฌธ์ž์—ด. ๋…ธ๋“œ ์ƒ์„ธ์— ํ‘œ์‹œ"OrderFlow"
cpu_coresintegerโ€”ํ‘œ์‹œ์šฉ1

โ‘ก ๊ด€๊ณ„ ์ „์†ก โ€” KVSPut kType kKey kFactor

ํ•„๋“œํƒ€์ž…ํ•„์ˆ˜์ œ์•ฝ์˜ˆ์‹œ
kTypestringโœ…"lssn" ๊ณ ์ •"lssn"
kKeystringโœ…์ถœ๋ฐœ ๊ฐœ์ฒด์˜ LSSN. ๋“ฑ๋ก๋œ LSsn ์ด ์•„๋‹ˆ๋ฉด ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค"123456"
kFactorstringโœ…"netstat" ๊ณ ์ •. ๋‹ค๋ฅธ ๊ฐ’์€ ํ™”๋ฉด์— ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค"netstat"
kValuearrayโœ…๊ฐ„์„  ๋ฐฐ์—ด์•„๋ž˜ ์ฐธ์กฐ
kValue[].remote_ipstringโœ…๋„์ฐฉ ๊ฐœ์ฒด์˜ ํ•ฉ์„ฑ IP. 127.*/0.0.0.0/::1 ์€ ์ œ์™ธ๋ฉ๋‹ˆ๋‹ค"10.99.0.2"
kValue[].statestringโœ…"ESTABLISHED" ์—ฌ์•ผ ๊ฐ„์„ ์ด ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค("ESTAB" ๋„ ํ—ˆ์šฉ)"ESTABLISHED"
kValue[].process_namestringโ€”๊ฐ„์„  ๋ผ๋ฒจ๋กœ ํ‘œ์‹œ"๊ฒฐ์ œ์š”์ฒญ"
kValue[].remote_portintegerโ€”๋…ธ๋“œ ๋ฒ„๋ธ”์— ํ‘œ์‹œ443

๋ณต๋ถ™ํ•˜๋ฉด ๊ทธ๋Œ€๋กœ ๋„๋Š” ์™„๊ฒฐ ์˜ˆ์‹œ โ€” ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ํ๋ฆ„ 3๋‹จ๊ณ„

SK, API_URL ๋‘ ์ค„๋งŒ ๋ฐ”๊พธ๋ฉด ๊ทธ๋Œ€๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

#!/bin/bash
set -e
SK="YOUR_SK"
API_URL="https://YOUR_API_URL"

# --- โ‘  ๊ฐœ์ฒด 3๊ฐœ๋ฅผ "์„œ๋ฒ„"๋กœ ๋“ฑ๋กํ•˜๊ณ  LSSN ํš๋“ ---
register() {
  curl -s -X POST "$API_URL/api/giipApi?cmd=AgentAutoRegister" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "token=$SK" \
    --data-urlencode "text=AgentAutoRegister" \
    --data-urlencode "jsondata={\"hostname\":\"$1\",\"os\":\"OrderFlow\",\"cpu_cores\":1,\"ipv4_local\":\"$2\"}"
}

LSSN_A=$(register "ORDERFLOW-์ฃผ๋ฌธ์ ‘์ˆ˜" "10.99.0.1" | grep -oE '"lssn":[0-9]+' | cut -d: -f2)
LSSN_B=$(register "ORDERFLOW-๊ฒฐ์ œ์Šน์ธ" "10.99.0.2" | grep -oE '"lssn":[0-9]+' | cut -d: -f2)
LSSN_C=$(register "ORDERFLOW-๋ฐฐ์†ก์ง€์‹œ" "10.99.0.3" | grep -oE '"lssn":[0-9]+' | cut -d: -f2)
echo "LSSN: A=$LSSN_A B=$LSSN_B C=$LSSN_C"

# --- โ‘ก ๊ด€๊ณ„(๊ฐ„์„ ) ์ „์†ก: ์ฃผ๋ฌธ์ ‘์ˆ˜ โ†’ ๊ฒฐ์ œ์Šน์ธ โ†’ ๋ฐฐ์†ก์ง€์‹œ ---
link() {
  curl -s -X POST "$API_URL/api/giipApi" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    --data-urlencode "token=$SK" \
    --data-urlencode "text=KVSPut kType kKey kFactor" \
    --data-urlencode "jsondata={\"kType\":\"lssn\",\"kKey\":\"$1\",\"kFactor\":\"netstat\",\"kValue\":[{\"remote_ip\":\"$2\",\"remote_port\":443,\"process_name\":\"$3\",\"state\":\"ESTABLISHED\"}]}"
  echo
}

link "$LSSN_A" "10.99.0.2" "๊ฒฐ์ œ์š”์ฒญ"
link "$LSSN_B" "10.99.0.3" "๋ฐฐ์†ก์š”์ฒญ"

์‹คํ–‰ ํ›„ /ko/network-topology ๋ฅผ ์—ด๋ฉด ์ฃผ๋ฌธ์ ‘์ˆ˜ โ†’ ๊ฒฐ์ œ์Šน์ธ โ†’ ๋ฐฐ์†ก์ง€์‹œ 3๊ฐœ ๋…ธ๋“œ๊ฐ€ ๊ฐ„์„ ์œผ๋กœ ์ด์–ด์ ธ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค(๋ฐ˜์˜๊นŒ์ง€ 1~2๋ถ„).

์ž๊ธฐ๊ฒ€์ฆ ๋ฐฉ๋ฒ•

  1. ์ €์žฅ๋๋Š”์ง€ โ€” ๊ฐ KVSPut ์‘๋‹ต์ด {"RstVal":200} ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  2. ์กฐํšŒ๋˜๋Š”์ง€ โ€” ํ™”๋ฉด์„ ์—ด๊ธฐ ์ „์— API ๋กœ ์ง์ ‘ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    curl -s -X POST "$API_URL/api/giipApi" \
      -H "Content-Type: application/x-www-form-urlencoded" \
      --data-urlencode "token=$SK" \
      --data-urlencode "text=Net3dData csn" \
      --data-urlencode "jsondata={\"csn\":YOUR_CSN,\"targetTime\":null}"
    ์‘๋‹ต์˜ servers ์•ˆ์— ๋ฐฉ๊ธˆ ๋“ฑ๋กํ•œ hostname ์ด, netstat_data ์•ˆ์— ํ•ฉ์„ฑ IP ๊ฐ€ ๋ณด์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ณด์ด์ง€ ์•Š์œผ๋ฉด ํ™”๋ฉด์—๋„ ๋‚˜์˜ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค โ€” ์•„๋ž˜ ์‹คํŒจ ์‚ฌ๋ก€๋ฅผ ํ™•์ธํ•˜์„ธ์š”.
  3. ํ™”๋ฉด์—์„œ โ€” /ko/network-topology ์šฐ์ธก ํ•˜๋‹จ์˜ ๋…ธ๋“œ ์ˆ˜ / ๋งํฌ ์ˆ˜ ๊ฐ€ ๊ธฐ๋Œ€ํ•œ ๋งŒํผ ๋Š˜์—ˆ๋Š”์ง€ ๋ด…๋‹ˆ๋‹ค.

์‹คํŒจ ์‚ฌ๋ก€์™€ ๊ทธ๋•Œ์˜ ์ฆ์ƒ

ํ•œ ์ผ์ฆ์ƒ์›์ธํ•ด๊ฒฐ
kFactor ๋ฅผ my_graph ๋“ฑ ์ž„์˜ ๊ฐ’์œผ๋กœ ์ง€์ •RstVal 200 ์ธ๋ฐ ํ™”๋ฉด์— ์•„๋ฌด ๋ณ€ํ™” ์—†์Œ์กฐํšŒ SP ๊ฐ€ netstat/db_connections ๋งŒ ์ฝ์ŒkFactor ๋ฅผ netstat ์œผ๋กœ
kKey ์— ์ž„์˜ ID(์ฃผ๋ฌธ๋ฒˆํ˜ธ ๋“ฑ) ์‚ฌ์šฉ์ €์žฅ ์„ฑ๊ณต, ํ™”๋ฉด ๋ณ€ํ™” ์—†์ŒkKey ๊ฐ€ ๋“ฑ๋ก๋œ LSsn ์ด์–ด์•ผ ํ•จ๋จผ์ € AgentAutoRegister ๋กœ LSSN ํš๋“
{"nodes":[...],"links":[...]} ๋ฅผ ๊ทธ๋Œ€๋กœ kValue ์—ํ™”๋ฉด ๋ณ€ํ™” ์—†์ŒNet3D ๋Š” nodes/links ๋ฅผ ์ž…๋ ฅ ํ˜•์‹์œผ๋กœ ๋ฐ›์ง€ ์•Š์Œ์œ„ ๋งคํ•‘ ๊ทœ์น™์„ ๋”ฐ๋ฅผ ๊ฒƒ
state ๋ฅผ TIME_WAIT ๋“ฑ์œผ๋กœ๋…ธ๋“œ๋Š” ๋œจ๋Š”๋ฐ ๊ฐ„์„ ์ด ์—†์ŒESTABLISHED/ESTAB ๋งŒ ๊ฐ„์„ ์ด ๋จ"ESTABLISHED" ์‚ฌ์šฉ
๊ฐœ์ฒด๋งˆ๋‹ค ๊ฐ™์€ ipv4_local ์‚ฌ์šฉ๋…ธ๋“œ๊ฐ€ ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์งIP ๊ฐ€ ๋…ธ๋“œ ์‹๋ณ„์— ์“ฐ์ž„๊ฐœ์ฒด๋งˆ๋‹ค ๊ณ ์œ  IP ๋ถ€์—ฌ
remote_ip ๋ฅผ 127.0.0.1 ๋กœ๊ฐ„์„ ์ด ์—†์Œ๋ฃจํ”„๋ฐฑ/0.0.0.0/::1 ์€ ๋ช…์‹œ์ ์œผ๋กœ ์ œ์™ธ๋จ์‹ค์ œ ํ•ฉ์„ฑ IP ์‚ฌ์šฉ
๊ฐ„์„ ์ด ์•„์ฃผ ๋งŽ์€ ํฐ ๊ทธ๋ž˜ํ”„์ผ๋ถ€๋งŒ ํ‘œ์‹œ๋˜๊ฑฐ๋‚˜ ์ „๋ถ€ ๋นˆ ํ™”๋ฉด์‘๋‹ต์ด FOR JSON 2033์ž ๋‹จ์œ„๋กœ ๋ถ„ํ• ๋จ์‘๋‹ต์„ ์ง์ ‘ ํŒŒ์‹ฑํ•œ๋‹ค๋ฉด JSON_... ์ปฌ๋Ÿผ ์กฐ๊ฐ์„ ๋ชจ๋‘ ์ด์–ด๋ถ™์ธ ๋’ค ํŒŒ์‹ฑํ•  ๊ฒƒ

์ด ์šฐํšŒ ๋ฐฉ๋ฒ•์˜ ํ•œ๊ณ„ (์•Œ๊ณ  ์“ฐ์„ธ์š”)

  • ๋ชจ๋“  ๊ฐœ์ฒด๊ฐ€ ์„œ๋ฒ„ ๋…ธ๋“œ(๊ตฌ) ๋กœ ๊ทธ๋ ค์ง‘๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ข…๋ฅ˜๋ณ„๋กœ ๋ชจ์–‘์„ ๋‹ค๋ฅด๊ฒŒ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋…ธ๋“œ๋ฅผ ํด๋ฆญํ•˜๋ฉด ์„œ๋ฒ„ ์ƒ์„ธ ๋ชจ๋‹ฌ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค(๋‚ด ๋„๋ฉ”์ธ ์ •๋ณด ํ™”๋ฉด์ด ์•„๋‹™๋‹ˆ๋‹ค).
  • ๋“ฑ๋กํ•œ ๊ฐœ์ฒด๋Š” ์„œ๋ฒ„ ์ธ๋ฒคํ† ๋ฆฌ ๋ชฉ๋ก์—๋„ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์„œ๋ฒ„์™€ ์„ž์ด๋ฏ€๋กœ hostname ์— ์ ‘๋‘์–ด(์˜ˆ: ORDERFLOW-)๋ฅผ ๋ถ™์—ฌ ๊ตฌ๋ถ„ํ•˜๋Š” ๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
  • ๊ฐ„์„ ์˜ ์ƒ‰ยท์ž…์ž ์†๋„๋Š” CPU ๋ถ€ํ•˜ ๊ธฐ์ค€์ด๋ผ ํ•ญ์ƒ ๊ธฐ๋ณธ ์ƒํƒœ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.

์ด ํ•œ๊ณ„ ์—†์ด ์ž„์˜์˜ {nodes, links} ๋ฅผ ์ง์ ‘ ๋„ฃ๋Š” ๋ฒ”์šฉ ์ง„์ž…์ ์€ giip #2526 ์—์„œ ์„ค๊ณ„๋ฅผ ์ง„ํ–‰ ์ค‘์ž…๋‹ˆ๋‹ค.


๊ด€๋ จ ๋ฌธ์„œ


๋ฒ„์ „: 1.5 ์ตœ์ข… ์—…๋ฐ์ดํŠธ: 2026-09-14 ์†Œ์Šค ํŒŒ์ผ: giipv3/public/help/api-network-topology.ko.md