에이전트 설정은 EdgeSettings 하나입니다. YAML(또는 JSON) 파일과 환경 변수로 채웁니다.

우선순위: 환경 변수 > 파일 > 기본값

같은 키가 여러 곳에 있으면 환경 변수가 이깁니다. 토큰 같은 비밀은 /etc/geo-mlops/edge.env 에, 현장 구성(수집기·주소·보존 한도)은 edge.yaml 에 나눠 두라는 뜻입니다. 그러면 토큰을 교체할 때 YAML 을 건드리지 않아도 됩니다.

설정 파일 탐색 순서

--config 를 주지 않으면 이 순서로 찾고, 처음 있는 파일 하나만 읽습니다.

  1. 환경 변수 GEO_EDGE_CONFIG 가 가리키는 파일. 이 변수가 있으면 여기서 끝입니다. 그 파일이 없으면 다른 곳을 찾지 않고 기본값으로 뜹니다.
  2. /etc/geo-mlops/edge.yaml
  3. 현재 디렉터리의 edge.yaml

아무 파일도 없어도 에이전트는 기본값으로 뜹니다. 이때 central 이 비어 있으므로 링크는 계속 offline 이고 데이터는 로컬에만 쌓입니다. geo-mlops-edge config 로 실제 적용된 값을 확인합니다.

환경 변수

접두사 GEO_EDGE_ 뒤에 키 이름을 대문자로 붙이고, **중첩 키는 밑줄 두 개(__)**로 잇습니다.

GEO_EDGE_CENTRAL__BASE_URL=https://mlops.example.com
GEO_EDGE_CENTRAL__TOKEN=<device-token>
GEO_EDGE_DATA_DIR=/var/lib/geo-mlops-edge
GEO_EDGE_API__TOKEN=<your-secret>
GEO_EDGE_RETENTION__MAX_BYTES=100GiB
GEO_EDGE_LOG_LEVEL=DEBUG

목록(collectors, sync.windows, api.cors_origins)은 파일에 적는 것이 낫습니다. 환경 변수로 주려면 JSON 문자열(GEO_EDGE_SYNC__WINDOWS='["22:00-06:00"]')이어야 합니다.

크기 문자열

크기 필드는 바이트 정수 대신 50GiB 같은 문자열을 받습니다. 대소문자는 가리지 않습니다.

단위배수단위배수
B1
KB1000KiB1024
MB1000²MiB1024²
GB1000³GiB1024³
TB1000⁴TiB1024⁴

적용되는 필드: retention.max_bytes, retention.free_disk_min_bytes, sync.chunk_bytes, sync.max_bytes_per_s, api.max_body_bytes, http 수집기의 max_body_bytes.

전체 필드

최상위

기본값설명
central(아래)중앙 서버 접속
device(아래)장비 이름·위치
data_dir/var/lib/geo-mlops-edge큐 DB(edge.db), 파일 스풀(spool/), 모델 캐시(models/)가 모두 여기
disk_path""디스크 사용률을 재고 보존 한도를 지킬 파일시스템. 비우면 data_dir
heartbeat_interval_s30하트비트 주기(초)
commands_poll_s25명령 롱폴 대기 시간(초)
retention(아래)로컬 보존 한도
sync(아래)업로드 조절
link(아래)연결 감시
api(아래)로컬 HTTP API
collectors[]수집기 목록(데이터 수집기 참고)
models(아래)모델 캐시
policy_sourcecentralcentral 이면 중앙이 내려준 정책이 heartbeat_interval_s·commands_poll_s·retention·sync 를 덮어씀. local 이면 이 파일이 우선
log_levelINFODEBUG·INFO·WARNING·ERROR

central

기본값설명
base_url""중앙 API 주소(https://mlops.example.com). 비면 오프라인 전용
token""디바이스 토큰. 환경 변수 GEO_EDGE_CENTRAL__TOKEN 으로만 주세요
timeout_s10.0요청 제한 시간(초)
verify_tlstrueTLS 인증서 검증

base_urltoken 이 둘 다 있어야 중앙과 통신합니다.

device

기본값설명
id""장비 이름. 비면 호스트 이름, 그것도 없으면 edge-<머신ID 앞 8자>. 영문·숫자·.·_·- 외 문자는 - 로 바뀌고 64자에서 잘립니다
location없음등록할 때 중앙에 알리는 위치

retention: 로컬 보존 한도

셋 중 하나라도 먼저 걸리면 정리를 시작합니다. 넘으면 우선순위가 낮은 것부터, 같은 우선순위에서는 오래된 것부터 버립니다.

기본값설명
max_bytes50GiB큐 전체 크기 상한
max_age_days30이보다 오래된 항목은 버림. 0 이면 기간 제한 없음
free_disk_min_bytes5GiB디스크 여유가 이보다 적어지면 버려서 확보. 0 이면 검사 안 함

sync: 업로드 조절

기본값설명
batch_size500한 요청에 보내는 레코드 수(서버 상한 1000)
chunk_bytes32MiB파일 청크 크기 요청값. 실제 크기는 서버가 정해 돌려준 값을 씀
max_bytes_per_s0전송 속도 상한. 0 은 무제한
cpu_pause_percent85시스템 CPU 가 이 값을 넘으면 전송을 멈춤. 0 이면 검사 안 함
windows[]전송 허용 시간대(장비 현지 시각), 예: ["22:00-06:00"]. 비면 항상
concurrency1동시 전송 수
urgent_priority90이 우선순위 이상은 windows 를 무시하고 보냄
기본값설명
probe_interval_s5.0중앙 /api/v1/health 를 찔러 보는 주기
backoff_max_s60.0실패가 이어질 때 늘어나는 간격의 상한
online_after_ok2연속 몇 번 성공해야 online 으로 보나
offline_after_fail3연속 몇 번 실패해야 offline 으로 보나

공장 회선은 자주 끊겼다 붙습니다. 한 번 우연히 성공했다고 바로 수십 GB 를 보내기 시작하지 않도록 이 두 값을 둡니다.

api: 로컬 HTTP API

기본값설명
enabledtrue로컬 API 를 띄울지
host0.0.0.0바인드 주소. 개발 PC 는 127.0.0.1
port8600포트
token""비면 인증 없음. 있으면 X-Edge-Api-Token 헤더로 보내야 함
cors_origins["*"]허용할 브라우저 출처
max_body_bytes2GiB요청 본문 상한. 넘으면 413. 0 이면 검사 안 함

models: 모델 캐시

기본값설명
keep_versions2모델마다 디스크에 남길 버전 수. 새 버전을 받으면 오래된 것부터 지움. 0 은 무제한
auto_activateProduction설정 항목은 있지만 0.2.0 런타임은 이 값을 읽지 않습니다. 자동 활성화 동작은 모델과 추론을 보세요

예시 전체

central:
  base_url: https://mlops.example.com
  timeout_s: 10
  verify_tls: true

device:
  id: edge-line-01
  location: line-1

data_dir: /var/lib/geo-mlops-edge

retention:
  max_bytes: 50GiB
  max_age_days: 30
  free_disk_min_bytes: 5GiB

sync:
  batch_size: 500
  chunk_bytes: 32MiB
  max_bytes_per_s: 0
  cpu_pause_percent: 85
  windows: []
  urgent_priority: 90

link:
  probe_interval_s: 5
  backoff_max_s: 60
  online_after_ok: 2
  offline_after_fail: 3

heartbeat_interval_s: 30
commands_poll_s: 25

api:
  enabled: true
  host: 0.0.0.0
  port: 8600
  token: ""
  max_body_bytes: 2GiB

models:
  keep_versions: 2

policy_source: central
log_level: INFO

collectors: []   # 데이터 수집기 페이지 참고

2026-09-21 기준 플랫폼에 맞춰 작성했습니다.

© Geo-MLOps