서비스에 로그 전달
이 페이지의 내용
개요
애플리케이션의 서버 측 로그를 MongoDB collection에 자동으로 저장하거나 외부 서비스로 보내도록 로그 전달자를 구성할 수 있습니다. Atlas App Services는 로그가 생성될 때 개별적으로 전달하거나 로그를 함께 배치하여 오버헤드를 줄일 수 있습니다.
로그 전달자는 다음과 같은 구성 요소로 구성됩니다.
App Services가 로그를 전달하는 방법과 위치를 제어하는 조치 입니다.
App Services에서 전달할 로그를 제어하는 필터 입니다.
App Services에서 로그를 배치할지, 아니면 개별적으로 전달할지 여부를 제어하는 정책 입니다.
로그 전달을 구성해야 하는 이유는 무엇인가요?
다음 중 하나를 수행해야 하는 경우 로그 전달자를 설정하는 것이 좋습니다.
App Services의 보존 기간인 10일보다 오랫동안 로그를 저장합니다.
외부 로깅 서비스에 로그 통합
Atlas Search, Atlas Online Archive 및 Atlas Charts의 로그에 액세스
로그 전달 요금은 어떻게 청구되나요?
개별 로그 또는 배치에서 각 로그 전달 조치 호출은 하나의 App Services 요청으로 청구됩니다.
로그 전달자 설정
1. 로그 전달자 만들기
새 로그 전달자를 만들려면 Logs 페이지로 이동하여 Forwarding 탭 을 선택합니다. 그런 다음 Create a Log Forwarder 버튼을 클릭합니다.
다음 화면에서 로그 전달자의 고유 이름을 지정합니다.
새 로그 전달자를 만들려면 앱 의 log_forwarders
디렉토리 에 새 구성 파일 을 추가합니다. 파일 이름은 구성의 name
필드 에 있는 값과 일치해야 합니다.
{ "name": "<name>" }
2. 전달할 로그 선택
App Services는 앱의 모든 로그를 전달하거나 대상 collection 또는 서비스에 하위 집합만 보낼 수 있습니다. 로그 유형에 대한 필터를 정의하여 각 로그 전달자에 대해 이 하위 집합을 제어합니다(예: 기능, 동기화 등) 및 상태(예: 성공 또는 오류)의 경우 포워더의 조치를 호출합니다.
Log Type 드롭다운에서 전달할 로그 유형을 하나 이상 선택합니다.
Log Status 드롭다운에서 전달할 상태를 하나 이상 선택합니다.
포워더가 일치시켜 전달할 하나 이상의 유형과 하나 이상의 상태를 지정합니다.
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ] }
App Services 는 다음 로그 유형 전달을 지원합니다.
auth
endpoint
function
graphql
push
schema
service
sync
trigger
trigger_error_handler
App Services 는 다음 로그 상태 전달을 지원합니다.
error
success
중요
App Services는 특정 로그의 유형 과 상태가 모두 필터에 지정된 경우에만 로그를 전달합니다.
예를 들어 상태가 error
인 sync
로그를 필터링하는 전달자를 생각해 보겠습니다.
필터 는 다음 로그를 전달합니다.
{ "type": "sync", "status": "error", ... }
이 필터는 다음 로그를 전달 하지 않습니다 .
{ "type": "sync", "status": "success", ... } { "type": "schema", "status": "error", ... }
3. 로그 배치 구성
App Services는 여러 로그인을 단일 배치 요청으로 결합하여 오버헤드를 줄일 수 있습니다. App Services가 로그를 배치로 그룹화하는 방식은 배치 정책에 의해 제어됩니다.
App Services는 다음과 같은 배치 정책을 지원합니다.
배치 없음: App Services에서 해당 요청이 발생할 때 로그를 개별적으로 전달합니다.
배치: 포워더는 문서를 배치로 그룹화합니다. 각 배치에는 최대 100개의 로그 항목이 포함될 수 있습니다. 배치가 가득 차면 App Services는 단일 요청으로 전체 배치를 전달합니다. App Services는 현재 배치의 로그 수에 관계없이 1분에 한 번 이상 로그를 전달합니다.
배치를 구성하려면 No batch 또는 Batching 정책을 선택합니다.
일괄 처리를 구성하려면 policy
필드 에 정책 유형 single
또는 batch
을 지정합니다.
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" } }
5. 조치 정의
로그 전달자는 연결된 MongoDB collection에 로그를 자동으로 저장하거나 로그를 외부 서비스로 전송하는 사용자 지정 함수를 호출할 수 있습니다.
MongoDB collection에 로그 저장
컬렉션에 로그를 저장하려면 To Collection 작업을 선택하고 전달된 로그를 보관해야 하는 연결된 클러스터, 데이터베이스 및 컬렉션의 이름을 입력합니다.
컬렉션 에 로그를 저장 하려면 전달된 로그를 보관해야 하는 연결된 클러스터, 데이터베이스 및 컬렉션 의 이름을 포함하는 collection
유형의 action
를 지정합니다.
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" }, "action": { "type": "collection", "data_source": "<data source name>", "database": "<database name>", "collection": "<collection name>" } }
사용자 지정 함수로 로그 전달
로그를 외부 서비스로 전달하려면 로그 객체 배열을 허용하고 API, SDK 또는 라이브러리를 통해 서비스를 호출 하는 함수를 작성하세요 .
참고
배치 정책 및 로그 빈도에 따라 App Services는 최대 100개의 객체 배열을 사용하여 로그 전달 함수를 호출할 수 있습니다.
함수의 서명은 다음 예시와 동일해야 합니다.
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 }); }
로그 전달 함수를 작성한 후에는 해당 함수를 이름으로 로그 전달자에 할당할 수 있습니다.
로그 전달자에 함수를 할당하려면 To Function 조치를 선택한 다음 드롭다운 입력에서 함수를 선택합니다.
로그 전달자에 함수를 할당하려면 로그 전달 함수의 이름이 포함된 function
유형의 action
를 지정합니다.
{ "name": "<name>", "log_types": [ "<type>", ... ], "log_statuses": [ "<status>", ... ], "policy": { "type": "<single|batch>" }, "action": { "type": "function", "name": "<function name>" } }
6. 변경 사항 저장 및 배포
로그 전달자를 구성한 후 Save 을(를) 클릭합니다. 배포 초안을 활성화한 경우 변경 사항을 배포해야 합니다.
로그 전달자를 구성한 후 구성 파일 을 저장한 다음 업데이트된 앱 구성을 푸시합니다.
appservices push
일시 중단된 로그 전달자 다시 시작
로그 전달자는 네트워크 중단이나 로그를 저장하는 기본 cluster의 변경과 같이 계속할 수 없는 이벤트에 대한 응답으로 일시 중단될 수 있습니다. 일시 중단되면 포워더를 호출할 수 없으며 로그를 전달하지 않습니다.
Realm UI의 Logs > Forwarding 화면에서 일시 중단된 로그 전달자를 다시 시작할 수 있습니다.
참고
로그 전달자가 일시 중단되면 App Services에서 프로젝트 소유자에게 문제를 알리는 이메일을 보냅니다.