기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
HLC 엔드포인트를 사용하여 로그 전송(HLC 로그)
HLC Logs 엔드포인트(/services/collector/event)는 HTTP Log Collector(HLC) 형식을 기반으로 합니다.
보유자 토큰 인증을 사용하는 경우 계속하기 보유자 토큰 인증 설정 전에의 설정 단계를 완료합니다.
입력 모드
각 이벤트는 필수 "event" 필드가 있는 JSON 객체입니다. 선택적 메타데이터 필드: "time", "host", "source", "sourcetype", "index".
단일 이벤트:
{"event":"Hello world!","time":1486683865.0}
이벤트의 JSON 배열:
[ {"event":"msg1","time":1486683865.0}, {"event":"msg2","time":1486683866.0} ]
연결된/배치된 이벤트(어레이 래퍼 없음):
{"event":"msg1","time":1486683865.0}{"event":"msg2","time":1486683866.0}
이벤트 필드(필수)
"event" 필드는 필수입니다. 값은 모든 JSON 유형일 수 있습니다.
{"event":"a string message"} {"event":{"message":"structured data","severity":"INFO"}} {"event":42} {"event":true}
"event" 필드가 없는 객체는 자동으로 건너뜁니다.
{"message":"this is skipped — no event field"}
시간 필드(선택 사항)
"time" 필드는 에포크 초(밀리초 아님) 단위이며, 10진수는 1초 미만의 정밀도에 대한 선택적 10진수입니다.
| 형식 | 예제 | 다음으로 해석됨 |
|---|---|---|
| Float | "time":1486683865.500 |
1486683865500ms |
| Integer | "time":1486683865 |
1486683865000ms |
| 문자열(부동 소수점) | "time":"1486683865.500" |
1486683865500ms |
| 문자열(정수) | "time":"1486683865" |
1486683865000ms |
| 누락됨 | (시간 필드 없음) | 서버 현재 시간 |
| 잘못됨 | "time":"invalid" |
서버 현재 시간 |
Content-Type
만 application/json 허용됩니다.
허용되는 JSON 값 유형
| 최상위 유형 | 동작 |
|---|---|
가 있는 객체 "event" |
수락됨 |
가 없는 객체 "event" |
건너뜀 |
| 객체 배열 | 개별적으로 처리되는 각 요소 |
| 연결된 객체 | 개별적으로 처리되는 각 객체 |
| 프리미티브(문자열, 숫자, 부울, null) | 건너뜀 |
엔드포인트 형식
HLC 엔드포인트 URL은 다음 형식을 따릅니다.
https://logs.<region>.amazonaws.com/services/collector/event?logGroup=<name>&logStream=<name>[&entityName=<name>&entityEnvironment=<environment>]
필수 파라미터:
<region>– AWS 리전(예: ,us-east-1eu-west-1)logGroup- URL로 인코딩된 로그 그룹 이름logStream- URL로 인코딩된 로그 스트림 이름
선택적 파라미터:
필요에 따라 다음 쿼리 파라미터를 포함하여 로그 이벤트를 Service엔터티와 연결할 수 있습니다. HLC 엔드포인트를 통해 전송된 로그는 사용자 지정 원격 측정이므로 엔터티와 자동으로 연결되지 않습니다. CloudWatch Logs는 이러한 파라미터를 제공하여가 로 KeyAttributes.Type 설정된 개체를 생성하고 이를 로그 이벤트와 Service 연결합니다. 이를 통해 CloudWatch의 관련 기능 탐색은 이러한 로그를 동일한 서비스의 다른 원격 측정(지표, 추적 및 로그)과 상호 연관시킬 수 있으므로 다양한 신호 유형에서 애플리케이션의 문제를 더 쉽게 해결하고 모니터링할 수 있습니다. 개체 및 관련 원격 측정에 대한 자세한 내용은 사용자 지정 원격 측정에 관련 정보 추가를 참조하세요.
entityName- 로그 이벤트와 연결할 서비스 엔터티의 이름입니다. 이 값은 엔터티KeyAttributes.Name(예:my-application또는api.myservice.com)로 저장됩니다.entityEnvironment- 서비스가 호스팅되는 환경 또는 서비스가 속한 환경입니다. 이 값은 개체KeyAttributes.Environment(예: ,productionec2:default또는eks:my-cluster/default)로 저장됩니다.
요청 형식
다음 헤더 및 본문과 함께 HTTP POST를 사용하여 로그를 전송합니다.
헤더:
Authorization: Bearer <your-bearer-token>Content-Type: application/json
본문 형식:
요청 본문은 이벤트 배열과 함께 JSON 형식이어야 합니다.
{ "event": [ { "time": 1730141374.001, "event": "Application started successfully", "host": "web-server-1", "source": "application.log", "severity": "info" }, { "time": 1730141374.457, "event": "User login successful", "host": "web-server-1", "source": "auth.log", "user": "john.doe" } ] }
필드 설명:
time- Unix epoch 타임스탬프, 1초 미만의 정밀도에 대한 선택적 10진수(선택 사항)event- 로그 메시지 또는 이벤트 데이터(필수)host- 소스 호스트 이름 또는 식별자(선택 사항)source- 로그 소스 식별자(선택 사항)
필요에 따라 추가 사용자 지정 필드를 포함할 수 있습니다.
요청 예제
curl -X POST "https://logs.<region>.amazonaws.com/services/collector/event?logGroup=MyLogGroup&logStream=MyStream" \ -H "Authorization: Bearer ACWL<token>" \ -H "Content-Type: application/json" \ -d '{"event":{"message":"User logged in","user_id":"u-123"},"time":1486683865.0,"host":"web-01","source":"auth-service"}'
모범 사례
이벤트 일괄 처리
성능 및 효율성 향상을 위해:
가능한 경우 단일 요청으로 여러 이벤트 배치
권장 배치 크기: 요청당 이벤트 10~100개
최대 요청 크기: 1MB
오류 처리
애플리케이션에서 적절한 오류 처리를 구현합니다. 일반적인 HTTP 상태 코드:
200 OK- 로그가 성공적으로 수집됨400 Bad Request- 잘못된 요청 형식 또는 파라미터401 Unauthorized- 유효하지 않거나 만료된 보유자 토큰403 Forbidden- 권한 부족404 Not Found- 로그 그룹 또는 스트림이 존재하지 않음429 Too Many Requests- 속도 제한 초과500 Internal Server Error- 서비스 오류(지수 백오프로 재시도)
제한 사항
최대 이벤트 크기: 이벤트당 256KB
최대 요청 크기: 1MB
요청당 최대 이벤트 수: 10,000
로그 그룹 이름은 CloudWatch Logs 명명 규칙을 따라야 합니다.
보유자 토큰 인증을 사용하는 경우 로그 그룹에서 보유자 토큰 인증을 활성화해야 합니다.