Episode ini membahas pengawasan menyeluruh: memanfaatkan openvpn-status.log sebagai sumber metrik, mengekspos data ke Prometheus dengan openvpn exporter, membangun dashboard Grafana, sampai alerting untuk deteksi koneksi putus dan peringatan kedaluwarsa sertifikat.

Episode 8 memperkenalkan logging dan management interface. Sekarang saatnya menaikkan level: dari membaca log secara manual menjadi infrastruktur observability yang memberi peringatan otomatis. Kalian tidak ingin bangun di pagi hari dan baru tahu VPN mati sejak semalam.
Episode 19 ini membahas observability dan monitoring. Kalian akan belajar memakai openvpn-status.log sebagai sumber metrik terstruktur, mengeksposnya ke Prometheus dengan openvpn exporter, membangun dashboard Grafana, dan menyusun alerting untuk deteksi koneksi putus serta peringatan kedaluwarsa sertifikat.
Tujuannya: kondisi VPN yang bisa dilihat dalam satu layar, dan peringatan yang datang sebelum pengguna mengeluh — bukan sesudahnya.
File status dari episode 8 adalah tambang emas metrik. Format versi 3 menampilkan daftar client lengkap dengan byte masuk dan keluar, serta durasi koneksi:
OpenVPN CLIENT LIST
Common Name,Real Address,Bytes Received,Bytes Sent,Connected Since
arman,203.0.113.7:51000,104857600,52428800,1723456789
ROUTING TABLE
Virtual Address,Common Name,Real Address,Last Ref
10.8.0.5,arman,203.0.113.7:51000,1723456799Baris arman,203.0.113.7:51000,104857600,52428800,1723456789 adalah satu client dengan metrik traffic dan waktu koneksi. Dari baris seperti ini, setiap tool monitoring bisa menghitung jumlah client aktif, throughput, dan durasi sesi.
Agar mudah di-parse, aktifkan format status yang stabil dan hindari file status yang ditulis manual:
status /var/log/openvpn-status.log
status-version 3
status-version-txt 3
status-timeout 60status-timeout 60 membuat file status diperbarui setiap 60 detik. status-version 3 menjamin format stabil yang dikenal banyak tool. Dengan ini, exporter dan pipeline log bisa membaca data tanpa tebak-tebakan.
Prometheus menarik metrik dari endpoint HTTP yang disediakan sebuah exporter. Untuk OpenVPN, openvpn_exporter membaca file status dan mengekspos metrik seperti openvpn_active_clients, openvpn_client_bytes_received, dan openvpn_client_bytes_sent:
openvpn_exporter -openvpn.status_paths /var/log/openvpn-status.logopenvpn_exporter -openvpn.status_paths /var/log/openvpn-status.log melayani metrik di port 9176 secara default. Eksporter juga bisa membaca management interface untuk data tambahan — persis yang dibuka di episode 8.
Tambahkan target exporter ke konfigurasi Prometheus:
scrape_configs:
- job_name: openvpn
static_configs:
- targets:
- vpn1.example.com:9176
- vpn2.example.com:9176Dua target vpn1 dan vpn2 mengumpulkan metrik dari dua server sekaligus. Prometheus lalu mengevaluasi aturan alert dan menyimpan time series yang bisa dikueri di Grafana.
Grafana mengubah metrik menjadi grafik. Dashboard yang baik untuk VPN menampilkan: jumlah client aktif dari waktu ke waktu, throughput masuk dan keluar, daftar client yang terhubung, dan riwayat koneksi. Semua data ini tersedia dari metrik exporter.
Query Prometheus yang umum untuk menampilkan client aktif:
sum(openvpn_active_clients)sum(openvpn_active_clients) menjumlahkan client aktif dari semua server. Tambahkan grafik per server dengan label, dan grafik throughput dari delta byte dengan fungsi rate.
Panel Grafana bisa dibedakan per environment dengan label dari target. Anotasi bisa menandai waktu deployment atau pemeliharaan, sehingga lonjakan anomali mudah dihubungkan dengan kejadian operasional. Dashboard menjadi alat komunikasi antara tim jaringan dan tim platform.
Alert yang paling mendasar: jumlah client aktif turun drastis di luar jam normal. Ini bisa menandakan server mati atau peristiwa gangguan massal:
groups:
- name: openvpn
rules:
- alert: OpenVPNClientCountDrop
expr: |
sum(openvpn_active_clients) < 5
for: 5m
labels:
severity: warningAturan sum(openvpn_active_clients) < 5 for 5m memicu alert jika client aktif di bawah 5 selama 5 menit. Ambang dan durasi disesuaikan dengan profil organisasi — jaringan kantor kosong di akhir pekan pasti memicu alert palsu.
Sertifikat yang kedaluwarsa adalah alasan umum client gagal connect. Alerting berbasis node_exporter dan blackbox tidak bisa menangkap ini; gunakan prometheus ssl_exporter atau script yang mengekspor tanggal kedaluwarsa sertifikat server:
openssl x509 -in /etc/openvpn/server/server.crt -noout -enddateopenssl x509 -in ... -noout -enddate menampilkan tanggal akhir berlaku sertifikat. Jadikan output ini metrik Prometheus, lalu buat aturan alert yang memicu 30 hari sebelum kedaluwarsa.
Loki memudahkan alerting dari log. Contoh nyata: memantau pola error di journald dan memicu alert ketika error berulang muncul:
{job="systemd-journal"} |~ "TLS Error|Fatal error"{job="systemd-journal"} |~ "TLS Error|Fatal error" menyeleksi baris log yang memuat pola error. Dengan aturan alert di Loki atau Grafana, setiap lonjakan error langsung memberi tahu tim.
Inti yang harus dibawa pulang:
openvpn-status.log versi 3 adalah sumber metrik yang stabil dan terstruktur.openvpn_exporter mengekspos metrik status ke Prometheus.Di episode 20 selanjutnya kita akan membahas OpenVPN Access Server dan CloudConnexa — mengelola VPN lewat web UI dengan integrasi LDAP, RADIUS, dan SAML SSO, memakai CloudConnexa untuk zero-trust network access, sampai membandingkan kapan memilih self-hosted dan kapan memilih layanan terkelola. Setelah episode ini, kalian tahu opsi komersial di sekitar OpenVPN.