Halo semuanya!
Pada artikel ini saya ingin berbicara tentang bagaimana saya memilih pengarsip untuk mengompresi log dari sistem kantor depan kami.
Divisi tempat saya bekerja terlibat dalam pengembangan dan pemeliharaan sistem front office Bank yang terpadu. Saya bertanggung jawab atas pemeliharaan, pemantauan, dan pengembangannya.
Sistem kami adalah aplikasi yang sangat banyak melayani lebih dari 5.000 pengguna unik setiap hari. Hari ini adalah "monolit" dengan semua kelebihan dan kekurangannya. Tetapi sekarang proses transfer fungsionalitas ke layanan microser sedang aktif.
Setiap hari, sistem kami menghasilkan lebih dari 130 GB log mentah, dan terlepas dari kenyataan bahwa kami menggunakan tumpukan ENG (Elasticsearch Nxlog Graylog), file log berisi lebih banyak informasi (misalnya, kesalahan pelacakan tumpukan), dan karenanya memerlukan pengarsipan dan penyimpanan.
Karena lokasi penyimpanan terbatas, muncul pertanyaan: "Dan pengarsip mana yang paling baik mengatasi tugas ini."
Untuk mengatasi masalah ini, saya menulis skrip PowerShell yang melakukan analisis untuk saya.
Tugas skrip adalah memanggil rar, 7z, dan pengarsip zip dengan parameter kompresi yang berbeda, untuk menghitung kecepatan pembentukan arsip, serta ruang disk yang digunakan.
Pekerjaan persiapan:
Kami menganalisis lebih detail
$table|Sort-Object -Property "Size %","Result %"|Format-Table -AutoSize
$table|Sort-Object -Property "Result %","Size %","Time %"|Format-Table -AutoSize
Hasilnya:
Yang paling ekonomis dalam hal ruang disk adalah 7z dengan rasio kompresi -mx = 8 dan -mx = 9

Waktu pembuatan arsip tercepat adalah 7z dengan rasio kompresi -mx = 1

Kecepatan dan ruang terisi yang paling optimal adalah 7z dengan rasio kompresi -mx = 3

Kami memilih 7z dengan rasio kompresi -mx = 8, karena ukuran arsip -mx 9, tetapi bekerja sedikit lebih cepat.
Hebat, pengarsipan dan rasio kompresi dipilih, sekarang mari kita arsipkan log!
Kita perlu memecahkan masalah-masalah berikut:
- Hindari beban server yang tinggi selama operasi.
- Memproses semua folder dengan subfolder Log.
- Hapus arsip yang lebih dari 30 hari (agar tidak kehabisan ruang disk).
- Buat arsip berdasarkan hari tergantung pada waktu file dimodifikasi.
Di sini saya tidak akan melukis setiap baris skrip (dijelaskan dalam komentar), tetapi fokus hanya pada fungsi Set-MMTCore, yang memungkinkan kita menghitung jumlah utas untuk 7z agar tidak memuat prosesor pada server kami:
Function Set-MMTCore {
Tanpa menggunakan fungsi Set-MMTCore
Dapat dilihat bahwa CPU bersandar pada 100%. Ini berarti bahwa kita pasti akan menyebabkan masalah di server, serta menerima peringatan dari sistem pemantauan.

Saat menggunakan fungsi Set-MMTCore
Dapat dilihat bahwa CPU adalah 30-35%. Ini berarti menggunakan fungsi Set-MMTCore memungkinkan Anda untuk mengarsipkan file tanpa mempengaruhi operasi server.

Hasil skrip cadangan:
Folder sebelum pengarsipan:

Folder setelah pengarsipan:

File yang dibuat selama proses pengarsipan:

File dalam arsip:

