로그 스키마 생성
새 로그 스키마를 생성합니다. 로그 스키마는 시스템 전체에 적용되므로 클러스터 관리자 권한이 필요합니다.
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
요청 매개변수
| 키 | 필수 | 타입 | 설명 | 비고 |
|---|---|---|---|---|
| code | O | 문자열 | 로그 스키마 코드 | 최소 1자, 최대 50자 |
| name | O | 문자열 | 로그 스키마 이름 | 최소 1자, 최대 50자 |
| name_trans | X | 문자열 | 스키마 이름 국제화 | JSON 객체 문자열 |
| description | X | 문자열 | 로그 스키마 설명 | 최대 255자 |
| fields | X | 문자열 | 필드 정의 목록 | 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."
}