최근 MongoDB Atlas Triggers에서 로컬로 광범위한 로그를 다운로드해야 하는 시나리오를 접했습니다. 현재 Atlas에서 로그를 다운로드하는 방법에는 세 가지가 있습니다.
그러나 GUI 및 CLI 옵션에는 다운로드할 수 있는 로그 양, 특히 최대 10,000개의 로그에 대한 제한이 있습니다.
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는 페이지 매김을 통해 로그에 액세스하는 방법을 제공합니다. 페이지 매김을 구현하면 사용자는 기본 제한인 10K를 초과하는 로그를 가져올 수 있습니다.
API와 함께 페이지 매김을 사용하는 방법에 대한 자세한 지침은 MongoDB 문서: 페이지 매김 로그 가져오기에서 확인할 수 있습니다.
이를 간소화하기 위해 페이지 매김을 사용하여 자동으로 로그를 가져오는 스크립트를 개발했습니다. 이 스크립트는 Atlas App Logs Aggregator의 공개 저장소에서 사용할 수 있습니다.
스크립트는 GET 엔드포인트만 사용하며 데이터를 수정하지 않고 로그를 파일에 집계합니다.
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`
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
참고: 이 저장소는 설치, 사용 또는 성능을 포함하되 이에 국한되지 않고 어떠한 종류의 보증도 없이 "있는 그대로" 사용하도록 출시되었습니다. 우리는 비침해, 상품성 및/또는 특정 목적에의 적합성에 대한 보증을 포함하되 이에 국한되지 않고 명시적이든 묵시적이든 모든 보증을 부인합니다. 당사는 해당 기술이 귀하의 요구 사항을 충족시키거나 해당 기술의 작동이 중단되지 않거나 오류가 없거나 오류가 수정될 것이라고 보증하지 않습니다.
이러한 스크립트와 도구를 사용하는 데 따른 위험은 사용자 본인이 감수해야 합니다. 유사한 환경에서 철저한 테스트를 거쳤다는 보장은 없으며, 사용으로 인해 발생하는 손상이나 데이터 손실에 대해 당사는 책임을 지지 않습니다.
테스트가 아닌 환경에서 사용하기 전에 실행하는 모든 스크립트를 철저하게 검토하고 테스트할 책임은 귀하에게 있습니다.
위 내용은 GUI 및 CLI 제한을 넘어 MongoDB Atlas 트리거 로그 다운로드 자동화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!