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

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

같은 키가 여러 곳에 있으면 환경 변수 우선. 토큰 같은 비밀은 /etc/geo-mlops/edge.env 에, 현장 구성(수집기·주소·보존 한도)은 edge.yaml 에 분리해 저장. 이렇게 나누면 토큰 교체 시 YAML 수정 불필요.

policy_source: central(기본값)이면 중앙 정책이 파일보다 우선. 중앙에서 정책을 한 번이라도 저장한 장비(리비전 1 이상)는 시작 뒤 첫 하트비트에서 중앙 정책을 수신해 heartbeat_interval_s·commands_poll_s·retention·sync 전체 교체. 화면에서 수정하지 않은 항목도 서버의 기본 정책 값으로 변경. 파일 값을 유지하려면 policy_source: local 로 설정(명령·정책·보존).

설정 파일 탐색 순서

--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_url 과 token 이 둘 다 있어야 중앙과 통신.

device

키기본값설명
id""장비 이름. 비면 호스트 이름, 그것도 없으면 edge-<머신ID 앞 8자>. 영문·숫자·.·_·- 외 문자는 - 로 치환되고 64자에서 잘림.
location없음등록 시 중앙에 보고하는 위치. 값이 있으면 등록 시마다 중앙의 위치를 이 값으로 변경. 비우면 중앙 값을 변경하지 않음.

retention: 로컬 보존 한도

세 조건 중 하나라도 해당하면 정리. max_age_days 를 넘긴 항목은 우선순위와 무관하게 삭제. max_bytes·free_disk_min_bytes 를 넘으면 우선순위가 낮은 것부터, 같은 우선순위에서는 오래된 것부터 삭제. 현재 전송 중인 항목은 삭제하지 않음. 정리는 에이전트 시작 시와, 수집기나 로컬 API(/records·/blobs·push)로 새 항목이 추가될 때 실행.

키기본값설명
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_ok2online 으로 판단하는 연속 성공 횟수
offline_after_fail3offline 으로 판단하는 연속 실패 횟수

현장 회선은 연결 단절과 복구가 잦음. 이 두 값은 우연한 한 번의 성공으로 수십 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설정 항목은 있지만 런타임은 이 값을 읽지 않음. 자동 활성화 동작은 모델과 추론 참고.

예시 전체

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-10-02 기준 플랫폼으로 작성

© MLOps Central Platform