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