Dipublikasikan pada: 31 Januari 2025 | Kategori: Network Engineering, Python, ISP Technology
Dalam era digital yang semakin berkembang pesat, keandalan jaringan fiber optik menjadi tulang punggung infrastruktur internet. Bagi penyedia layanan internet (ISP), terutama yang menggunakan teknologi EPON (Ethernet Passive Optical Network), monitoring real-time terhadap perangkat OLT (Optical Line Terminal) dan ONU (Optical Network Unit) bukan lagi sekadar kebutuhan, melainkan sebuah keniscayaan.
Bayangkan jika Anda mengelola puluhan atau bahkan ratusan pelanggan fiber optik yang tersebar di berbagai lokasi. Ketika ada gangguan jaringan, pelanggan pasti akan langsung menghubungi customer service. Pertanyaannya: Apakah Anda sudah mengetahui masalah tersebut sebelum pelanggan menelepon?
Artikel ini akan membahas bagaimana membangun sistem monitoring EPON multi-OLT yang canggih menggunakan Python, lengkap dengan notifikasi WhatsApp otomatis dan filtering yang dapat disesuaikan dengan kebutuhan operasional Anda.
Dalam pengalaman mengelola jaringan fiber optik, beberapa tantangan sering muncul:
Sistem monitoring otomatis memberikan keuntungan:
Tidak seperti monitoring sederhana yang hanya bisa handle satu OLT, sistem ini dirancang untuk mengelola multiple OLT secara bersamaan:
olt_configs = [
{
'id': 'OLT-KEDIRI-01',
'name': 'OLT Wuznet Pusat',
'url': 'http://ip.wuznet.com:88',
'username': 'andri',
'password': 'andri123'
},
{
'id': 'OLT-KEDIRI-02',
'name': 'OLT Wuznet Timur',
'url': 'http://ip.wuznet.com:89',
'username': 'andri2',
'password': 'andri456'
}
# ... dan seterusnya
]
Sistem ini tidak hanya membedakan "online" dan "offline", tetapi menganalisis berbagai kondisi:
Fitur unik yang membedakan masalah jaringan dengan masalah listrik:
def get_detailed_onu_status(self, onu):
status = str(onu.get('Status', 'Unknown')).strip()
dying_gasp = str(onu.get('Dying_Gasp', '0')).strip()
if status == 'down' and dying_gasp == '1':
# Ini adalah masalah power, bukan masalah jaringan
return {'category': 'power_down', 'status': 'Power Down', 'icon': ''}
Dying Gasp adalah sinyal yang dikirim ONU ketika kehilangan daya listrik. Dengan mendeteksi ini, sistem bisa membedakan apakah masalah disebabkan oleh:
Salah satu fitur paling powerful adalah sistem filtering notifikasi:
# 4 Mode Filter Notifikasi:
NOTIFICATION_FILTER = 'all' # Semua alert
NOTIFICATION_FILTER = 'down_only' # Hanya masalah jaringan
NOTIFICATION_FILTER = 'pwrdown_only' # Hanya masalah power
NOTIFICATION_FILTER = 'none' # Hanya laporan berkala
Mengapa ini penting?
Notifikasi WhatsApp dengan format yang mudah dibaca:
EPON MULTI-OLT STATUS ALERT
Time: 2025-01-31 14:30:15
Total OLT Monitored: 3
Filter: DOWN_ONLY
OLT Wuznet Pusat (OLT-KEDIRI-01)
──────────────────────────────────────
Status: 2 Total Problems
DOWN: 2
PWRDOWN: 0
NEW DOWN DETECTED:
CUSTOMER-001
PON: 1/1/1
MAC: AA:BB:CC:DD:EE:FF
Status: Down (Timeout)
Priority: HIGH
Jarak: 1200m
Temp: 45°C
RX: -28 dBm
Reason: TIMEOUT (Koneksi Terputus)
Sistem menggunakan dua class utama:
EponOltManager: Mengelola satu OLT
MultiOltMonitor: Koordinator multi-OLT
with concurrent.futures.ThreadPoolExecutor(max_workers=len(self.olt_managers)) as executor:
future_to_manager = {
executor.submit(self.monitor_single_olt, manager): manager
for manager in self.olt_managers
}
Menggunakan multi-threading untuk monitoring simultaneous, mengurangi waktu total monitoring dari N×interval menjadi hanya 1×interval.
Sistem menyimpan 3 jenis file JSON per OLT:
epon_status_[olt_id].json
: Status tracking untuk change detectionepon_problems_[olt_id].json
: Detail ONU bermasalahepon_recovery_[olt_id].json
: Log recovery events
# Clone dan setup
git clone https://github.com/your-repo/epon-multi-olt-monitor.git
cd epon-multi-olt-monitor
pip install requests beautifulsoup4
# Edit konfigurasi
nano epon_monitor.py
# Jalankan
python epon_monitor.py
Untuk environment production, disarankan menggunakan:
# Setup sebagai systemd service
sudo systemctl enable epon-monitor
sudo systemctl start epon-monitor
# Atau menggunakan Docker
docker-compose up -d epon-monitor
Setup:
Manfaat:
Setup:
Manfaat:
Setup:
Manfaat:
Masalah:
Solusi:
# Implementasi multiple parser untuk berbagai vendor
def _parse_onu_data_vendor_a(self, html_content):
# Parser untuk Vendor A
pass
def _parse_onu_data_vendor_b(self, html_content):
# Parser untuk Vendor B
pass
Masalah:
Solusi:
# Implementasi batching dan rate limiting
import asyncio
import aiohttp
class AsyncEponManager:
async def monitor_with_rate_limit(self):
semaphore = asyncio.Semaphore(10) # Max 10 concurrent requests
# Implementation here
Masalah:
Solusi:
# Multiple notification channels
notification_channels = [
WhatsAppNotifier(),
TelegramNotifier(),
EmailNotifier(),
SlackNotifier()
]
Masalah:
Solusi:
from cryptography.fernet import Fernet
import keyring
# Encrypt credentials
def encrypt_credentials(username, password):
key = Fernet.generate_key()
f = Fernet(key)
encrypted_user = f.encrypt(username.encode())
encrypted_pass = f.encrypt(password.encode())
return encrypted_user, encrypted_pass
Masalah:
Solusi:
# Database integration
import sqlite3
from sqlalchemy import create_engine
class DatabaseManager:
def __init__(self):
self.engine = create_engine('sqlite:///epon_monitoring.db')
def store_onu_status(self, olt_id, onu_data):
# Store to database with proper indexing
pass
Masalah:
Solusi:
class AlertManager:
def __init__(self):
self.alert_threshold = 3 # Alert after 3 consecutive failures
self.alert_cooldown = 300 # 5 minutes cooldown
def should_send_alert(self, onu_id, current_status):
# Implement intelligent alerting with thresholds
pass
Masalah:
Solusi:
import circuit_breaker
@circuit_breaker.circuit(failure_threshold=5, recovery_timeout=300)
def monitor_olt_with_circuit_breaker(self, olt_manager):
try:
return self.monitor_single_olt(olt_manager)
except Exception as e:
logging.error(f"OLT {olt_manager.olt_id} failed: {e}")
return None
Masalah:
Solusi:
import pydantic
from typing import List
class OltConfig(pydantic.BaseModel):
id: str
name: str
url: str = pydantic.Field(..., regex=r'^https?://')
username: str
password: str
class MonitorConfig(pydantic.BaseModel):
olts: List[OltConfig]
notification_filter: str = pydantic.Field(..., regex=r'^(all|down_only|pwrdown_only|none))
monitor_interval: int = pydantic.Field(default=30, ge=10, le=3600)
# Mulai dengan 1-2 OLT untuk testing
# Gradually add more OLT setelah stable
# Monitor resource usage dan optimize
import logging
from logging.handlers import RotatingFileHandler
# Setup comprehensive logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
handlers=[
RotatingFileHandler('epon_monitor.log', maxBytes=10MB, backupCount=5),
logging.StreamHandler()
]
)
# Monitor the monitor - meta monitoring
def health_check():
return {
'status': 'healthy',
'last_successful_check': self.last_check_time,
'active_olts': len(self.active_olt_managers),
'memory_usage': psutil.Process().memory_info().rss,
'uptime': time.time() - self.start_time
}
# Regular backup of configuration dan historical data
# Implement failover mechanism
# Document recovery procedures
Sistem monitoring EPON multi-OLT ini bukan sekadar script automation biasa, tetapi solusi komprehensif yang dirancang untuk mengatasi tantangan real-world ISP modern. Dengan fitur-fitur seperti intelligent status detection, flexible notification filtering, dan concurrent processing, sistem ini mampu meningkatkan operational efficiency secara signifikan.
Key Takeaways:
Proactive Monitoring: Deteksi masalah sebelum pelanggan komplain Smart Filtering: Notifikasi yang relevan dan tidak spam Scalable Architecture: Bisa tumbuh seiring berkembangnya bisnis Cost Effective: ROI positif dalam waktu singkat Easy Implementation: Setup yang relatif mudah untuk ISP kecil-menengah
Namun, penting untuk memahami keterbatasan dan merencanakan pengembangan lanjutan sesuai dengan pertumbuhan bisnis. Investasi dalam monitoring automation adalah investasi jangka panjang yang akan memberikan competitive advantage dalam industri ISP yang semakin kompetitif.
Ready to implement? Start dengan setup basic untuk 1-2 OLT, pelajari behavior pattern jaringan Anda, kemudian scale up secara bertahap. Remember: Better monitoring today means better service tomorrow.
Tags: #EPON #NetworkMonitoring #Python #ISP #FiberOptic #Automation #WhatsApp #NetworkEngineering