문서 메뉴

문서 홈Atlas App Services

서비스에 로그 전달

이 페이지의 내용

  • 개요
  • 로그 전달을 구성해야 하는 이유는 무엇인가요?
  • 로그 전달 요금은 어떻게 청구되나요?
  • 로그 전달자 설정
  • 1. 로그 전달자 만들기
  • 2. 전달할 로그 선택
  • 3. 로그 배치 구성
  • 5. 조치 정의
  • 6. 변경 사항 저장 및 배포
  • 일시 중단된 로그 전달자 다시 시작

애플리케이션의 서버 측 로그를 MongoDB collection에 자동으로 저장하거나 외부 서비스로 보내도록 로그 전달자를 구성할 수 있습니다. Atlas App Services는 로그가 생성될 때 개별적으로 전달하거나 로그를 함께 배치하여 오버헤드를 줄일 수 있습니다.

로그 전달자는 다음과 같은 구성 요소로 구성됩니다.

  • App Services가 로그를 전달하는 방법과 위치를 제어하는 조치 입니다.

  • App Services에서 전달할 로그를 제어하는 필터 입니다.

  • App Services에서 로그를 배치할지, 아니면 개별적으로 전달할지 여부를 제어하는 정책 입니다.

다음 중 하나를 수행해야 하는 경우 로그 전달자를 설정하는 것이 좋습니다.

  • App Services의 보존 기간인 10일보다 오랫동안 로그를 저장합니다.

  • 외부 로깅 서비스에 로그 통합

  • Atlas Search, Atlas Online Archive 및 Atlas Charts의 로그에 액세스

개별 로그 또는 배치에서 각 로그 전달 조치 호출은 하나의 App Services 요청으로 청구됩니다.

App Services는 앱의 모든 로그를 전달하거나 대상 collection 또는 서비스에 하위 집합만 보낼 수 있습니다. 로그 유형에 대한 필터를 정의하여 각 로그 전달자에 대해 이 하위 집합을 제어합니다(예: 기능, 동기화 등) 및 상태(예: 성공 또는 오류)의 경우 포워더의 조치를 호출합니다.

중요

App Services는 특정 로그의 유형 상태가 모두 필터에 지정된 경우에만 로그를 전달합니다.

예를 들어 error 상태인 sync 로그를 필터링하는 전달자를 생각해 보겠습니다.

필터 다음 로그를 전달합니다.

{ "type": "sync", "status": "error", ... }

이 필터는 다음 로그를 전달 하지 않습니다 .

{ "type": "sync", "status": "success", ... }
{ "type": "schema", "status": "error", ... }

App Services는 여러 로그인을 단일 배치 요청으로 결합하여 오버헤드를 줄일 수 있습니다. App Services가 로그를 배치로 그룹화하는 방식은 배치 정책에 의해 제어됩니다.

App Services는 다음과 같은 배치 정책을 지원합니다.

  • 배치 없음: App Services에서 해당 요청이 발생할 때 로그를 개별적으로 전달합니다.

  • 배치: 포워더는 문서를 배치로 그룹화합니다. 각 배치에는 최대 100개의 로그 항목이 포함될 수 있습니다. 배치가 가득 차면 App Services는 단일 요청으로 전체 배치를 전달합니다. App Services는 현재 배치의 로그 수에 관계없이 1분에 한 번 이상 로그를 전달합니다.

로그 전달자는 연결된 MongoDB collection에 로그를 자동으로 저장하거나 로그를 외부 서비스로 전송하는 사용자 지정 함수를 호출할 수 있습니다.

로그를 외부 서비스로 전달하려면 로그 객체 배열을 허용하고 API, SDK 또는 라이브러리를 통해 서비스를 호출 하는 함수를 작성하세요 .

참고

배치 정책 및 로그 빈도에 따라 App Services는 최대 100개의 객체 배열을 사용하여 로그 전달 함수를 호출할 수 있습니다.

함수의 서명은 다음 예시와 동일해야 합니다.

/functions/<function name>.js
exports = async function(logs) {
// `logs` is an array of 1-100 log objects
// Use an API or library to send the logs to another service.
await context.http.post({
url: "https://api.example.com/logs",
body: logs,
encodeBodyAsJSON: true
});
}

로그 전달 함수를 작성한 후에는 해당 함수를 이름으로 로그 전달자에 할당할 수 있습니다.

로그 전달자는 네트워크 중단이나 로그를 저장하는 기본 cluster의 변경과 같이 계속할 수 없는 이벤트에 대한 응답으로 일시 중단될 수 있습니다. 일시 중단되면 포워더를 호출할 수 없으며 로그를 전달하지 않습니다.

App Services UI의 Logs > Forwarding 화면에서 일시 중단된 로그 전달자를 다시 시작할 수 있습니다.

참고

로그 전달자가 일시 중단되면 App Services에서 프로젝트 소유자에게 문제를 알리는 이메일을 보냅니다.

← 애플리케이션 로그 보기