Catatan Harian Mas Andri

Silahkan digunakan dengan bijaksana

back

Membangun Sistem Monitoring Jaringan EPON yang Canggih dengan Python: Enhanced Multi-OLT Monitor v2.1

25 Juli 2025 || 13:21:23 WIB || ClassyID

EPON Monitor Dashboard

Sebagai seorang network engineer atau ISP yang mengelola infrastruktur fiber optik, monitoring jaringan EPON (Ethernet Passive Optical Network) secara real-time adalah hal yang sangat krusial. Masalah pada ONU (Optical Network Unit) bisa berdampak langsung pada layanan pelanggan, dan deteksi dini sangat penting untuk menjaga kualitas layanan.

Hari ini, saya akan membahas sebuah solusi monitoring EPON yang powerful - Enhanced EPON Multi-OLT Monitor v2.1, yang dikembangkan menggunakan Python dengan berbagai fitur canggih untuk monitoring multiple OLT secara bersamaan.

 Mengapa Perlu Sistem Monitoring EPON yang Canggih?

Tantangan dalam Monitoring Jaringan EPON

  1. Multiple OLT Management: Mengelola puluhan atau bahkan ratusan OLT secara manual sangat tidak efisien
  2. Real-time Monitoring: Perlu sistem yang bisa memberikan update status secara real-time
  3. Alert System: Notifikasi otomatis saat terjadi masalah sangat penting untuk response time yang cepat
  4. Historical Data: Data historis diperlukan untuk analisis trend dan troubleshooting
  5. User-Friendly Interface: Interface yang mudah digunakan untuk teknisi di lapangan

Solusi yang Ditawarkan

Enhanced EPON Multi-OLT Monitor v2.1 hadir dengan fitur-fitur canggih:

 Arsitektur dan Teknologi

Tech Stack yang Digunakan

Backend:

Frontend:

Integration:

Arsitektur Sistem

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Web Browser   │    │   Python Flask   │    │   SQLite DB     │
│   (Dashboard)   │◄──►│   Application    │◄──►│   (Data Store)  │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                │
                                ▼
                       ┌──────────────────┐
                       │  OLT Managers    │
                       │ (Multi-threaded) │
                       └──────────────────┘
                                │
                                ▼
                    ┌─────────────────────────────┐
                    │        OLT Devices          │
                    │  ┌─────┐ ┌─────┐ ┌─────┐   │
                    │  │OLT-1│ │OLT-2│ │OLT-N│   │
                    │  └─────┘ └─────┘ └─────┘   │
                    └─────────────────────────────┘
                                │
                                ▼
                       ┌──────────────────┐
                       │  WhatsApp API    │
                       │   (Notifications)│
                       └──────────────────┘

 Fitur-Fitur Unggulan

1. Dashboard Web Real-time yang Menawan

Dashboard web adalah jantung dari sistem monitoring ini. Dibangun dengan Bootstrap 5 dan Chart.js, dashboard menyediakan:

Overview Statistics:

Real-time Charts:

Interactive Features:

2. Multi-OLT Monitoring dengan Concurrent Processing

Salah satu fitur paling powerful adalah kemampuan monitoring multiple OLT secara bersamaan:

# Concurrent monitoring untuk performa optimal
with concurrent.futures.ThreadPoolExecutor(max_workers=len(olt_managers)) as executor:
    future_to_manager = {
        executor.submit(enhanced_monitor_single_olt, manager, cycle_count): manager 
        for manager in olt_managers
    }
    
    for future in concurrent.futures.as_completed(future_to_manager):
        manager = future_to_manager[future]
        result = future.result()
        # Process hasil monitoring

Keunggulan Concurrent Processing:

3. Sistem Alert WhatsApp yang Cerdas

Sistem notifikasi WhatsApp sangat detail dan informatif:

Format Alert DOWN/PWRDOWN:

 EPON MULTI-OLT STATUS ALERT 

 Time: 2024-12-20 10:30:15
 Total OLT Monitored: 3

 OLT KEDIRI PUSAT (OLT-KEDIRI-01)
──────────────────────────────────────
 Status: 2 Total Problems
    DOWN: 1
    PWRDOWN: 1

 NEW DOWN DETECTED:
 CLIENT-WARUNG-MAKAN-PAK-BAMBANG
    PON: 1/1/1
    MAC: 00:11:22:33:44:55
    Status: Down (Timeout)
    Priority: HIGH
    Temp: 45°C
    Jarak: 150m
    RX: -28 dBm
    Offline: 00:05:30
    Reason: TIMEOUT (Koneksi Terputus)
    Disconnect: 3x

Laporan Rutin Setiap Jam:

 HOURLY STATUS REPORT 

 Report Time: 2024-12-20 11:00:00
 Multi-OLT Network Status
 Fungsi: Laporan rutin setiap jam untuk monitoring kesehatan jaringan

 NETWORK OVERVIEW:
 Total OLT: 3
 Total ONU: 150
 Online: 145 (96.7%)
 Problems: 5

 OLT Kediri Pusat: 48/50 (96.0%) | 42°C | -22dBm
 OLT Kediri Timur: 49/50 (98.0%) | 38°C | -20dBm
 OLT Kediri Barat: 48/50 (96.0%) | 66°C | -28dBm

 NETWORK HEALTH:
 Avg Temperature: 48.7°C
 Avg RX Power: -23.3 dBm
 Network Uptime: 96.7%

4. Database Analytics yang Komprehensif

Sistem menggunakan SQLite dengan skema database yang well-designed:

Tabel Utama:

Advanced Features:

5. Smart Detection Algorithm

Sistem memiliki algoritma deteksi yang cerdas untuk mengkategorikan masalah:

def get_detailed_onu_status(self, onu):
    """Analisis status ONU secara detail"""
    status = onu.get('Status', 'Unknown')
    dying_gasp = onu.get('Dying_Gasp', '0')
    auth_status = onu.get('Auth_Status', '0')
    temperature = onu.get('Temperature', 0)
    rx_power = onu.get('RX_Power', 0)
    
    # Determine priority based on multiple factors
    if status == 'Down':
        if dying_gasp == '1':
            return {'category': 'down_dying_gasp', 'status': 'Down (Dying Gasp)', 'priority': 'critical'}
        elif auth_status == '0':
            return {'category': 'auth_failed', 'status': 'Down (Auth Failed)', 'priority': 'high'}
        # ... logika lainnya

Kategorisasi Prioritas:

 Implementasi Teknis

Parsing Data ONU yang Robust

Salah satu challenge terbesar adalah parsing data dari web interface OLT yang berbeda-beda format. Sistem ini menggunakan teknik parsing yang robust:

def _parse_onu_data(self, html_content):
    """Enhanced ONU data parsing"""
    try:
        # Extract JavaScript array from HTML
        onutable_pattern = r'var onutable=new Array\((.*?)\);'
        match = re.search(onutable_pattern, html_content, re.DOTALL)
        
        # Enhanced JavaScript array parsing
        in_quotes = False
        current_item = ""
        escape_next = False
        
        for char in onu_raw_data:
            if escape_next:
                current_item += char
                escape_next = False
            elif char == '\\':
                escape_next = True
                current_item += char
            # ... parsing logic

Real-time Communication dengan WebSocket

Untuk update real-time di dashboard, sistem menggunakan Socket.IO:

// Enhanced WebSocket connection
const socket = io();

socket.on('monitoring_update', function(data) {
    console.log('Enhanced monitoring update received:', data);
    
    // Update charts with new data
    updateCharts(data);
    
    // Show notification for new alerts
    if (data.alerts && data.alerts.length > 0) {
        showAlert('warning', `${data.alerts.length} new alerts detected!`);
    }
});

Database Schema yang Optimized

Database schema dirancang untuk performa optimal:

-- Index untuk query yang sering digunakan
CREATE INDEX IF NOT EXISTS idx_onu_status_olt_id ON onu_status(olt_id);
CREATE INDEX IF NOT EXISTS idx_alert_history_created_at ON alert_history(created_at);
CREATE INDEX IF NOT EXISTS idx_monitoring_stats_timestamp ON monitoring_stats(timestamp);

-- Table untuk tracking perubahan status
CREATE TABLE previous_status (
    olt_id TEXT,
    onu_key TEXT,
    status TEXT,
    last_update TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (olt_id, onu_key)
);

 Panduan Implementasi

Step 1: Persiapan Environment

# Clone repository
git clone https://github.com/classyid/epon-multi-olt-monitor-enhanced.git
cd epon-multi-olt-monitor-enhanced

# Setup virtual environment
python3 -m venv venv
source venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Step 2: Konfigurasi Aplikasi

# Jalankan aplikasi
python epon_monitor_enhanced.py

# Akses dashboard
# http://localhost:5000

Step 3: Konfigurasi OLT

  1. Buka dashboard web
  2. Pilih menu Configuration
  3. Tambah OLT dengan data:
    • OLT ID: OLT-KEDIRI-01
    • Name: OLT Kediri Pusat
    • URL: http://192.168.1.100:88
    • Username/Password: kredensial OLT

Step 4: Setup WhatsApp

  1. Daftar di API WhatsApp provider (misal: kirimwa.classy.id)
  2. Dapatkan API key
  3. Konfigurasi di menu WhatsApp pada dashboard

Step 5: Mulai Monitoring

  1. Klik tombol Start di sidebar
  2. Monitor akan berjalan otomatis
  3. Alert WhatsApp akan dikirim jika ada masalah

 Use Cases dan Manfaat

Untuk ISP Skala Kecil-Menengah

Skenario: ISP dengan 5-10 OLT dan 500-1000 pelanggan

Manfaat:

ROI: Pengurangan downtime hingga 70%

Untuk Network Operations Center (NOC)

Skenario: NOC dengan puluhan OLT

Manfaat:

ROI: Efficiency improvement hingga 50%

Untuk Field Technician

Skenario: Teknisi lapangan yang perlu info real-time

Manfaat:

ROI: Faster problem resolution

 Customization dan Extensibility

Custom Alert Templates

Sistem mendukung customization template WhatsApp:

# Template custom untuk critical alert
custom_template = ''' CRITICAL ALERT 
OLT: {olt_name}
Issue: {issue_type}
Action Required: {action_needed}
Contact: {support_number}'''

API Integration

RESTful API memungkinkan integrasi dengan sistem lain:

# Get current status
curl http://localhost:5000/api/dashboard/enhanced-stats

# Start/stop monitoring
curl -X POST http://localhost:5000/api/monitoring/start

# Export data
curl http://localhost:5000/api/dashboard/export

Custom Monitoring Parameters

Dapat menambahkan parameter monitoring custom:

# Monitor parameter tambahan
def get_custom_metrics(self, onu):
    """Custom metrics untuk monitoring specific"""
    return {
        'fiber_break_detection': self.detect_fiber_break(onu),
        'customer_impact_score': self.calculate_impact(onu),
        'maintenance_prediction': self.predict_maintenance(onu)
    }

 Performance dan Scalability

Performance Metrics

Monitoring Performance:

Resource Usage:

Scalability Features

  1. Horizontal Scaling: Deploy multiple instances
  2. Database Sharding: Split database berdasarkan region
  3. Load Balancing: Nginx untuk distribute load
  4. Microservices: Pecah menjadi service terpisah

Production Deployment

# Deploy dengan Docker
docker-compose up -d

# Setup dengan systemd
sudo systemctl enable epon-monitor
sudo systemctl start epon-monitor

# Reverse proxy dengan Nginx
# SSL certificate dengan Let's Encrypt

 

Community Contributions

Project ini open source dan welcomes contributions:

 Kesimpulan

Enhanced EPON Multi-OLT Monitor v2.1 adalah solusi monitoring yang powerful dan comprehensive untuk network engineer yang serious tentang network reliability. Dengan fitur-fitur canggih seperti:

 Real-time monitoring dengan dashboard yang intuitif  Smart alerting via WhatsApp dengan format yang informatif
 Multi-OLT support dengan concurrent processing  Comprehensive analytics untuk decision making  Production-ready dengan deployment yang mudah

Sistem ini dapat significantly meningkatkan network uptime, mengurangi MTTR, dan memberikan visibility yang lebih baik terhadap network health.

Key Takeaways

  1. Automation is Key: Manual monitoring tidak scalable untuk modern ISP
  2. Real-time Visibility: Dashboard real-time crucial untuk fast response
  3. Smart Alerting: Alert yang informatif menghemat waktu troubleshooting
  4. Historical Data: Data historis penting untuk trend analysis
  5. Easy Deployment: Solusi yang mudah di-deploy akan lebih cepat di-adopt

Ready to Get Started?

  1. Clone repository dari GitHub
  2. Setup sesuai dokumentasi deployment
  3. Configure OLT dan WhatsApp settings
  4. Start monitoring dan rasakan perbedaannya!

Repository: GitHub - Enhanced EPON Multi-OLT Monitor

 

Support: Jika ada pertanyaan atau butuh bantuan implementation, feel free to reach out via GitHub issues atau email.


Tags: #EPON #NetworkMonitoring #Python #Flask #ISP #FiberOptic #NOC #TelecommunicationsReady to Get Started?