GUI 및 CLI 제한을 넘어 MongoDB Atlas 트리거 로그 다운로드 자동화

Susan Sarandon
풀어 주다: 2024-11-02 05:44:02
원래의
317명이 탐색했습니다.

Automating MongoDB Atlas Trigger Log Downloads Beyond the GUI and CLI Limitations

최근 MongoDB Atlas Triggers에서 로컬로 광범위한 로그를 다운로드해야 하는 시나리오를 접했습니다. 현재 Atlas에서 로그를 다운로드하는 방법에는 세 가지가 있습니다.

  1. GUI 사용
  2. CLI 사용
  3. App Services Admin API 사용

그러나 GUI 및 CLI 옵션에는 다운로드할 수 있는 로그 양, 특히 최대 10,000개의 로그에 대한 제한이 있습니다.

로그 다운로드를 위한 GUI 및 CLI의 제한 사항

GUI 사용

GUI를 사용하면 사용자는 날짜, 유형, 사용자 ID 또는 요청 ID별로 로그를 필터링할 수 있지만 다운로드 시 로그 제한은 10,000개로 설정됩니다.

CLI 사용

CLI를 사용하면 다음과 같은 명령을 실행할 수 있습니다.

appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
로그인 후 복사
로그인 후 복사
로그인 후 복사

하지만 이 역시 로그 다운로드 제한이 10,000개로 동일합니다.

솔루션: 페이지 매김 기능이 있는 App Services Admin API

이러한 다운로드 제한을 극복하기 위해 App Services Admin API는 페이지 매김을 통해 로그에 액세스하는 방법을 제공합니다. 페이지 매김을 구현하면 사용자는 기본 제한인 10K를 초과하는 로그를 가져올 수 있습니다.

API와 함께 페이지 매김을 사용하는 방법에 대한 자세한 지침은 MongoDB 문서: 페이지 매김 로그 가져오기에서 확인할 수 있습니다.

제안된 솔루션: 대용량 로그 다운로드를 위한 자동화된 스크립트

이를 간소화하기 위해 페이지 매김을 사용하여 자동으로 로그를 가져오는 스크립트를 개발했습니다. 이 스크립트는 Atlas App Logs Aggregator의 공개 저장소에서 사용할 수 있습니다.

스크립트의 주요 기능

  • 자동 로그 가져오기: 페이지 매김을 통해 대규모 로그 세트를 지원하는 MongoDB Atlas App Services에서 로그를 가져옵니다.
  • 유연한 날짜 범위 필터링: start_date 및 end_date 매개변수를 사용하여 선택적 날짜 필터링을 허용합니다.
  • ISO 8601 검증: 날짜가 ISO 8601 형식을 따르는지 검증하세요.
  • 보안 인증: MongoDB Atlas 공개 및 비공개 API 키를 사용하여 인증을 지원합니다.
  • 사용자 ID 필터링 로그를 위한 선택적 user_id입니다.
  • 상관 ID 필터링 로그에 대한 선택적 co_id입니다.
  • errors_only 옵션을 사용하여 오류 로그만 가져옵니다.
  • --filter 옵션을 사용하여 키-값 쌍으로 로그를 필터링합니다.

스크립트는 GET 엔드포인트만 사용하며 데이터를 수정하지 않고 로그를 파일에 집계합니다.

사용방법

요구사항

  • Python 3.6 이상.
  • 요구 사항.txt 라이브러리 종속성.

설치

가상 환경 만들기

appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
로그인 후 복사
로그인 후 복사
로그인 후 복사

종속성 설치

python3 -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`
로그인 후 복사

용법

명령줄 인수

  • project_id (필수): Atlas 프로젝트 ID(16진수 문자열). app_id(필수): 앱 ID(문자열).
  • public_api_key(필수): Atlas 공개 API 키(문자열).
  • private_api_key(필수): Atlas 개인 API 키(하이픈이 포함된 문자열).
  • --start_date(선택 사항): ISO 8601 형식의 시작 날짜(YYYY-MM-DDTHH:MM:SS.MMMZ).
  • --end_date(선택 사항): ISO 8601 형식의 종료 날짜(YYYY-MM-DDTHH:MM:SS.MMMZ).
  • --type(선택 사항): 지원되는 로그 유형의 쉼표로 구분된 목록입니다. 현재 사용 가능한 유형은 TRIGGER_FAILURE, TRIGGER_ERROR_HANDLER, DB_TRIGGER, AUTH_TRIGGER, SCHEDULED_TRIGGER, FUNCTION, SERVICE_FUNCTION, STREAM_FUNCTION, SERVICE_STREAM_FUNCTION, AUTH, WEBHOOK, ENDPOINT, PUSH, API, API_KEY, GRAPHQL, TION_START, SYNC_CONNECTION_END, SYNC_SESSION_START, SYNC_SESSION_END, SYNC_CLIENT_WRITE, SYNC_ERROR , SYNC_OTHER, SCHEMA_ADDITIVE_CHANGE, SCHEMA_GENERATION, SCHEMA_VALIDATION, LOG_FORWARDER
  • --user_id (선택 사항): 해당 user_id와 관련된 로그 메시지만 반환합니다.
  • --co_id (선택 사항): 지정된 요청 상관 ID와 연관된 로그 메시지만 반환합니다.
  • --filter(선택 사항): 키-값 쌍으로 로그를 필터링합니다(예: --filter event_subscription_name=,function_name=).
  • --errors_only (선택 사항): 오류 로그 메시지만 반환합니다.
  • --verbose (선택 사항): 자세한 로깅 정보를 활성화합니다.

pip install -r requirements.txt
로그인 후 복사

선택적 매개변수 사용

python main.py <project_id> <app_id> <public_api_key> <private_api_key> --start_date 2024-10-05T14:30:00.000Z --end_date 2024-10-06T14:30:00.000Z --type TRIGGER_FAILURE,SCHEMA_GENERATION
로그인 후 복사

start_date 및 end_date가 제공되지 않으면 스크립트는 기본적으로 start_date를 현재 시간으로부터 지난 24시간으로 설정합니다.

 로그 필터링

--filter 옵션을 사용하면 키-값 쌍으로 로그를 필터링할 수 있습니다. 이 옵션은 공백으로 구분된 여러 키-값 쌍을 허용합니다. 각 키-값 쌍은 키=값 형식이어야 합니다.

키-값 쌍은 엔드포인트에서 반환된 값이어야 합니다. 이렇게 하면 이를 사용하여 필터링하고 일치하는 항목만 유지합니다. 예를 들어 "type": "SCHEDULED_TRIGGER"의 경우 응답 키-값은 다음과 유사합니다.

python main.py <project_id> <app_id> <public_api_key> <private_api_key> --start_date 2024-10-05T14:30:00.000Z --type TRIGGER_FAILURE,SCHEMA_GENERATION --user_id 671d2e2010733ecbaa2bab8f --filter event_subscription_name=getUnpausedClustersMetrics
로그인 후 복사

--filter 옵션에서 이 중 하나를 사용할 수 있습니다(예: --filter event_subscription_name=getUnpausedClustersMetrics)

벌채 반출

이 스크립트는 콘솔과 로그 파일 모두에 대한 로깅을 지원합니다. 기본적으로 로그 파일은 로그 폴더에 저장됩니다. 로그 파일 이름에는 각 실행의 고유성을 보장하기 위한 타임스탬프가 포함됩니다.

--verbose: 이 플래그를 사용하면 로그 수준이 DEBUG로 설정되어 자세한 로깅 정보를 제공합니다. 이 플래그가 없으면 로그 수준은 INFO로 설정됩니다.

로그 파일 위치

로그 파일은 로그 폴더에 저장됩니다. 각 로그 파일의 이름에는 타임스탬프가 지정되어 서로 다른 실행의 로그가 서로 덮어쓰지 않도록 합니다.

로그 파일 이름 예

appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
로그인 후 복사
로그인 후 복사
로그인 후 복사

이익

  • 자동 로그 검색: 수동 개입 없이 MongoDB Atlas App Services에서 로그를 쉽게 가져옵니다.
  • 기간 필터링: 특정 기간에 초점을 맞추기 위해 날짜 범위별로 로그를 필터링합니다.
  • 페이지 매김 지원: 페이지 매김을 사용하여 대규모 로그 세트를 효율적으로 처리합니다.
  • 검증: 오류를 방지하려면 날짜 입력이 올바른 형식인지 확인하세요.

부인 성명

참고: 이 저장소는 설치, 사용 또는 성능을 포함하되 이에 국한되지 않고 어떠한 종류의 보증도 없이 "있는 그대로" 사용하도록 출시되었습니다. 우리는 비침해, 상품성 및/또는 특정 목적에의 적합성에 대한 보증을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 보증을 부인합니다. 당사는 해당 기술이 귀하의 요구 사항을 충족시키거나 해당 기술의 작동이 중단되지 않거나 오류가 없거나 오류가 수정될 것이라고 보증하지 않습니다.

이러한 스크립트와 도구를 사용하는 데 따른 위험은 사용자 본인이 감수해야 합니다. 유사한 환경에서 철저한 테스트를 거쳤다는 보장은 없으며, 사용으로 인해 발생하는 손상이나 데이터 손실에 대해 당사는 책임을 지지 않습니다.

테스트가 아닌 환경에서 사용하기 전에 실행하는 모든 스크립트를 철저하게 검토하고 테스트할 책임은 귀하에게 있습니다.

위 내용은 GUI 및 CLI 제한을 넘어 MongoDB Atlas 트리거 로그 다운로드 자동화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿