Mengotomatiskan Pengumpulan Penggunaan Lisensi, Pencarian Grid untuk model ML, Memperkirakan Penggunaan di Masa Mendatang, Memberi Peringatan Sebelum Mencapai Ambang Batas

Misalkan Anda perlu membeli tisu toilet. Apa yang akan kamu lakukan? Anda tidak membelinya setiap hari, mungkin sebulan sekali, atau bahkan tiga bulan sekali. Anda tentu tidak ingin membeli terlalu sedikit, Anda harus segera membelinya lagi. Anda tentu tidak ingin membeli terlalu banyak dan menumpuk banyak toilet. Jadi apa yang akan Anda lakukan?

Pertama, Anda akan memeriksa jumlah tisu toilet yang tersedia, lalu memperkirakan berapa banyak yang akan Anda gunakan dalam sebulan dan membeli tisu toilet dalam jumlah yang sesuai. Apakah ini terdengar seperti proses yang familiar? Ya itu. Banyak perusahaan mengulangi proses pembelian ini. Salah satu barang umum yang perlu dibeli secara berkala oleh perusahaan telekomunikasi adalah Lisensi.

Latar Belakang: Pembelian Lisensi

Dalam jaringan seluler, terdapat berbagai elemen jaringan yang menjalankan fungsi jaringan tertentu. Setiap elemen jaringan memiliki banyak item yang dikontrol lisensi untuk membatasi fungsi dan kapasitas sumber daya tertentu. Misalnya, vendor telekomunikasi akan mengontrol jumlah pengguna yang terhubung dengan LTE, yaitu jumlah ponsel yang dapat terhubung ke jaringan seluler. Jika operator ingin melayani lebih banyak pengguna secara bersamaan, mereka harus membeli lisensi yang sesuai dari vendornya. Sama seperti tisu toilet, jika sudah habis, Anda perlu membelinya lagi. Namun, dalam operator seluler, prosedur pembelian standar mungkin memakan waktu lama dan memerlukan biaya beberapa bulan. Oleh karena itu, sebagai departemen teknik, kami perlu memprediksi dengan tepat penggunaan lisensi di masa mendatang beberapa bulan kemudian pada saat kami membeli lisensi dari vendor.

Alur Kerja Sebelumnya

Dulu, pertama-tama, kami mengumpulkan catatan penggunaan lisensi secara manual. Vendor peralatan biasanya menyediakan GUI, di mana kita dapat mengetikkan perintah berdasarkan sintaksis Man-Machine Language (MML) mereka untuk menampilkan penggunaan lisensi saat ini di layar. Kami kemudian menyalin informasi tersebut dan menyimpannya dalam bentuk Excel. Itu adalah pekerjaan yang menjengkelkan dan terkadang staf yang bertanggung jawab mungkin lupa menampilkannya atau file Excel rusak. Kami juga tidak dapat melakukan hal ini sesering mungkin karena memerlukan terlalu banyak tenaga kerja.

Beruntungnya, vendor peralatan juga mengizinkan kita melakukan telnet ke mesin yang disebut Network Management System (NMS). Kita dapat mengetikkan perintah khusus untuk berinteraksi dengan berbagai elemen jaringan di bawahnya.

Alur Kerja Otomatis Baru

Untuk mengotomatiskan proses ini, kami menggunakan paket perpustakaan python telnetlib untuk mengumpulkan penggunaan lisensi. Modul telnetlib menyediakan kelas Telnet yang mengimplementasikan protokol Telnet. Setelah kita mengatur koneksi menggunakan tn = Telnet(NMS_IP, NMS_Port), kita dapat mengirimkan perintah menggunakan fungsi tn.write(). Saya mendefinisikan fungsi untuk mengirim perintah, lihat di bawah.

Alur untuk mendapatkan data lisensi yang Anda perlukan adalah, pertama, Anda harus login ke NMS, lalu Anda perlu mendaftarkan elemen jaringan yang ingin Anda periksa, seperti ini:

Saat kami mengetikkan perintah yang diperlukan untuk menampilkan penggunaan lisensi, sistem mengembalikan tabel teks dan kami membagi setiap baris dengan dua spasi. Kami kemudian menambahkan setiap baris sebagai tupel ke dalam daftar yang disebut data.

Dan kemudian kami mendekode hasil keluaran dalam DataFrame yang berguna oleh pandas. Kami merancang tabel database kami sebagai traversal karena item lisensi dapat ditambahkan atau dihapus jika elemen jaringan telah ditingkatkan. Memodifikasi skema tabel setiap kali tidak mungkin dilakukan: pertama, ada beberapa peningkatan pada elemen jaringan yang berbeda setiap minggunya, kedua, kita tidak dapat mengetahui peningkatan sebelumnya item lisensi mana yang ditambahkan atau dihapus. Kami menyelesaikan kolom sebagai:

result_time: waktu pengumpulan;
object_name: nama elemen jaringan;
resource_name: nama item lisensi;
total_resource: kapasitas lisensi, yaitu jumlah maksimum yang diizinkan dari lisensi tersebut;
used_resource: jumlah lisensi yang ditempati item pada saat itu;
penggunaan: cukup sumber daya yang digunakan dibagi dengan sumber daya_total.

Struktur ini mampu menambahkan atau menghapus item lisensi secara sewenang-wenang tanpa mengubah skema database.

(P.S. Ini adalah beban kerja yang membosankan karena setiap elemen jaringan memiliki perintah dan format tampilannya sendiri. Kita perlu menyesuaikannya satu per satu.)

Akhirnya, kami mengumpulkan semua item lisensi! Total lebih dari 1742 item berbeda di 60 elemen jaringan.

Memperkirakan Penggunaan Lisensi

Setelah kita memiliki datanya, sekarang kita dapat menggunakan model ARIMA untuk prediksi. ARIMA (Rata-rata pergerakan terintegrasi autoregresif) adalah model pembelajaran mesin untuk menganalisis dan memperkirakan data deret waktu. Hal ini sesuai dengan tujuan kami dalam memperkirakan penggunaan lisensi yang bergantung pada waktu. Detail lebih lanjut dapat ditemukan di bagian ini: Cara Membuat Model ARIMA untuk Peramalan Rangkaian Waktu dengan Python oleh Jason Brownlee.



Kami melakukan pencarian grid menggunakan StatsModels untuk menemukan kumpulan parameter (p,d,q) terbaik dari total 63 kombinasi.

p = [0,1,2,4,6,8,10]
d = [0,1,2]
q = [0,1,2]

Kami melakukan perulangan pada 60 elemen jaringan dan 1742 lisensi dan kami menjalankan pencarian grid selama hampir satu minggu!

Setelah itu, kami memiliki parameter terbaik untuk setiap lisensi dan kami melakukan prediksi setiap hari. Sulit dipercaya di masa lalu bahwa kami hanya dapat memilih beberapa item lisensi penting dan hanya berhasil memprediksi penggunaannya setiap kuartal. Namun sekarang kami dapat memperkirakan penggunaan lisensi kami setiap hari dan mengingatkan kami jika penggunaan lisensi dalam bahaya.

Jika penggunaan lisensi mencapai 80% dalam 1 bulan, kami mendapat peringatan merah. Tindakan harus segera dilakukan. Sebaliknya, jika penggunaan lisensi mencapai 80% dalam 3 bulan, maka akan muncul peringatan oranye dan terakhir, kita akan mendapat peringatan kuning jika penggunaan mencapai 80% dalam 6 bulan.

Kesimpulan

Proyek ini sangat mengurangi beban kerja kami dalam mengumpulkan data penggunaan lisensi dan kami membangun sistem peringatan yang mengingatkan kami untuk membeli lisensi sebelum habis.

Untuk mengetahui lebih lanjut tentang proyek ini, lihat tautan ke Github saya yang tersedia di sini.