Rumah >pembangunan bahagian belakang >Tutorial Python >Mengautomasikan Muat Turun Log Pencetus Atlas MongoDB Melepasi Had GUI dan CLI

Mengautomasikan Muat Turun Log Pencetus Atlas MongoDB Melepasi Had GUI dan CLI

Susan Sarandon
Susan Sarandonasal
2024-11-02 05:44:02332semak imbas

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

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:

  1. Menggunakan GUI
  2. Menggunakan CLI
  3. Menggunakan API Pentadbir Perkhidmatan Apl

Walau bagaimanapun, pilihan GUI dan CLI mempunyai had mengenai volum log yang boleh dimuat turun, terutamanya had 10,000 log.

Had GUI dan CLI untuk Muat Turun 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.

Penyelesaian: API Pentadbir Perkhidmatan Apl dengan Penomboran

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.

Penyelesaian yang Dicadangkan: Skrip Automatik untuk Muat Turun Log Besar

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.

Ciri-ciri Utama Skrip

  • Pengambilan Log Automatik: Mengambil log daripada MongoDB Atlas App Services dengan sokongan untuk set log yang besar melalui penomboran.
  • Penapisan Julat Tarikh Fleksibel: Membenarkan penapisan tarikh pilihan menggunakan parameter tarikh_mula dan tarikh_akhir.
  • Pengesahan ISO 8601: Sahkan tarikh untuk memastikan ia mengikut format ISO 8601.
  • Pengesahan Selamat: Menyokong pengesahan menggunakan kunci API awam dan peribadi MongoDB Atlas.
  • ID pengguna pilihan untuk log penapisan ID pengguna.
  • Co_id pilihan untuk log penapisan ID korelasi.
  • Ambil log ralat sahaja menggunakan pilihan errors_only.
  • Tapis log mengikut pasangan nilai kunci menggunakan pilihan --filter.

Skrip hanya menggunakan titik akhir GET dan mengagregat log masuk ke dalam fail tanpa mengubah suai sebarang data.

Cara menggunakannya

Keperluan

  • Python 3.6 atau lebih tinggi.
  • kebergantungan perpustakaan requirements.txt.

Pemasangan

Cipta persekitaran maya

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

Pasang kebergantungan

python3 -m venv venv
source venv/bin/activate  # On Windows use `venv\Scripts\activate`

Penggunaan

Argumen Baris Perintah

  • project_id (diperlukan): ID Projek Atlas (rentetan heksadesimal). app_id (diperlukan): ID Apl (rentetan).
  • public_api_key (diperlukan): Kunci API Awam Atlas (rentetan).
  • private_api_key (diperlukan): Kunci API Peribadi Atlas (rentetan dengan sempang).
  • --start_date (pilihan): Tarikh Mula dalam format ISO 8601 (YYYY-MM-DDTHH:MM:SS.MMMZ).
  • --end_date (pilihan): Tarikh Tamat dalam format ISO 8601 (YYYY-MM-DDTHH:MM:SS.MMMZ).
  • --type (pilihan): Senarai jenis log yang disokong dipisahkan koma. Pada masa ini, jenis yang tersedia ialah: TRIGGER_FAILURE, TRIGGER_ERROR_HANDLER, DB_TRIGGER, AUTH_TRIGGER, SCHEDULED_TRIGGER, FUNCTION, SERVICE_FUNCTION, STREAM_FUNCTION, SERVICE_STREAM_FUNCTION, AUTH, API_PUSHL, AUTH, API_PUSHL, ENDPOINT_API, NECTION_START, SYNC_CONNECTION_END, SYNC_SESSION_START, SYNC_SESSION_END, SYNC_CLIENT_WRITE, SYNC_ERROR , SYNC_OTHER, SCHEMA_ADDITIVE_CHANGE, SCHEMA_GENERATION, SKEMA_VALIDATION, LOG_FORWARDER
  • --user_id (pilihan): Kembalikan hanya mesej log yang dikaitkan dengan user_id yang diberikan.
  • --co_id (pilihan): Kembalikan hanya mesej log yang dikaitkan dengan permintaan yang diberikan ID Korelasi.
  • --filter (pilihan): Tapis log mengikut pasangan nilai kunci (cth., --filter event_subscription_name=,function_name=).
  • --errors_only (pilihan): Kembalikan mesej log ralat sahaja.
  • --verbose (pilihan): Dayakan maklumat pengelogan verbose.

Contoh

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.

 Penapisan Log

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)

Pembalakan

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.

Lokasi Fail Log

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.

Contoh Nama Fail Log

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

Faedah

  • Pendapatan Log Automatik: Ambil log dengan mudah daripada MongoDB Atlas App Services tanpa campur tangan manual.
  • Penapisan Julat Tarikh: Tapis log mengikut julat tarikh untuk memfokus pada tempoh tertentu.
  • Sokongan Penomboran: Kendalikan set besar log dengan cekap menggunakan penomboran.
  • Pengesahan: Pastikan input tarikh berada dalam format yang betul untuk mengelakkan ralat.

PENAFIAN

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn