Data monitoring jaringan sebenarnya menyimpan banyak informasi yang bisa digunakan untuk mengetahui kondisi perangkat. Dari data seperti penggunaan CPU, memory, trafik jaringan, dan packet loss, kita bisa melihat apakah suatu perangkat masih berjalan normal atau mulai menunjukkan masalah.
Sebelumnya, saya sudah mencoba mengolah data monitoring menggunakan Python untuk melihat CPU, memory, dan trafik jaringan. Kali ini saya mencoba melanjutkan analisis tersebut menggunakan SQL.
Bedanya, kali ini saya tidak hanya ingin melihat data. Saya ingin mencoba menjawab beberapa pertanyaan dari data tersebut.
Misalnya:
Perangkat mana yang memiliki penggunaan resource paling tinggi?
Berapa banyak data yang masuk kondisi normal atau warning?
Perangkat mana yang perlu lebih diperhatikan?
Nah, dari pertanyaan tersebut saya mulai melakukan analisis menggunakan SQL.
Data yang Digunakan
Supaya lebih mudah dipraktikkan, saya menggunakan data monitoring sederhana yang berisi beberapa perangkat jaringan dan sistem.
Data yang digunakan memiliki beberapa kolom:
| Kolom | Keterangan |
|---|---|
id | Nomor data |
monitoring_time | Waktu pengambilan data |
device_name | Nama perangkat |
device_type | Jenis perangkat |
location | Lokasi perangkat |
cpu_usage | Penggunaan CPU (%) |
memory_usage | Penggunaan memory (%) |
network_usage | Penggunaan jaringan (%) |
packet_loss | Packet loss (%) |
Perangkat yang digunakan dalam contoh ini adalah Server, Router, Switch, dan Access Point.
1. Membuat Database
Saya mulai dengan membuka MariaDB/MySQL di laptop. Setelah masuk, saya membuat database baru dengan nama network_monitoring.
CREATE DATABASE network_monitoring;Setelah itu saya cek apakah database sudah berhasil dibuat:
SHOW DATABASES;Jika berhasil, nama network_monitoring akan muncul pada daftar database.

2. Memilih Database
Database yang sudah dibuat perlu dipilih terlebih dahulu sebelum membuat tabel.
Saya menggunakan:
USE network_monitoring;
Setelah database aktif, saya bisa mulai membuat tabel di dalamnya.
3. Membuat Tabel Monitoring
Selanjutnya saya membuat tabel system_monitoring.
CREATE TABLE system_monitoring (
id INT AUTO_INCREMENT PRIMARY KEY,
monitoring_time DATETIME,
device_name VARCHAR(50),
device_type VARCHAR(30),
location VARCHAR(50),
cpu_usage DECIMAL(5,2),
memory_usage DECIMAL(5,2),
network_usage DECIMAL(5,2),
packet_loss DECIMAL(5,2)
);Saya membuat beberapa kolom karena ingin melihat kondisi perangkat dari beberapa sisi. Jadi nantinya bukan hanya CPU yang dianalisis, tetapi juga memory, penggunaan jaringan, dan packet loss.
Untuk memastikan tabel sudah dibuat, saya menjalankan:
SHOW TABLES;
4. Memasukkan Data Monitoring
Setelah tabel siap, saya memasukkan data monitoring.
Saya menggunakan beberapa perangkat dengan waktu monitoring yang berbeda supaya datanya bisa digunakan untuk analisis.
INSERT INTO system_monitoring
(monitoring_time, device_name, device_type, location,
cpu_usage, memory_usage, network_usage, packet_loss)
VALUES
('2026-08-31 08:00', 'Server-01', 'Server', 'Ruang Server', 35, 42, 28, 0.1),
('2026-08-31 09:00', 'Server-01', 'Server', 'Ruang Server', 48, 55, 35, 0.2),
('2026-08-31 10:00', 'Server-01', 'Server', 'Ruang Server', 76, 68, 52, 1.5),
('2026-08-31 11:00', 'Server-01', 'Server', 'Ruang Server', 84, 88, 75, 5.2),
('2026-08-31 08:00', 'Server-02', 'Server', 'Ruang Server', 41, 50, 31, 0.0),
('2026-08-31 09:00', 'Server-02', 'Server', 'Ruang Server', 55, 61, 44, 0.4),
('2026-08-31 10:00', 'Server-02', 'Server', 'Ruang Server', 72, 74, 61, 1.8),
('2026-08-31 11:00', 'Server-02', 'Server', 'Ruang Server', 79, 82, 69, 2.8),
('2026-08-31 08:00', 'Router-01', 'Router', 'Ruang Jaringan', 32, 45, 22, 0.0),
('2026-08-31 09:00', 'Router-01', 'Router', 'Ruang Jaringan', 44, 52, 38, 0.1),
('2026-08-31 10:00', 'Router-01', 'Router', 'Ruang Jaringan', 58, 60, 57, 0.6),
('2026-08-31 11:00', 'Router-01', 'Router', 'Ruang Jaringan', 67, 65, 73, 1.2),
('2026-08-31 08:00', 'Router-02', 'Router', 'Ruang Jaringan', 38, 47, 25, 0.0),
('2026-08-31 09:00', 'Router-02', 'Router', 'Ruang Jaringan', 52, 56, 46, 0.3),
('2026-08-31 10:00', 'Router-02', 'Router', 'Ruang Jaringan', 71, 69, 64, 2.1),
('2026-08-31 11:00', 'Router-02', 'Router', 'Ruang Jaringan', 83, 86, 78, 4.7),
('2026-08-31 08:00', 'Switch-01', 'Switch', 'Lantai 1', 28, 40, 18, 0.0),
('2026-08-31 09:00', 'Switch-01', 'Switch', 'Lantai 1', 35, 44, 25, 0.0),
('2026-08-31 10:00', 'Switch-01', 'Switch', 'Lantai 1', 43, 49, 33, 0.1),
('2026-08-31 11:00', 'Switch-01', 'Switch', 'Lantai 1', 49, 53, 41, 0.2),
('2026-08-31 08:00', 'AP-01', 'Access Point', 'Lantai 2', 45, 58, 34, 0.2),
('2026-08-31 09:00', 'AP-01', 'Access Point', 'Lantai 2', 62, 65, 48, 0.8),
('2026-08-31 10:00', 'AP-01', 'Access Point', 'Lantai 2', 74, 79, 66, 2.4),
('2026-08-31 11:00', 'AP-01', 'Access Point', 'Lantai 2', 81, 84, 72, 3.5);Setelah query dijalankan, data berhasil dimasukkan ke tabel.

5. Melihat Data yang Sudah Dimasukkan
Sebelum mulai menganalisis, saya ingin memastikan data yang dimasukkan memang sudah ada.
Saya menjalankan:
SELECT * FROM system_monitoring;Hasilnya menampilkan seluruh data monitoring.

6. Menghitung Jumlah Data
Setelah melihat isi tabel, saya mencoba menghitung berapa banyak data monitoring yang tersedia.
SELECT COUNT(*) AS total_data
FROM system_monitoring;Hasilnya:
24
Berarti terdapat 24 data monitoring yang akan digunakan untuk analisis.
7. Melihat Rata-rata Kondisi Monitoring
Selanjutnya saya ingin mengetahui kondisi data secara keseluruhan.
Untuk itu saya menggunakan AVG().
SELECT
AVG(cpu_usage) AS rata_rata_cpu,
AVG(memory_usage) AS rata_rata_memory,
AVG(network_usage) AS rata_rata_network,
AVG(packet_loss) AS rata_rata_packet_loss
FROM system_monitoring;Hasilnya kira-kira:
| Parameter | Rata-rata |
|---|---|
| CPU | 56,33% |
| Memory | 61,33% |
| Network | 47,29% |
| Packet Loss | 1,18% |

Dari hasil tersebut, rata-rata penggunaan CPU berada di sekitar 56,33%, sedangkan penggunaan memory sekitar 61,33%.
8. Mencari Nilai Tertinggi
Saya menggunakan MAX() untuk mengetahui nilai paling tinggi dari setiap parameter.
SELECT
MAX(cpu_usage) AS cpu_tertinggi,
MAX(memory_usage) AS memory_tertinggi,
MAX(network_usage) AS network_tertinggi,
MAX(packet_loss) AS packet_loss_tertinggi
FROM system_monitoring;Hasilnya:
| Parameter | Nilai Tertinggi |
|---|---|
| CPU | 84% |
| Memory | 88% |
| Network | 78% |
| Packet Loss | 5,2% |

Dari sini mulai terlihat bahwa meskipun nilai rata-ratanya masih cukup rendah, ada beberapa kondisi yang cukup tinggi.
9. Mencari CPU yang Tinggi
Saya mencoba mencari data yang memiliki penggunaan CPU minimal 70%.
SELECT
device_name,
monitoring_time,
cpu_usage
FROM system_monitoring
WHERE cpu_usage >= 70
ORDER BY cpu_usage DESC;Hasil tertingginya adalah:
| Device | CPU |
|---|---|
| Server-01 | 84% |
| Router-02 | 83% |
| AP-01 | 81% |
| Server-02 | 79% |

Dari sini terlihat bahwa beberapa perangkat mulai menunjukkan penggunaan CPU yang tinggi.
10. Membuat Kategori CPU
Melihat angka satu per satu memang bisa dilakukan, tetapi akan lebih mudah kalau angka tersebut dibuat menjadi kategori. Saya menggunakan CASE WHEN.
Aturannya saya buat sederhana:
- di bawah 50% → Normal
- 50–79% → Warning
- 80% ke atas → Critical
Query-nya:
Mau Kuasai Analisis Data Monitoring Jaringan Menggunakan SQL Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
SELECT
device_name,
cpu_usage,
CASE
WHEN cpu_usage < 50 THEN 'Normal'
WHEN cpu_usage < 80 THEN 'Warning'
ELSE 'Critical'
END AS cpu_status
FROM system_monitoring;Sekarang setiap data memiliki status.
Contohnya:
| Device | CPU | Status |
|---|---|---|
| Server-01 | 35% | Normal |
| Server-01 | 76% | Warning |
| Server-01 | 84% | Critical |
| Router-02 | 71% | Warning |
| Switch-01 | 43% | Normal |

Menurut saya, hasil seperti ini lebih mudah dibaca dibandingkan hanya melihat angka.
11. Membuat Kategori Memory
Saya melakukan hal yang sama pada penggunaan memory.
Aturannya:
- di bawah 60% → Normal
- 60–84% → Warning
- 85% ke atas → Critical
Query:
SELECT
device_name,
memory_usage,
CASE
WHEN memory_usage < 60 THEN 'Normal'
WHEN memory_usage < 85 THEN 'Warning'
ELSE 'Critical'
END AS memory_status
FROM system_monitoring;Dengan cara ini, data memory juga lebih mudah dibaca.

12. Melihat Kondisi Network
Karena artikel ini masuk kategori Network & System, saya juga ingin melihat kondisi penggunaan jaringan.
Saya menggunakan CASE WHEN lagi:
SELECT
device_name,
network_usage,
CASE
WHEN network_usage < 40 THEN 'Normal'
WHEN network_usage < 70 THEN 'Warning'
ELSE 'High'
END AS network_status
FROM system_monitoring;Hasilnya menunjukkan apakah penggunaan jaringan pada masing-masing data masih normal atau sudah cukup tinggi.

13. Menggabungkan Kondisi CPU, Memory, dan Packet Loss
Setelah mencoba masing-masing parameter, saya ingin melihat kondisi sistem secara keseluruhan.
Saya membuat aturan sederhana:
- CPU tinggi + memory tinggi + packet loss tinggi → Critical
- Salah satu parameter cukup tinggi → Warning
- Selain itu → Normal
Query yang digunakan:
SELECT
device_name,
cpu_usage,
memory_usage,
network_usage,
packet_loss,
CASE
WHEN cpu_usage >= 80
AND memory_usage >= 85
AND packet_loss >= 5
THEN 'Critical'
WHEN cpu_usage >= 70
OR memory_usage >= 70
OR packet_loss >= 2
THEN 'Warning'
ELSE 'Normal'
END AS system_condition
FROM system_monitoring;Nah, di sini hasil analisis mulai lebih menarik.

14. Menghitung Jumlah Kondisi
Setelah memiliki kategori, saya ingin tahu berapa banyak data yang masuk ke masing-masing kondisi.
Saya menggunakan GROUP BY.
SELECT
system_condition,
COUNT(*) AS jumlah_data
FROM (
SELECT
CASE
WHEN cpu_usage >= 80
AND memory_usage >= 85
AND packet_loss >= 5
THEN 'Critical'
WHEN cpu_usage >= 70
OR memory_usage >= 70
OR packet_loss >= 2
THEN 'Warning'
ELSE 'Normal'
END AS system_condition
FROM system_monitoring
) AS monitoring_status
GROUP BY system_condition;Hasilnya:
| Kondisi | Jumlah Data |
|---|---|
| Normal | 16 |
| Warning | 7 |
| Critical | 1 |

Dari 24 data monitoring, sebagian besar memang masih berada dalam kondisi normal. Tetapi ada 7 data warning dan 1 data critical.
15. Mencari Perangkat yang Perlu Diperhatikan
Setelah mengetahui jumlah kondisi, saya ingin melihat perangkat mana yang paling sering menunjukkan kondisi bermasalah.
Saya menggunakan query berikut:
SELECT
device_name,
COUNT(*) AS jumlah_monitoring,
SUM(
CASE
WHEN cpu_usage >= 70
OR memory_usage >= 70
OR packet_loss >= 2
THEN 1
ELSE 0
END
) AS jumlah_masalah
FROM system_monitoring
GROUP BY device_name
ORDER BY jumlah_masalah DESC;Query ini menghitung berapa kali setiap perangkat masuk ke kondisi yang perlu diperhatikan.

Hasil tersebut kemudian bisa digunakan untuk melihat perangkat mana yang perlu menjadi prioritas pemeriksaan.
16. Membandingkan Perangkat
Saya juga ingin melihat rata-rata penggunaan resource pada setiap perangkat.
SELECT
device_name,
ROUND(AVG(cpu_usage), 2) AS rata_cpu,
ROUND(AVG(memory_usage), 2) AS rata_memory,
ROUND(AVG(network_usage), 2) AS rata_network,
ROUND(AVG(packet_loss), 2) AS rata_packet_loss
FROM system_monitoring
GROUP BY device_name
ORDER BY rata_cpu DESC;Dengan query ini, saya bisa membandingkan kondisi antarperangkat tanpa harus melihat 24 data satu per satu.

17. Mengecek Packet Loss
Selain CPU dan memory, saya juga ingin melihat packet loss karena parameter ini berhubungan langsung dengan kondisi jaringan.
Saya mencari data dengan packet loss minimal 2%.
SELECT
device_name,
monitoring_time,
packet_loss
FROM system_monitoring
WHERE packet_loss >= 2
ORDER BY packet_loss DESC;Dari hasilnya, saya bisa melihat perangkat mana yang mengalami packet loss cukup tinggi dan kapan kondisi tersebut terjadi.

Hasil Analisis
Setelah beberapa query dijalankan, akhirnya data monitoring yang awalnya hanya berupa angka bisa memberikan informasi yang lebih jelas.
Dari 24 data monitoring, terdapat:
- 16 data normal
- 7 data warning
- 1 data critical
Rata-rata penggunaan resource adalah:
- CPU: 56,33%
- Memory: 61,33%
- Network: 47,29%
- Packet loss: 1,18%
Nilai tertinggi yang ditemukan adalah:
- CPU: 84%
- Memory: 88%
- Network: 78%
- Packet loss: 5,2%
Dari sini terlihat bahwa kondisi jaringan dan sistem secara umum masih cukup terkendali, tetapi ada beberapa waktu tertentu ketika penggunaan resource meningkat.
Kesimpulan
Dari praktik ini saya belajar menggunakan SQL untuk menganalisis data monitoring jaringan dan sistem.
Saya mulai dari membuat database dan tabel, memasukkan data monitoring, mengecek data, mencari rata-rata dan nilai tertinggi, kemudian menggunakan WHERE, GROUP BY, fungsi agregasi, dan CASE WHEN untuk melakukan analisis.
Hasil akhirnya tidak hanya berupa tabel, tetapi juga bisa digunakan untuk menjawab pertanyaan seperti perangkat mana yang perlu diperhatikan dan bagaimana kondisi monitoring secara keseluruhan.
Praktik ini juga menjadi lanjutan dari pembelajaran sebelumnya. Jika sebelumnya saya menggunakan Python untuk melakukan EDA pada data CPU, memory, dan trafik jaringan, kali ini saya mencoba menggunakan SQL untuk mengolah data tersebut dari sisi yang berbeda.
Dari sini saya jadi lebih memahami bahwa SQL bukan hanya tentang menulis query, tetapi juga tentang bagaimana menggunakan data untuk menjawab sebuah pertanyaan dan mendapatkan informasi yang berguna.
Penulis = Devina Ghea Amanda
Mau Kuasai Analisis Data Monitoring Jaringan Menggunakan SQL Sampai Bisa Praktik Langsung?
Materi ini juga kami ajarkan langsung di kelas Edusoft Center, dibimbing mentor, sampai kamu bisa praktik nyata — bukan cuma baca teori.
Tanya Kursus via WhatsApp Lihat contoh project nyata dari siswa kami →
