Baru-baru ini saya menghadapi senario di mana saya perlu memuat turun log yang banyak daripada MongoDB Atlas Triggers secara tempatan. Pada masa ini, terdapat tiga cara untuk memuat turun log daripada Atlas:
Walau bagaimanapun, pilihan GUI dan CLI mempunyai had mengenai volum log yang boleh dimuat turun, terutamanya had 10,000 log.
Menggunakan GUI
Dengan GUI, pengguna boleh menapis log mengikut tarikh, jenis, ID pengguna atau ID permintaan, tetapi had ditetapkan kepada 10,000 log semasa memuat turun.
Menggunakan CLI
Dengan CLI, kita boleh menjalankan arahan seperti:
appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
Walau bagaimanapun, ini juga mempunyai had muat turun yang sama iaitu 10,000 log.
Untuk mengatasi had muat turun ini, API Pentadbir Perkhidmatan Aplikasi menyediakan cara untuk mengakses log dengan penomboran. Dengan melaksanakan penomboran, pengguna boleh mengambil log melebihi had 10K lalai.
Arahan terperinci tentang menggunakan penomboran dengan API boleh didapati dalam dokumentasi MongoDB: Dapatkan Log Penomboran.
Untuk menyelaraskan ini, saya membangunkan skrip yang mengambil log secara automatik menggunakan penomboran. Skrip ini tersedia dalam repositori awam di sini: Atlas App Logs Aggregator.
Skrip hanya menggunakan titik akhir GET dan mengagregat log masuk ke dalam fail tanpa mengubah suai sebarang data.
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
Dengan parameter pilihan
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
Jika tarikh_mula dan tarikh_akhir tidak disediakan, skrip akan lalai tarikh_mula hingga 24 jam terakhir dari masa semasa.
Pilihan --filter membolehkan anda menapis log mengikut pasangan nilai kunci. Pilihan ini menerima berbilang pasangan nilai kunci yang dipisahkan oleh ruang. Setiap pasangan kunci-nilai hendaklah dalam format key=value.
Pasangan nilai kunci mestilah nilai yang dikembalikan oleh titik akhir. Dengan cara ini ia akan menggunakannya untuk menapis dan hanya menyimpan yang sepadan. Contohnya, untuk "jenis": "SCHEDULED_TRIGGER", nilai kunci respons akan serupa dengan:
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
Kami boleh menggunakan mana-mana ini dalam pilihan --filter (cth., --filter event_subscription_name=getUnpausedClustersMetrics)
Skrip menyokong pengelogan ke kedua-dua konsol dan fail log. Secara lalai, fail log disimpan dalam folder log. Nama fail log termasuk cap masa untuk memastikan keunikan bagi setiap larian.
--verbose: Apabila bendera ini digunakan, tahap log ditetapkan kepada DEBUG, memberikan maklumat pengelogan terperinci. Tanpa bendera ini, tahap log ditetapkan kepada INFO.
Fail log disimpan dalam folder log. Setiap fail log dinamakan dengan cap masa untuk memastikan log daripada larian yang berbeza tidak menimpa satu sama lain.
appservices logs list --project 5e208aa2d5ec1375ecd5*** --app triggers_realmapp-**** --type=trigger --start="2024-10-15T00:00:00.000+0000" -o log.logs
Sila ambil perhatian: Repo ini dikeluarkan untuk kegunaan "SEBAGAIMANA ADANYA" tanpa sebarang jenis jaminan, termasuk, tetapi tidak terhad kepada pemasangan, penggunaan atau prestasinya. Kami menafikan mana-mana dan semua waranti, sama ada nyata atau tersirat, termasuk tetapi tidak terhad kepada sebarang waranti tanpa pelanggaran, kebolehdagangan dan/atau kesesuaian untuk tujuan tertentu. Kami tidak menjamin bahawa teknologi itu akan memenuhi keperluan anda, bahawa operasinya tidak akan terganggu atau bebas ralat, atau bahawa sebarang ralat akan dibetulkan.
Sebarang penggunaan skrip dan alatan ini adalah atas risiko anda sendiri. Tiada jaminan bahawa mereka telah melalui ujian menyeluruh dalam persekitaran yang setanding dan kami tidak bertanggungjawab atas sebarang kerosakan atau kehilangan data yang ditanggung dengan penggunaannya.
Anda bertanggungjawab untuk menyemak dan menguji mana-mana skrip yang anda jalankan dengan teliti sebelum digunakan dalam mana-mana persekitaran bukan ujian.
Atas ialah kandungan terperinci Mengautomasikan Muat Turun Log Pencetus Atlas MongoDB Melepasi Had GUI dan CLI. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!