로그 스키마 생성

새 로그 스키마를 생성합니다. 로그 스키마는 시스템 전체에 적용되므로 클러스터 관리자 권한이 필요합니다.

HTTP 요청

POST /api/sonar/log-schemas
cURL 예시
curl -H "Authorization: Bearer <API_KEY>" \
     -d code="ping" \
     -d name="핑" \
     -d fields="[{""name"":""_time"", ""type"":""DATE"", ""display_name"":""시각"", ""ordinal"":1}, {""name"":""dst_ip"", ""type"":""IP"", ""display_name"":""목적지IP"", ""ordinal"":2}, {""name"":""rtt"", ""type"":""INT"", ""display_name"":""왕복시간"", ""ordinal"":3}]" \
     -X POST \
     https://HOSTNAME/api/sonar/log-schemas
요청 매개변수
필수타입설명비고
codeO문자열로그 스키마 코드최소 1자, 최대 50자
nameO문자열로그 스키마 이름최소 1자, 최대 50자
name_transX문자열스키마 이름 국제화JSON 객체 문자열
descriptionX문자열로그 스키마 설명최대 255자
fieldsX문자열필드 정의 목록JSON 배열 문자열

name_trans는 JSON 객체 형식의 문자열이며 로케일별 스키마 이름을 포함합니다:

  • ko (문자열, 선택): 한국어 이름
  • en (문자열, 선택): 영어 이름
  • zh (문자열, 선택): 중국어 이름

fields는 JSON 배열 형식의 문자열이며 각 객체는 아래의 속성을 포함합니다:

  • name (문자열, 필수): 필드 이름 (최소 1자, 최대 50자)
  • display_name (문자열, 필수): 화면 표시 이름 (최소 1자, 최대 50자)
  • display_name_trans (객체, 선택): 로케일별 표시 이름
  • type (문자열, 필수): 필드 유형
    • DATE, STRING, IP, PORT, SHORT, INT, LONG, COUNTRY, FLOAT, DOUBLE, BOOL, MD5, SHA1, URL, SHA256, DOMAIN 중 하나
  • ordinal (32비트 정수, 선택): 필드 순서

정상 응답

HTTP 상태 코드 200 응답

{
  "code": "ping"
}

오류 응답

로그 스키마 생성 권한이 없는 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "no-permission"
}
필수 매개변수가 누락된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "null-argument",
  "error_msg": "code should be not null"
}
매개변수 값의 길이가 잘못된 경우

HTTP 상태 코드 400 응답

{
  "error_code": "invalid-argument",
  "error_msg": "'code' must be less than or equal to 50 characters."
}
로그 스키마 코드가 중복된 경우

HTTP 상태 코드 500 응답

{
  "error_code": "illegal-state",
  "error_msg": "duplicated log schema code: ping"
}
필드 검증 오류

HTTP 상태 코드 400 응답

필드 이름 누락:

{
  "error_code": "null-argument",
  "error_msg": "'fields.name' should be not null"
}

필드 표시 이름 누락:

{
  "error_code": "null-argument",
  "error_msg": "'fields.display_name' should be not null"
}

필드 타입 누락:

{
  "error_code": "null-argument",
  "error_msg": "'fields.type' should be string type."
}

필드 타입이 잘못된 경우:

{
  "error_code": "invalid-argument",
  "error_msg": "'fields.type' should be one of DATE, STRING, IP, PORT, SHORT, INT, LONG, COUNTRY, FLOAT, DOUBLE, BOOL, MD5, SHA1, URL, SHA256, DOMAIN"
}

필드 이름 길이가 잘못된 경우:

{
  "error_code": "invalid-argument",
  "error_msg": "'fields.name' must be shorter than or equal to 50 characters."
}