การรวบรวมการใช้ใบอนุญาตอัตโนมัติ, การค้นหาตารางสำหรับโมเดล ML, การคาดการณ์การใช้งานในอนาคต, การแจ้งเตือนก่อนที่จะถึงเกณฑ์

สมมติว่าคุณจำเป็นต้องซื้อกระดาษชำระ คุณจะทำอย่างไร? คุณไม่ได้ซื้อมันทุกวัน อาจจะเดือนละครั้ง หรือแม้กระทั่งทุกสามเดือน คุณไม่ต้องการให้คุณซื้อน้อยเกินไป คุณจะต้องซื้ออีกครั้งในไม่ช้า คุณคงไม่อยากให้คุณซื้อของมากเกินไปและทำให้ห้องน้ำกองพะเนินเทินทึก แล้วคุณจะทำอย่างไร?

ขั้นแรก คุณจะต้องตรวจสอบจำนวนกระดาษชำระที่มีอยู่ จากนั้นจึงคาดการณ์ว่าคุณจะใช้กระดาษชำระในหนึ่งเดือนเป็นจำนวนเท่าใด และซื้อกระดาษชำระตามจำนวนที่เกี่ยวข้อง ดูเหมือนเป็นกระบวนการที่คุ้นเคยหรือไม่? ใช่แล้ว. บริษัทหลายแห่งทำซ้ำขั้นตอนนี้ในการซื้อ หนึ่งในรายการทั่วไปที่บริษัทโทรคมนาคมจำเป็นต้องซื้อเป็นระยะคือใบอนุญาต

ความเป็นมา: การจัดซื้อใบอนุญาต

ในเครือข่ายมือถือ มีองค์ประกอบเครือข่ายต่างๆ ที่ทำหน้าที่เครือข่ายเฉพาะ แต่ละองค์ประกอบเครือข่ายมีรายการควบคุมใบอนุญาตจำนวนมากเพื่อจำกัดการทำงานและความจุของทรัพยากรบางอย่าง ตัวอย่างเช่น ผู้จำหน่ายโทรคมนาคมจะควบคุมจำนวนผู้ใช้ที่เชื่อมต่อ LTE ซึ่งเป็นจำนวนโทรศัพท์มือถือที่สามารถเชื่อมต่อกับเครือข่ายมือถือได้ หากผู้ให้บริการต้องการให้บริการผู้ใช้มากขึ้นพร้อมกัน พวกเขาจะต้องซื้อใบอนุญาตที่เกี่ยวข้องจากผู้ขายของตน เช่นเดียวกับกระดาษชำระ เมื่อใช้หมด ก็ต้องซื้อใหม่ อย่างไรก็ตาม ภายในผู้ให้บริการโทรศัพท์มือถือ ขั้นตอนการซื้อมาตรฐานอาจใช้เวลานานและมีค่าใช้จ่ายหลายเดือน ดังนั้นในฐานะแผนกวิศวกรรม เราจำเป็นต้องคาดการณ์การใช้ใบอนุญาตในอนาคตอย่างแม่นยำในอีกไม่กี่เดือนต่อมาเมื่อเราซื้อใบอนุญาตจากผู้ขาย

ขั้นตอนการทำงานก่อนหน้า

ในอดีต ก่อนอื่นเลย เรารวบรวมบันทึกการใช้ใบอนุญาตด้วยตนเอง ผู้จำหน่ายอุปกรณ์มักจะจัดเตรียม GUI ซึ่งเราสามารถพิมพ์คำสั่งตามไวยากรณ์ Man-Machine Language (MML) ของตนเองเพื่อแสดงการใช้งานใบอนุญาตปัจจุบันบนหน้าจอ จากนั้นเราก็คัดลอกข้อมูลและบันทึกไว้ในรูปแบบ Excel เป็นงานที่น่ารำคาญและบางครั้งเจ้าหน้าที่ที่รับผิดชอบอาจลืมแสดงหรือไฟล์ Excel เสียหาย เราไม่สามารถทำเช่นนี้ได้บ่อยนักเนื่องจากต้องใช้กำลังคนมากเกินไป

โชคดีที่ผู้จำหน่ายอุปกรณ์ยังอนุญาตให้เราเทลเน็ตไปยังเครื่องที่เรียกว่า Network Management System (NMS) เราสามารถพิมพ์คำสั่งพิเศษเพื่อโต้ตอบกับองค์ประกอบเครือข่ายต่างๆ ที่อยู่ด้านล่าง

ขั้นตอนการทำงานอัตโนมัติใหม่

เพื่อให้กระบวนการนี้เป็นอัตโนมัติ เราใช้แพ็คเกจไลบรารี python telnetlib เพื่อรวบรวมการใช้ใบอนุญาต โมดูล telnetlib จัดเตรียมคลาส Telnet ที่ใช้โปรโตคอล Telnet หลังจากที่เราตั้งค่าการเชื่อมต่อโดยใช้ tn = Telnet(NMS_IP, NMS_Port) แล้ว เราก็สามารถส่งคำสั่งของเราโดยใช้ฟังก์ชัน tn.write() ได้ ฉันกำหนดฟังก์ชันสำหรับส่งคำสั่ง ดูด้านล่าง

ขั้นตอนในการรับข้อมูลใบอนุญาตที่คุณต้องการคือ อันดับแรก คุณต้องเข้าสู่ระบบ NMS จากนั้นคุณจะต้องลงทะเบียนองค์ประกอบเครือข่ายที่คุณต้องการตรวจสอบ ดังนี้:

เมื่อเราพิมพ์คำสั่งที่จำเป็นสำหรับการแสดงการใช้งานใบอนุญาต ระบบจะส่งคืนตารางข้อความและเราแบ่งแต่ละแถวด้วยช่องว่างสองช่อง จากนั้นเราจะผนวกแต่ละแถวเป็นสิ่งทูเปิลในรายการที่เรียกว่าข้อมูล

จากนั้นเราถอดรหัสผลลัพธ์ผลลัพธ์เป็น DataFrame ที่มีประโยชน์โดยแพนด้า เราออกแบบตารางฐานข้อมูลของเราเป็นการแวะผ่านเนื่องจากรายการลิขสิทธิ์อาจถูกเพิ่มหรือลบออกหากองค์ประกอบเครือข่ายได้รับการอัพเกรด การแก้ไขสคีมาของตารางในแต่ละครั้งไม่สามารถทำได้ ประการแรก มีการอัปเกรดหลายครั้งในองค์ประกอบเครือข่ายที่แตกต่างกันทุกสัปดาห์ ประการที่สอง เราไม่สามารถทราบการอัปเกรดก่อนหน้าได้ว่ารายการลิขสิทธิ์ใดบ้างที่ถูกเพิ่มหรือลบออก เราสรุปคอลัมน์เป็น:

result_time: เวลาในการรวบรวม;
object_name: ชื่อขององค์ประกอบเครือข่าย
resource_name: ชื่อของรายการใบอนุญาต
total_resource: ความจุของใบอนุญาต เช่น จำนวนสูงสุดที่อนุญาตของใบอนุญาตนั้น
used_resource: จำนวนครอบครองของใบอนุญาต รายการในขณะนั้น;
การใช้งาน: เพียงใช้_ทรัพยากรหารด้วย Total_resource

โครงสร้างนี้สามารถเพิ่มหรือลบรายการลิขสิทธิ์ได้ตามใจชอบโดยไม่ต้องเปลี่ยนสคีมาฐานข้อมูล

(ป.ล. นี่เป็นภาระงานที่น่าเบื่อเนื่องจากทุกองค์ประกอบเครือข่ายมีคำสั่งและรูปแบบการแสดงผล เราจำเป็นต้องปรับแต่งทีละรายการ)

ในที่สุดเราก็รวบรวมรายการลิขสิทธิ์ทั้งหมดแล้ว! รวมกว่า 1,742 รายการที่แตกต่างกันใน 60 องค์ประกอบเครือข่าย

การคาดการณ์การใช้ใบอนุญาต

หลังจากที่เรามีข้อมูลแล้ว เราก็สามารถใช้แบบจำลอง ARIMA ในการทำนายได้ ARIMA (ค่าเฉลี่ยเคลื่อนที่แบบรวมอัตโนมัติแบบถอยกลับ) คือโมเดลการเรียนรู้ของเครื่องสำหรับการวิเคราะห์และคาดการณ์ข้อมูลอนุกรมเวลา สิ่งนี้ตรงกับวัตถุประสงค์ของเราในการคาดการณ์การใช้สิทธิ์การใช้งานที่ขึ้นอยู่กับเวลา ดูรายละเอียดเพิ่มเติมได้ในข้อความนี้: "วิธีสร้างแบบจำลอง ARIMA สำหรับการพยากรณ์อนุกรมเวลาใน Python" โดย "Jason Brownlee"



เราทำการค้นหาตารางโดยใช้ StatsModels เพื่อค้นหาชุดพารามิเตอร์ที่ดีที่สุดของ (p,d,q) จากทั้งหมด 63 ชุด

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

เราสร้างองค์ประกอบเครือข่ายมากกว่า 60 องค์ประกอบและใบอนุญาต 1,742 ใบ และเราดำเนินการค้นหาตารางของเราเป็นเวลาเกือบหนึ่งสัปดาห์!

หลังจากนั้น เรามีพารามิเตอร์ที่ดีที่สุดสำหรับใบอนุญาตแต่ละใบ และเราทำการคาดการณ์ทุกวัน ไม่น่าเชื่อว่าในอดีตเราสามารถเลือกลิขสิทธิ์ที่สำคัญได้เพียงบางรายการเท่านั้น และคาดการณ์การใช้งานได้เพียงทุกไตรมาสเท่านั้น แต่ตอนนี้เราสามารถจัดการคาดการณ์การใช้ใบอนุญาตของเราได้ทุกวันและแจ้งเตือนเราหากการใช้ใบอนุญาตตกอยู่ในอันตราย

หากการใช้ใบอนุญาตถึง 80% ใน 1 เดือน เราจะได้รับการแจ้งเตือนสีแดง จะต้องดำเนินการทันที มิฉะนั้น หากการใช้งานใบอนุญาตถึง 80% ใน 3 เดือน จะมีการแจ้งเตือนสีส้ม และสุดท้าย เราจะได้รับการแจ้งเตือนสีเหลืองหากการใช้งานถึง 80% ใน 6 เดือน

บทสรุป

โปรเจ็กต์นี้ช่วยลดภาระงานของเราในการรวบรวมข้อมูลการใช้ใบอนุญาตได้อย่างมาก และเราได้สร้างระบบแจ้งเตือนที่เตือนให้เราซื้อใบอนุญาตก่อนที่ใบอนุญาตจะหมด

หากต้องการดูเพิ่มเติมเกี่ยวกับโปรเจ็กต์นี้ ดูลิงก์ไปยัง Github ของฉันที่มีให้ ที่นี่