Membuat sendiri sumber data untuk MRTG

Biasanya data yang digunakan oleh MRTG berasal dari SNMP server. Namun ternyata kita juga bisa menyiapkan sendiri data yang kemudian akan digunakan oleh MRTG.

Grafik MRTG di atas adalah jumlah rata-rata koneksi HTTP yang terbangun ke Kambing. MRTG mengambil data ini setiap lima menit dari skrip yang saya siapkan sendiri. Bagaimana cara menghubungkannya?

Pertama2, siapkan skrip yang akan menghasilkan dua buah data. Dua data ini akan menjadi data input dan output bagi MRTG. Keluaran harus ditulis dalam format berikut.

input
output

komentar

Baris pertama dan kedua masing-masing berisi sebuah angka yang menggambarkan besar masukan dan keluaran data yang ingin dipantau. Baris ketiga adalah sebuah baris kosong dan baris terakhir berisi komentar.

Tuk mendapatkan jumlah koneksi HTTP dimana Kambing menggunakan nginx sebagai HTTP servernya, saya hanya menggunakan informasi yang diberikan oleh aplikasi netstat. Saya ambil seluruh baris yang menyatakan koneksi terhubung ke port 80 dan hitung jumlah baris tersebut. Kira2 skripnya adalah sebagai berikut.

#!/bin/sh

NUM=`netstat -ant | grep :80 | grep ESTABLISHED | wc -l`

echo $NUM
echo $NUM
echo
echo Established HTTP Connections

Sebenarnya saya hanya butuh sebuah angka yang menggambarkan jumlah koneksi. Berhubung MRTG meminta dua angka, ya sudah saya tuliskan angka yang sama saja.

Lalu untuk konfigurasi MRTGnya sendiri, tuliskan path skrip tadi dalam isian Target. Path ditulis di dalam sepasang backtick. Contoh:

Target[kambing.http]: `/path/ke/mrtg-num-http.sh`

Simpan konfigurasi MRTG dan tunggu beberapa waktu sampai MRTG mendapatkan data yang cukup untuk mulai membuat grafik. Oh iya, jangan lupa mengatur agar skrip tadi bisa dieksekusi.

Catatan tambahan: Saya tidak membedakan jumlah koneksi masuk dan keluar dalam skrip di atas. Agar data yang ditampilkan lebih menggambarkan kondisi asli, tentu saja perlu dibuat skrip yang lebih canggih, yang bisa mengeluarkan dua angka berbeda, yaitu jumlah koneksi masuk dan keluar. Ada yang mau membuat? =D

Referensi: http://lena.franken.de/mrtg/

Download managernya apa ya?

Saat ini log nginx kambing dipenuhi oleh baris2 seperti berikut.

a.b.c.d - - [25/Mar/2009:19:11:12 +0700]
"GET /iso/fedora/9/Fedora/i386/iso/Fedora-9-i386-DVD.iso HTTP/1.0" 206 11584
"http://kambing.ui.edu/iso/fedora/9/Fedora/i386/iso/"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7"

Yang jadi perhatian saya adalah kode respon HTTP dan besar data yang dikirim. Kode respon yang terlihat di atas adalah 206 yang berarti partial content. Kode ini akan digunakan ketika si klien meminta sebuah berkas secara parsial dan/atau tidak dari awal.

Ukuran berkas yang dikirim oleh server pada sesi HTTP tersebut hanyalah sebesar 11584 Byte. Sangat kecil sekali jika dibandingkan dengan berkas yang ingin diunduhnya, sebuah ISO DVD yang berukuran sekitar 4 GB.

Saya rasa sang pengunduh menggunakan sebuah aplikasi download manager (entah deh user agent yang tertera di situ benar atau tidak berasal dari Firefox) dan mengaturnya supaya dapat mengunduh berkas tersebut secara paralel beberapa bagian sekaligus. Menurut saya, aplikasi yang digunakan tersebut bisa dibilang bodoh karena tidak dapat menggunakan koneksi yang dibuat secara efektif dan efisien. Terlalu banyak koneksi yang dibuat dan diputus namun setiap koneksi yang terbangun tidak dimanfaatkan dengan baik.

Dann.. demi kemaslahatan bersama.. saya tutup dulu koneksi HTTP dari IP “bermasalah” tersebut =D

Log nginx: “-” 400 0 “-” “-“

Di kambing ada sejumlah (err.. sekitar 1.8% di log minggu kemarin) entry seperti berikut di log nginx-nya.

a.b.c.d - - [04/Mar/2009:00:14:01 +0700] "-" 400 0 "-" "-"

Kira2 entry tsb bisa dibaca sebagai request tidak benar (400) dan si server tidak mengirim respon apa2 (0 byte). Tidak ada informasi lain tertulis di sana.

Setelah diselidiki, salah satu penyebabnya adalah adanya koneksi HTTP yang masuk yang langsung diputuskan sehingga si server tidak dapat memberikan respon apa2.

Salah satu “pelakunya” adalah (sepertinya) sebuah bot search engine. Kira2 mengapa ya si bot2 itu berperilaku seperti itu? atau ada masalah dg nginx? humm..