Indosat Yellow dan Menghitung Konsumsi Bandwidth Menggunakan vnStat

Indosat Yellow

Bermula dari gencarnya promo Indosat Yellow, membuat saya akhirnya tidak tahan untuk menjajal mendaftar paket Rp1.000/1GB/hari. Namun malang tiada yang tahu, terlebih kuasa menolak, ternyata hasilnya bukan untung malah buntung. Alih-alih hanya keluar ongkos Rp1.000, saya malah kebobolan pulsa reguler senilai 14 ribuan.
Penyebabnya karena saya tidak awas jika paket Yellow telah berakhir, in my defense, paket Yellow-nya tidak berjalan selama 24 sebagaimana pesan yang didapat ketika mendaftar, melainkan hanya sekitar 23 jam saja. Jadi, 14 ribu tersebut termakan karena dalam 30-60 terakhir ternyata saya telah tidak terdaftar dalam paket Yellow dan menggunakan tarif reguler.

Mencoba mengeluh kepada Indosat adalah lumayan rumit, karena nomor 185 tidak bisa dihubungi dan Twitter agak lambat dalam menanggapi. Mungkin karena saya memang bukan pengguna fanatik Twitter, jadinya interaksi hanya terjadi ketika saya "menyempatkan" menggunakan Twitter.
Ringkasnya, niat melanggan paket internet murah, malah membayar 1400% dari yang diidamkan.

Lalu, apakah saya kapok?
Mulanya iya, namun rupanya hanya kapok sambal. Seribu perak per giga ini begitu menggoda, dan setelah kian dipikirkan, mungkin baiknya kembali mencoba mendaftar dan berusaha melakukan pencegahan agar kejadian lalu tidak lagi terulang.
Dari banyak membaca mengenai Indosat Yellow di internet, saya berketapan hati untuk kembali mendaftar dengan memerhatikan beberapa poin berikut:

  1. Anggap durasi harian paket hanya selama 22-23 jam, bukan 24 jam.
  2. Jangan menggunakan paket pada 2 jam terakhir.
  3. Jaga pemakaian kuota maksimal hingga 800MB.

Poin 1 dan 2 mudah saja untuk dilaksanakan, karena ia dasarnya hanya bergantung pada disiplin pemakaian. Namun untuk poin ketiga, disiplin saja tidak cukup karena kita perlu untuk mengetahui pemakaian kuota terkini.

Lalu, bagaimana kita mengetahui berapa pemakaian jatah paket Yellow?
Memang bisa dengan mengirim pesan USAGE ke 363, tapi masa iya akan mengirim permintaan tersebut secara terus-menerus.
Menggunakan aplikasi MyIM3 juga agak merepotkan, karena saya mendaftar paket Yellow untuk modem di laptop dan seringkali hape jauh dari jangkauan tangan.

Memperkenalkan vnStat.

Menghitung Konsumsi Bandwidth Menggunakan vnStat

vnstat adalah pemantau lalu-lintas jaringan berdasar konsol. Saya sendiri tidak terlalu paham soal jaringan sehingga tidak awas akan pilihan perkakas untuk memonitor lalu-lintas data dalam jaringan, dan memilih vnstat karena tiga alasan utama:

  1. Bisa diandalkan.
    Sebenarnya Modem Manager GUI yang selalu saya pakai juga memiliki fitur untuk memantau lalu-lintas data, namun sayangnya kini ia buggy; bisa mengenali perangkat keras modem dan mengirim SMS, namun tidak bisa mendeteksi apakah modem sedang online atau offline juga fitur monitoring traffic-nya kini tidak berfungsi.

  2. Bisa khusus memonitor perangkat keras tertentu.
    Saya hanya perlu untuk memonitor modem internal (Gobi 3000). Andai saja Modem Manager GUI tidak buggy, tentu ia menjadi kandidat monitor yang cocok.
    vnstat bisa mengenali seluruh perangkat jaringan dalam komputer dan bisa dikhususkan untuk hanya memonitor piranti tertentu.
    Hal ini juga yang menjadikan Gnome Monitor bukan sebagai pilihan. Meski ia bisa menampilkan riwayat jaringan, namun ia tidak bisa khusus menampilkan riwayat untuk perangkat keras tertentu.

  3. Scriptable.
    Karena sifatnya yang berdasar konsol, ia ringan digunakan, bisa diakses dari mana saja dan memungkinkan untuk dibuat skrip.

Baiklah saya kupas saja sedikit hal mengenai penggunaan vnStat untuk memonitor penggunaan bandwidth oleh modem Gobi 3000 sehingga saya bisa awas akan penggunaan kuota paket Indosat Yellow.

Yang pertama, tentu saja kita mesti memasang vnStat terlebih dahulu. Dalam Debian, vnStat terdiri atas dua paket; (1) vnstat yang tadi dibicarakan dan akan digunakan di sini, dan (2) vnstati, sebuah perkakas yang bisa membuat diagram dari keluaran vnstat.

sudo apt install vnstat

Selanjutnya, ketahui perangkat jaringan dalam komputer yang dapat dikenali oleh vnstat.

vnstat --iflist

Dalam laptop saya, perintah tersebut menghasilkan keluaran berikut:

Available interfaces: wlp3s0 lo wwp0s29u1u4 enp0s25

Sebenarnya, dengan hanya menjalankan vnstat juga kita bisa melihat perangkat jaringan apa saja yang ada dalam komputer, namun memang tampilannya agak "ramai" seperti ini:

                      rx      /      tx      /     total    /   estimated
 vboxnet1 [disabled]:
       Des '17         0 KiB  /     383 KiB  /     383 KiB
       Jan '18         0 KiB  /     218 KiB  /     218 KiB  /       0 KiB
      25/01/18         0 KiB  /       0 KiB  /       0 KiB
      26/01/18         0 KiB  /       0 KiB  /       0 KiB  /      --    

 enp0s25: Not enough data available yet.
 wwp0s29u1u4:
       Des '17         0 KiB  /       0 KiB  /       0 KiB
       Jan '18      6,44 GiB  /  337,30 MiB  /    6,77 GiB  /    8,05 GiB
     yesterday    185,20 MiB  /   25,51 MiB  /  210,71 MiB
         today      8,94 MiB  /    1,18 MiB  /   10,11 MiB  /      25 MiB

 wlp3s0:
       Des '17      4,73 GiB  /    1,20 GiB  /    5,92 GiB
       Jan '18      3,65 GiB  /    1,55 GiB  /    5,20 GiB  /    6,18 GiB
     yesterday     25,45 MiB  /    4,57 MiB  /   30,02 MiB
         today         0 KiB  /       0 KiB  /       0 KiB  /      --    

 vboxnet0: Not enough data available yet.

Sekilas, nama perangkat dalam output vnstat agak membingungkan, namun kita bisa menggunakan kaidah sederhana berikut: lihat huruf depan nama perangkatnya dan kira-kira perangkat kerasnya. Cara yang bodoh, namun cukup ampuh untuk sistem sederhana seperti laptop pribadi yang tidak terhubung ke jaringan. Misal dari output di atas, wlp3s0 adalah WiFi, wwp0s29u1u4 adalah WWAN, enp0s25 adalah ethernet, dan vboxnet adalah perangkat (virtual) jaringan dari VirtualBox.

Karena saya hanya peduli akan lalu-lintas data pada modem WWAN, saya bisa minta vnStat agar hanya menunjukkan data pada perangkat tersebut.

vnstat -i wwp0s29u1u4

Berikut hasilnya:

Database updated: Sat Jan 27 08:31:09 2018

wwp0s29u1u4 since 15/12/17

rx: 6,44 GiB tx: 337,45 MiB total: 6,77 GiB

monthly
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
Des '17 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
Jan '18 6,44 GiB | 337,45 MiB | 6,77 GiB | 25,82 kbit/s
------------------------+-------------+-------------+---------------
estimated 7,66 GiB | 400 MiB | 8,05 GiB |

daily
rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
yesterday 185,20 MiB | 25,51 MiB | 210,71 MiB | 20,46 kbit/s
today 9,66 MiB | 1,33 MiB | 10,99 MiB | 3,00 kbit/s
------------------------+-------------+-------------+---------------
estimated 25 MiB | 2 MiB | 27 MiB |

Data yang muncul adalah data yang dicatat vnStat sejak ia dipasang atau membuat database baru.
Selain berdasar data keseluruhan, kita bisa meminta rekam data per jam, hari, minggu atau bulan.
Misal untuk meminta data per jam untuk hari ini:

vnstat -i wwp0s29u1u4 -h

Yang hasilnya berupa seperti ini:

 wwp0s29u1u4                                                              08:36 
^ r
| r r
| r r
| r r
| r r
| r r
| r r
| r r
| r r
| r r rt r
-+--------------------------------------------------------------------------->
| 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 00 01 02 03 04 05 06 07 08

h rx (KiB) tx (KiB) h rx (KiB) tx (KiB) h rx (KiB) tx (KiB)
09 0 0 17 78.215 14.395 01 0 0
10 0 0 18 6.564 905 02 0 0
11 0 0 19 3.975 837 03 0 0
12 0 0 20 1.646 618 04 0 0
13 4.399 1.465 21 4.526 1.145 05 527 111
14 74.550 3.901 22 0 0 06 7.932 861
15 3.142 617 23 0 0 07 515 134
16 12.624 2.239 00 0 0 08 947 279

Atau meminta data per hari:

vnstat -i wwp0s29u1u4 -d

Yang hasilnya serupa berikut ini:

 wwp0s29u1u4  /  daily

day rx | tx | total | avg. rate
------------------------+-------------+-------------+---------------
29/12/17 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
30/12/17 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
31/12/17 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
01/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
02/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
03/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
04/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
05/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
06/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
07/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
08/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
09/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
10/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
11/01/18 131,87 MiB | 8,69 MiB | 140,57 MiB | 13,65 kbit/s
12/01/18 340,88 MiB | 23,80 MiB | 364,68 MiB | 35,41 kbit/s
13/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
14/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
15/01/18 2 KiB | 5 KiB | 7 KiB | 0,00 kbit/s
16/01/18 0 KiB | 0 KiB | 0 KiB | 0,00 kbit/s
17/01/18 10,24 MiB | 1,58 MiB | 11,82 MiB | 1,15 kbit/s
18/01/18 115,81 MiB | 16,49 MiB | 132,30 MiB | 12,85 kbit/s
19/01/18 241,72 MiB | 22,69 MiB | 264,41 MiB | 25,67 kbit/s
20/01/18 85,44 MiB | 16,92 MiB | 102,36 MiB | 9,94 kbit/s
21/01/18 126,89 MiB | 24,29 MiB | 151,18 MiB | 14,68 kbit/s
22/01/18 84,36 MiB | 19,95 MiB | 104,31 MiB | 10,13 kbit/s
23/01/18 1,29 GiB | 55,86 MiB | 1,34 GiB | 133,28 kbit/s
24/01/18 3,54 GiB | 92,73 MiB | 3,63 GiB | 361,00 kbit/s
25/01/18 318,73 MiB | 27,59 MiB | 346,32 MiB | 33,62 kbit/s
26/01/18 185,20 MiB | 25,51 MiB | 210,71 MiB | 20,46 kbit/s
27/01/18 9,69 MiB | 1,35 MiB | 11,04 MiB | 2,99 kbit/s
------------------------+-------------+-------------+---------------
estimated 25 MiB | 2 MiB | 27 MiB |

Kini saya telah tahu bagaimana menggunakan vnStat untuk mendapatkan data lalu-lintas jaringan pada modem Gobi 3000. Lalu, bagaimana menggunakan data ini untuk scripting?

Khusus scripting, kita meminta vnStat untuk menampilkan data yang ramah scripting, misal JSON:

vnstat -i wwp0s29u1u4 --json

Yang hasilnya tampak seperti ini:

{"vnstatversion":"1.17","jsonversion":"1","interfaces":[{"id":"wwp0s29u1u4","nick":"wwp0s29u1u4","created":{"date":{"year":2017,"month":12,"day":15}},"updated":{"date":{"year":2018,"month":1,"day":27},"time":{"hour":8,"minutes":46}},"traffic":{"total":{"rx":6751412,"tx":345623},"days":[{"id":0,"date":{"year":2018,"month":1,"day":27},"rx":10012,"tx":1431},{"id":1,"date":{"year":2018,"month":1,"day":26},"rx":189641,"tx":26122},{"id":2,"date":{"year":2018,"month":1,"day":25},"rx":326378,"tx":28254},{"id":3,"date":{"year":2018,"month":1,"day":24},"rx":3712431,"tx":94959},{"id":4,"date":{"year":2018,"month":1,"day":23},"rx":1348447,"tx":57199},{"id":5,"date":{"year":2018,"month":1,"day":22},"rx":86382,"tx":20433},{"id":6,"date":{"year":2018,"month":1,"day":21},"rx":129936,"tx":24877},{"id":7,"date":{"year":2018,"month":1,"day":20},"rx":87487,"tx":17330},{"id":8,"date":{"year":2018,"month":1,"day":19},"rx":247525,"tx":23233},{"id":9,"date":{"year":2018,"month":1,"day":18},"rx":118594,"tx":16881},{"id":10,"date":{"year":2018,"month":1,"day":17},"rx":10482,"tx":1622},{"id":11,"date":{"year":2018,"month":1,"day":16},"rx":0,"tx":0},{"id":12,"date":{"year":2018,"month":1,"day":15},"rx":2,"tx":5},{"id":13,"date":{"year":2018,"month":1,"day":14},"rx":0,"tx":0},{"id":14,"date":{"year":2018,"month":1,"day":13},"rx":0,"tx":0},{"id":15,"date":{"year":2018,"month":1,"day":12},"rx":349058,"tx":24375},{"id":16,"date":{"year":2018,"month":1,"day":11},"rx":135037,"tx":8902},{"id":17,"date":{"year":2018,"month":1,"day":10},"rx":0,"tx":0},{"id":18,"date":{"year":2018,"month":1,"day":9},"rx":0,"tx":0},{"id":19,"date":{"year":2018,"month":1,"day":8},"rx":0,"tx":0},{"id":20,"date":{"year":2018,"month":1,"day":7},"rx":0,"tx":0},{"id":21,"date":{"year":2018,"month":1,"day":6},"rx":0,"tx":0},{"id":22,"date":{"year":2018,"month":1,"day":5},"rx":0,"tx":0},{"id":23,"date":{"year":2018,"month":1,"day":4},"rx":0,"tx":0},{"id":24,"date":{"year":2018,"month":1,"day":3},"rx":0,"tx":0},{"id":25,"date":{"year":2018,"month":1,"day":2},"rx":0,"tx":0},{"id":26,"date":{"year":2018,"month":1,"day":1},"rx":0,"tx":0},{"id":27,"date":{"year":2017,"month":12,"day":31},"rx":0,"tx":0},{"id":28,"date":{"year":2017,"month":12,"day":30},"rx":0,"tx":0},{"id":29,"date":{"year":2017,"month":12,"day":29},"rx":0,"tx":0}],"months":[{"id":0,"date":{"year":2018,"month":1},"rx":6751412,"tx":345623},{"id":1,"date":{"year":2017,"month":12},"rx":0,"tx":0}],"tops":[{"id":0,"date":{"year":2018,"month":1,"day":24},"time":{"hour":0,"minutes":0},"rx":3712431,"tx":94959},{"id":1,"date":{"year":2018,"month":1,"day":23},"time":{"hour":0,"minutes":0},"rx":1348447,"tx":57199},{"id":2,"date":{"year":2018,"month":1,"day":12},"time":{"hour":0,"minutes":0},"rx":349058,"tx":24375},{"id":3,"date":{"year":2018,"month":1,"day":25},"time":{"hour":9,"minutes":52},"rx":326378,"tx":28254},{"id":4,"date":{"year":2018,"month":1,"day":19},"time":{"hour":7,"minutes":53},"rx":247525,"tx":23233},{"id":5,"date":{"year":2018,"month":1,"day":26},"time":{"hour":8,"minutes":7},"rx":189641,"tx":26122},{"id":6,"date":{"year":2018,"month":1,"day":21},"time":{"hour":0,"minutes":0},"rx":129936,"tx":24877},{"id":7,"date":{"year":2018,"month":1,"day":11},"time":{"hour":0,"minutes":0},"rx":135037,"tx":8902},{"id":8,"date":{"year":2018,"month":1,"day":18},"time":{"hour":0,"minutes":0},"rx":118594,"tx":16881},{"id":9,"date":{"year":2018,"month":1,"day":22},"time":{"hour":0,"minutes":0},"rx":86382,"tx":20433}],"hours":[{"id":5,"date":{"year":2018,"month":1,"day":27},"rx":527,"tx":111},{"id":6,"date":{"year":2018,"month":1,"day":27},"rx":7932,"tx":861},{"id":7,"date":{"year":2018,"month":1,"day":27},"rx":515,"tx":134},{"id":8,"date":{"year":2018,"month":1,"day":27},"rx":1038,"tx":325},{"id":9,"date":{"year":2018,"month":1,"day":26},"rx":0,"tx":0},{"id":10,"date":{"year":2018,"month":1,"day":26},"rx":0,"tx":0},{"id":11,"date":{"year":2018,"month":1,"day":26},"rx":0,"tx":0},{"id":12,"date":{"year":2018,"month":1,"day":26},"rx":0,"tx":0},{"id":13,"date":{"year":2018,"month":1,"day":26},"rx":4399,"tx":1465},{"id":14,"date":{"year":2018,"month":1,"day":26},"rx":74550,"tx":3901},{"id":15,"date":{"year":2018,"month":1,"day":26},"rx":3142,"tx":617},{"id":16,"date":{"year":2018,"month":1,"day":26},"rx":12624,"tx":2239},{"id":17,"date":{"year":2018,"month":1,"day":26},"rx":78215,"tx":14395},{"id":18,"date":{"year":2018,"month":1,"day":26},"rx":6564,"tx":905},{"id":19,"date":{"year":2018,"month":1,"day":26},"rx":3975,"tx":837},{"id":20,"date":{"year":2018,"month":1,"day":26},"rx":1646,"tx":618},{"id":21,"date":{"year":2018,"month":1,"day":26},"rx":4526,"tx":1145}]}}]}

Atau keluaran berupa CSV (atau lebih tepatnya; semi-colon separated value) dengan menggunakan parameter --oneline.

vnstat -i wwp0s29u1u4 --oneline

Yang menghasilkan keluaran:

1;wwp0s29u1u4;27/01/18;9,78 MiB;1,40 MiB;11,17 MiB;2,97 kbit/s;Jan '18;6,44 GiB;337,52 MiB;6,77 GiB;25,81 kbit/s;6,44 GiB;337,52 MiB;6,77 GiB

Data berupa JSON akan bisa kita ambil dengan menggunakan perkakas jq, dan data CSV bisa diolah dengan menggunakan awk.

Misal, sekilas pemakaian dan sisa kuota Indosat Yellow untuk hari ini bisa didapat dengan menggunakan perintah sederhana berikut:

vnstat  -i wwp0s29u1u4 --oneline | awk -F";" '{print "Digunakan:\t"$6, "\nSisa:\t\t"1024-$6" MiB"}'

Yang akan menghasilkan data seperti ini:

Digunakan:  12,50 MiB 
Sisa: 1012 MiB

Skrip yang handal tentu tidaklah sesederhana itu, misalnya jika saya mendaftar paket Yellow pada hari kemarin, tentunya vnStat dengan opsi --oneline tidak bisa digunakan karena ia hanya akan menampilkan data untuk hari ini.

Masih banyak lagi fitur dari vnStat, namun dalam artikel ini saya cukupkan hanya pada fungsi yang bisa saya gunakan untuk memonitor lalu-lintas data di modem Gobi 3000 sehingga saya bisa mengetahui berapa kuota yang telah digunakan, dan berapa lagi sisanya.
Silakan rujuk manual vnStat untuk informasi yang lebih terperinci dan mendalam.

Akhir kata, hayu kita daftar paket Yellow lagi 😃
Dengan menjaga penggunaan data dan waktu pemakaian, setidaknya telah beberapa hari pulsa reguler saya aman-aman saja.

Demikian, semoga bermanfaat.