Difference between revisions of "MRTG: Advanced"
Onnowpurbo (talk | contribs) |
Onnowpurbo (talk | contribs) |
||
(50 intermediate revisions by the same user not shown) | |||
Line 8: | Line 8: | ||
Di Ubuntu 20.04, instalasi menggunakan | Di Ubuntu 20.04, instalasi menggunakan | ||
− | apt update | + | sudo apt update |
− | apt -y install snmpd snmp libsnmp-dev | + | sudo apt -y install snmpd snmp libsnmp-dev |
+ | sudo apt -y install snmp-mibs-downloader | ||
+ | sudo sed -i 's/mibs :/# mibs :/g' /etc/snmp/snmp.conf | ||
+ | |||
+ | Cek | ||
+ | |||
+ | snmptranslate -On -IR ifTable | ||
+ | snmptranslate .1.3.6.1.2.1.2.2 | ||
Line 18: | Line 25: | ||
Kita dapat dengan mudah menemukan MIB di Linux dengan menggunakan perintah locate dan memfilter output untuk menyertakan hanya nilai dengan kata "snmp" di dalamnya. Seperti yang dapat Anda lihat dalam kasus ini, MIB terletak di direktori /usr/share/snmp/mibs: | Kita dapat dengan mudah menemukan MIB di Linux dengan menggunakan perintah locate dan memfilter output untuk menyertakan hanya nilai dengan kata "snmp" di dalamnya. Seperti yang dapat Anda lihat dalam kasus ini, MIB terletak di direktori /usr/share/snmp/mibs: | ||
+ | apt -y install mlocate | ||
locate mib | grep snmp | locate mib | grep snmp | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
... | ... | ||
+ | /usr/share/snmp/mibs/LM-SENSORS-MIB.txt | ||
+ | /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt | ||
+ | /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt | ||
+ | /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt | ||
+ | /usr/share/snmp/mibs/NET-SNMP-MIB.txt | ||
... | ... | ||
− | |||
− | |||
− | + | Konfigurasi MIB adalah text file yang bisa di search menggunakan keyword di perintah grep. Contoh berikut melihat semua OBJECT-TYPE dalam MIB, | |
− | + | grep -i OBJECT-TYPE -r /usr/share/snmp/ | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Kita bisa membaca MIB menggunakan text editor. JANGAN DIUBAH, karena mengubah akan menyebabkan SNMP gagal. MIB sangat kompelks, tapi untung-nya bagian penting biasanya di commented. | Kita bisa membaca MIB menggunakan text editor. JANGAN DIUBAH, karena mengubah akan menyebabkan SNMP gagal. MIB sangat kompelks, tapi untung-nya bagian penting biasanya di commented. | ||
Line 65: | Line 63: | ||
Setelah kita mengidentifikasi nilai MIB yang menarik untuk sistem Linux, kita dapat menggunakan perintah snmpwalk untuk melakukan polling. Sering kali digunakan text alias dalam MIB hanya mereferensikan cabang OID dan bukan OID data yang terletak di leaf terakhir dengan angka tambahan seperti ".0" atau ".1". Perintah snmpget tidak berfungsi pada branch yang memberikan error MIB variable couldn't be found. | Setelah kita mengidentifikasi nilai MIB yang menarik untuk sistem Linux, kita dapat menggunakan perintah snmpwalk untuk melakukan polling. Sering kali digunakan text alias dalam MIB hanya mereferensikan cabang OID dan bukan OID data yang terletak di leaf terakhir dengan angka tambahan seperti ".0" atau ".1". Perintah snmpget tidak berfungsi pada branch yang memberikan error MIB variable couldn't be found. | ||
+ | |||
+ | Untuk itu set | ||
+ | |||
+ | vi /etc/snmp/snmp.conf | ||
+ | |||
+ | tambah Read Only Community craz33guy (dan Restart snmpd) | ||
+ | |||
+ | rocommunity craz33guy localhost | ||
Dalam contoh di bawah ini, alias OID ssCpuRawUser tampaknya menarik, tetapi perintah snmpget gagal mendapatkan nilai. Tindak lanjut dengan perintah snmpwalk menunjukkan bahwa nilai terletak di ssCpuRawUser.0 sebagai gantinya. Snmpget tersebut kemudian berhasil mengambil data tipe "counter32" dengan nilai saat ini adalah 396271. | Dalam contoh di bawah ini, alias OID ssCpuRawUser tampaknya menarik, tetapi perintah snmpget gagal mendapatkan nilai. Tindak lanjut dengan perintah snmpwalk menunjukkan bahwa nilai terletak di ssCpuRawUser.0 sebagai gantinya. Snmpget tersebut kemudian berhasil mengambil data tipe "counter32" dengan nilai saat ini adalah 396271. | ||
− | snmpget -v1 -c craz33guy localhost ssCpuRawUser | + | # snmpget -v1 -c craz33guy localhost ssCpuRawUser |
− | |||
Error in packet | Error in packet | ||
Reason: (noSuchName) There is no such variable name in this MIB. | Reason: (noSuchName) There is no such variable name in this MIB. | ||
Failed object: UCD-SNMP-MIB::ssCpuRawUser | Failed object: UCD-SNMP-MIB::ssCpuRawUser | ||
− | |||
− | |||
− | |||
− | |||
+ | # snmpwalk -v1 -c craz33guy localhost ssCpuRawUser | ||
+ | UUCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 2849 | ||
− | snmpget -v1 -c craz33guy localhost ssCpuRawUser.0 | + | # snmpget -v1 -c craz33guy localhost ssCpuRawUser.0 |
− | + | UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 2851 | |
− | UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: | ||
Nilai MIB yang berhasil bekerja dengan snmpget adalah yang dapat kita gunakan dengan MRTG. | Nilai MIB yang berhasil bekerja dengan snmpget adalah yang dapat kita gunakan dengan MRTG. | ||
− | == | + | ==Perbedaan terminologi di MIB dan MRTG== |
− | + | Selalu ingat bahwa MRTG merujuk pada MIB counter value sebagai counter value. Ini mengacu pada MIB integer dan gauge value sebagai ukuran. Secara default, MRTG menganggap semua nilai sebagai counter. | |
− | MRTG | + | MRTG tidak memplot counter value sebagai grafik yang terus meningkat, MRTG memplot hanya berapa banyak perubahan nilai sejak siklus polling terakhir. Penggunaan CPU biasanya dilacak oleh MIB sebagai counter value; untungnya, kita dapat mengedit file konfigurasi MRTG untuk menjadikannya grafik informasi ini dalam format persentase penggunaan. |
− | + | Jenis sintaks, nama objek MIB, dan deskripsi tentang apa yang dilakukannya adalah hal terpenting yang perlu kita ketahui saat mengonfigurasi MRTG.CPU Dan Memory Monitoring MIB | |
− | |||
The UCD-SNMP-MIB MIB keeps track of a number of key performance MIB objects, including the commonly used ones in Table 23-1. | The UCD-SNMP-MIB MIB keeps track of a number of key performance MIB objects, including the commonly used ones in Table 23-1. | ||
Line 100: | Line 101: | ||
ssCpuRawUser Counter Counter | ssCpuRawUser Counter Counter | ||
− | Total CPU | + | Total penggunaan CPU oleh aplikasi yang dijalankan oleh pengguna nonprivileged sejak sistem di-boot. Menambahkan nilai pengguna, sistem, dan bagus dapat memberikan perkiraan yang baik tentang total penggunaan CPU .. |
ssCpuRawSystem Counter Counter Total CPU usage by applications run by privileged system processes since the system booted. | ssCpuRawSystem Counter Counter Total CPU usage by applications run by privileged system processes since the system booted. | ||
Line 106: | Line 107: | ||
ssCpuRawIdle Counter Counter | ssCpuRawIdle Counter Counter | ||
− | + | Persentase waktu CPU berjalan idle. Mengurangkan nilai ini dari 100 dapat memberikan perkiraan yang baik tentang total penggunaan CPU. | |
+ | |||
memAvailReal Integer Gauge Available Physical Memory Space On The Host | memAvailReal Integer Gauge Available Physical Memory Space On The Host | ||
− | == | + | ==TCP/IP Monitoring MIB== |
+ | |||
+ | MIB TCP-MIB men-track informasi koneksi data dan berisi objek tcpActiveOpens dan tcpCurrEstab yang sangat berguna. Tabel 23.2 merinci objek paling penting dalam TCP-MIB. | ||
− | |||
Table 23-2 Important Objects In The TCP-MIB MIB | Table 23-2 Important Objects In The TCP-MIB MIB | ||
− | UCD-SNMP-MIB Object Variable | + | UCD-SNMP-MIB Object Variable MIB Type MRTG Type Description |
− | tcpActiveOpens | + | tcpActiveOpens Counter Counter Measures the number of completed TCP connections. |
− | tcpCurrEstab Gauge | + | tcpCurrEstab Gauge Gauge Measures the number of TCP connections in the established state |
− | tcpInErrs Counter | + | tcpInErrs Counter Counter Total number of TCP segments with bad checksum errors |
− | == | + | ==Konfigurasi Manual MRTG File== |
− | + | Program cfgmaker MRTG membuat file konfigurasi untuk interface jaringan saja, secara bersamaan melacak dua OID: statistik input dan output data NIC. Program mrtg kemudian menggunakan file-file konfigurasi ini untuk menentukan tipe data yang akan direkam dalam direktori datanya. Program pembuat indeks juga menggunakan informasi ini untuk membuat overview, atau Summary View Web page untuk MIB OID yang kita pantau. | |
− | + | Summary View page ini hanya menampilkan statistik harian. Kita harus mengklik Summary View graphs untuk mendapatkan Detailed View page di belakangnya dengan grafik harian, mingguan, bulanan, dan tahunan. Beberapa parameter dalam file konfigurasi merujuk ke Detailed View, yang lain merujuk pada Summary View. | |
− | + | Jika kita ingin memantau pasangan OID lain, kita harus secara manual membuat file konfigurasi, karena pembuat cfgmaker tidak mengetahui adanya OID selain yang terkait dengan NIC. Program mrtg dan pembuat indeks dapat diberi fed masing-masing OID dari file konfigurasi yang disesuaikan dan akan berfungsi seperti yang diharapkan jika kita mengedit file dengan benar. | |
− | ==Parameter | + | ===Parameter Format=== |
− | MRTG | + | Parameter konfigurasi MRTG selalu diikuti oleh nama grafik yang ditutup oleh kurung siku dan titik dua. Formatnya terlihat seperti ini: |
Parameter[graph name]: value | Parameter[graph name]: value | ||
− | + | Untuk memudahkan pengeditan, parameter untuk grafik tertentu biasanya dikelompokkan bersama. Setiap grafik dapat melacak dua OIDS yang tercantum dalam parameter Target, yang biasanya ditempatkan di bagian paling atas dari daftar nama grafik. Dua nilai OID dipisahkan oleh simbol &; yang pertama adalah input OID, dan yang kedua adalah output OID. | |
− | ==Legend | + | ===Legend Parameter=== |
− | + | Pada halaman Detailed View Web, setiap grafik memiliki legend yang menunjukkan nilai maks, rata-rata, dan terkini dari statistik OID grafik. Kita dapat menggunakan parameter legendI untuk deskripsi grafik input (OID grafik pertama) dan legendO untuk grafik output (OID grafik kedua). | |
− | + | Ruang yang tersedia di bawah setiap legenda grafik sangat kecil sehingga MRTG juga memiliki parameter legend1 dan legend2 yang ditempatkan di bagian paling bawah halaman untuk memberikan rincian lebih lanjut. Parameter legend1 adalah perluasan dari legendI, dan legend2 adalah perluasan dari legendO. | |
− | + | Ylegend adalah legend untuk sumbu Y, nilai yang kita coba bandingkan. Dalam hal konfigurasi MRTG default, ini akan menjadi aliran data melalui interface dalam bit atau byte per detik. Berikut adalah contoh legenda konfigurasi MRTG default: | |
YLegend[graph1]: Bits per second | YLegend[graph1]: Bits per second | ||
Line 149: | Line 152: | ||
LegendO[graph1]: Out | LegendO[graph1]: Out | ||
− | + | Kita dapat mencegah MRTG dari mencetak legenda di bagian bawah grafik dengan membiarkan nilai legenda kosong seperti ini: | |
LegendI[graph1]: | LegendI[graph1]: | ||
− | + | Nanti kita akan belajar cara mencocokkan legenda dengan OID untuk berbagai situasi. | |
− | ==Options | + | ===Options Parameter=== |
− | + | Parameter option memberi MRTG informasi pemformatan grafik. Opsi growright memastikan data di kanan layar adalah untuk nilai grafik terkini. Ini biasanya membuat grafik lebih mudah dibaca secara intuitif. MRTG default untuk tumbuh dari kiri. | |
− | + | Opsi nopercent mencegah MRTG dari mencetak statistik gaya persentase dalam legenda di bagian bawah grafik. Opsi gauge mengingatkan MRTG pada fakta bahwa nilai-nilai grafik dari tipe gauge. Jika nilai yang kita pantau adalah dalam byte, maka Anda dapat mengonversi output menjadi bit menggunakan opsi bit. Demikian juga, kita dapat mengonversi nilai per detik ke grafik per menit menggunakan opsi perminute. Berikut adalah beberapa contoh untuk dua grafik yang berbeda: | |
options[graph1]: growright,nopercent,perminute | options[graph1]: growright,nopercent,perminute | ||
options[graph2]: gauge,bits | options[graph2]: gauge,bits | ||
− | + | Jika kita menempatkan parameter ini di bagian atas dengan label [_] ini akan diterapkan ke semua grafik yang ditentukan dalam file. Berikut contohnya. | |
options[_]: growright | options[_]: growright | ||
− | ==Title | + | ===Title Parameter=== |
− | + | Title pada Summary Page disediakan oleh parameter Title, parameter PageTop memberitahu title untuk halaman Detailed View. String PageTop harus dimulai dengan < H1 > dan diakhiri dengan < H1 >. | |
Title[graph1]: Interface eth0 | Title[graph1]: Interface eth0 | ||
− | PageTop[graph1]: < H1 >Detailed Statistics For Interface eth0 < H1 > | + | PageTop[graph1]: < H1 > Detailed Statistics For Interface eth0 < H1 > |
− | ==Scaling | + | ===Scaling Parameter=== |
− | + | Parameter MaxBytes adalah jumlah maksimum data yang akan plot MRTG pada grafik. Apa pun lebih dari ini tampaknya menghilang di tepi grafik. | |
− | MRTG | + | MRTG juga mencoba menyesuaikan grafiknya sehingga nilai terbesar yang diplot pada grafik selalu dekat ke atas. Ini bahkan jika Anda mengatur parameter MaxBytes. |
− | + | Ketika kita merencanakan nilai yang memiliki nilai maksimum yang diketahui dan kita selalu ingin memiliki nilai ini di bagian atas legenda vertikal, kita mungkin ingin mematikan penskalaan otomatis MRTG. Jika kita merencanakan persentase penggunaan CPU, dan server mencapai maksimum 60%, dengan scaling, MRTG akan memiliki plot vertikal 0% hingga 60%, sehingga puncak vertikal berada di dekat bagian atas gambar grafik. | |
− | + | Ketika scaling dimatikan, dan MaxBytes diatur ke 100, maka puncaknya akan hanya 60% dari jalan karena grafik plot dari 0% hingga 100%. Contoh ini menghilangkan scaling dari tampilan tahunan, bulanan, mingguan, dan harian pada halaman Detailed View dan memberi mereka nilai maksimum 100. | |
Unscaled[graph1]: ymwd | Unscaled[graph1]: ymwd | ||
MaxBytes[graph1]: 100 | MaxBytes[graph1]: 100 | ||
− | == | + | ==Mendefinisikan MIB Target Parameter== |
− | + | Seperti yang dinyatakan sebelumnya, MRTG selalu mencoba untuk membandingkan dua nilai OIB MIB yang ditentukan oleh parameter Target. Kita harus menentukan dua objek MIB OID, SNMP password dan alamat IP perangkat yang di query dalam parameter ini, dan pisahkan dengan karakter &: | |
Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> | Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> | ||
− | + | Nilai numerik, dalam hal ini .0, pada akhir MIB diperlukan. Contoh berikutnya menggunakan perintah SNMP untuk mengembalikan user mode CPU utilization dari Linux server. Perhatikan bagaimana .0 di tambahkan pada akhir output. | |
[root@silent mibs]# snmpwalk -v 1 -c craz33guy localhost ssCpuRawUser | [root@silent mibs]# snmpwalk -v 1 -c craz33guy localhost ssCpuRawUser | ||
Line 209: | Line 212: | ||
− | + | Jadi pada contoh di bawah ini, legend1 dan legendI menggambarkan mib-objek-1.0 dan legend2 dan legendo menjelaskan mib-object-2.0. | |
Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> | Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> | ||
− | ==Plotting | + | ==Plotting hanya Satu MIB Value== |
− | + | Jika kita ingin memplot hanya satu nilai MIB, kita bisa mengulangi target MIB dalam definisi seperti pada contoh berikut, yang plotnya hanya mib-object-1. Grafik MRTG yang dihasilkan sebenarnya menumpangkan grafik input dan output satu di atas yang lain. | |
Target[graph1]: mib-object-1.0&mib-object-1.0:<SNMP-password>@<IP-address> | Target[graph1]: mib-object-1.0&mib-object-1.0:<SNMP-password>@<IP-address> | ||
− | == | + | ==Menambahkan MIB Value menjadi satu untuk sebuah Grafik== |
− | + | Kita bisa menggunakan tanda plus di antara pasangan nilai objek MIB untuk menambahkannya menjadi satu. Contoh berikutnya menambahkan mib-objek-1.0 dan mib-objek-3.0 untuk satu grafik dan menambahkan mib-objek-2.0 dan mib-objek-4.0 untuk yang lainnya. | |
Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> + mib-object-3.0&mib-object-4.0:<SNMP-password>@<IP-address> | Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> + mib-object-3.0&mib-object-4.0:<SNMP-password>@<IP-address> | ||
− | + | Kita dapat menggunakan operator matematika lainnya, seperti kurang (-), kali (*), dan bagi (%). Tanda kurung kiri dan kanan juga valid. Harus ada spasi sebelum dan sesudah semua operator ini agar MRTG berfungsi dengan benar. Jika tidak, kita akan mendapatkan grafik berbayang yang aneh. | |
==Sample Target: Total CPU Usage== | ==Sample Target: Total CPU Usage== | ||
− | Linux | + | Penggunaan CPU Linux ditempati oleh proses sistem, user mode process, dan beberapa proses berjalan dalam nice mode. Contoh ini mengumpulkan semuanya dalam satu plot. |
Target[graph1]:ssCpuRawUser.0&ssCpuRawUser.0:<SNMP-password>@<IP-address> + ssCpuRawSystem.0&ssCpuRawSystem.0:<SNMP-password>@<IP-address> + ssCpuRawNice.0&ssCpuRawNice.0:<SNMP-password>@<IP-address> | Target[graph1]:ssCpuRawUser.0&ssCpuRawUser.0:<SNMP-password>@<IP-address> + ssCpuRawSystem.0&ssCpuRawSystem.0:<SNMP-password>@<IP-address> + ssCpuRawNice.0&ssCpuRawNice.0:<SNMP-password>@<IP-address> | ||
− | + | Pastikan untuk menempatkan perintah ini pada satu baris | |
==Sample Target: Memory Usage== | ==Sample Target: Memory Usage== | ||
− | + | Berikut ini adalah contoh untuk merencanakan jumlah memori bebas versus total RAM yang terpasang di server. Perhatikan bahwa ini adalah gauge type variable. | |
Target[graph1]: memAvailReal.0&memTotalReal.0:<SNMP-password>@<IP-address> | Target[graph1]: memAvailReal.0&memTotalReal.0:<SNMP-password>@<IP-address> | ||
options[graph1]: nopercent,growright,gauge | options[graph1]: nopercent,growright,gauge | ||
− | + | Selanjutnya, plot persentase memori yang tersedia. Perhatikan bagaimana space wajib memisahkan operator matematika dari elemen target berikutnya. | |
Target[graph1]: ( memAvailReal.0& memAvailReal.0:<SNMP-password>@<IP-Address> ) * 100 / ( memTotalReal.0&memTotalReal.0:<SNMP-password>@<IP-Address> ) | Target[graph1]: ( memAvailReal.0& memAvailReal.0:<SNMP-password>@<IP-Address> ) * 100 / ( memTotalReal.0&memTotalReal.0:<SNMP-password>@<IP-Address> ) | ||
Line 249: | Line 252: | ||
==Sample Target: Newly Created Connections== | ==Sample Target: Newly Created Connections== | ||
− | HTTP traffic | + | HTTP traffic yang disebabkan oleh Web browsing biasanya terdiri dari banyak koneksi yang sangat singkat. Objek MIB tcpPassiveOpens men-track koneksi yang baru dibuat dan cocok untuk jenis transfer data ini. Objek MIB tcpActiveOpens memonitor koneksi baru yang berasal dari server. Di situs Web yang lebih kecil kita mungkin ingin menggunakan opsi perminute untuk membuat grafik lebih bermakna. |
Target[graph1]: tcpPassiveOpens.0& tcpPassiveOpens.0:<SNMP-password>@<IP-address> | Target[graph1]: tcpPassiveOpens.0& tcpPassiveOpens.0:<SNMP-password>@<IP-address> | ||
Line 257: | Line 260: | ||
==Sample Target: Total TCP Established Connections== | ==Sample Target: Total TCP Established Connections== | ||
− | + | Protokol lain seperti FTP dan SSH membuat koneksi yang lebih lama sementara orang mengunduh file besar atau tetap masuk ke server. Objek MIB tcpCurrEstab mengukur jumlah total koneksi dalam established state dan adalah gauge value. | |
Target[graph1]: tcpCurrEstab.0&tcpCurrEstab.0:<SNMP-password>@<IP-address> | Target[graph1]: tcpCurrEstab.0&tcpCurrEstab.0:<SNMP-password>@<IP-address> | ||
Line 265: | Line 268: | ||
==Sample Target: Disk Partition Usage== | ==Sample Target: Disk Partition Usage== | ||
− | + | Pada contoh ini, kita akan memonitor partisi /var dan /home di system. | |
− | 1) | + | 1) Pertama-tama gunakan perintah df -k untuk melihat daftar partisi yang digunakan. |
[root@bigboy tmp]# df -k | [root@bigboy tmp]# df -k | ||
Line 279: | Line 282: | ||
[root@bigboy tmp]# | [root@bigboy tmp]# | ||
− | 2) | + | 2) Tambahkan dua (2) entry di snmpd.conf. |
disk /home | disk /home | ||
disk /var | disk /var | ||
− | 3) Restart | + | 3) Restart SNMP daemon untuk reload value. |
[root@bigboy tmp]# systemctl restart snmpd.service | [root@bigboy tmp]# systemctl restart snmpd.service | ||
− | 4) | + | 4) Gunakan snmpwalk command untuk query dskPercent MIB. Object dskPercent.1 refer ke first disk entry di snmpd.conf (/home), dskPercent.2 refer ke second disk entry (/var). |
[root@bigboy tmp]# snmpwalk -v 1 -c craz33guy localhost dskPercent.1 | [root@bigboy tmp]# snmpwalk -v 1 -c craz33guy localhost dskPercent.1 | ||
Line 296: | Line 299: | ||
[root@bigboy tmp]# | [root@bigboy tmp]# | ||
− | + | Maka MRTG target untuk gauge MIB object berikit akan tampak seperti: | |
Target[graph1]: dskPercent.1& dskPercent.1:<SNMP-password>@<IP-address> | Target[graph1]: dskPercent.1& dskPercent.1:<SNMP-password>@<IP-address> | ||
options[graph1]: growright,gauge | options[graph1]: growright,gauge | ||
− | == | + | ==Mendefinisikan Global Variable== |
− | + | Kita harus memastikan MRTG tahu di mana MIB yang kita gunakan berada. Lokasi default yang digunakan MRTG mungkin tidak valid. Tentukan lokasi mereka dengan parameter LoadMIBs global. Kita juga harus menentukan di mana file HTML akan berada; contoh menentukan direktori default MRTG HTML. | |
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt, /usr/share/snmp/mibs/TCP-MIB.txt | LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt, /usr/share/snmp/mibs/TCP-MIB.txt | ||
Line 310: | Line 313: | ||
==Implementing Advanced Server Monitoring== | ==Implementing Advanced Server Monitoring== | ||
− | + | Kita sekarang dapat menggabungkan semua yang telah kita pelajari untuk membuat file konfigurasi yang memonitor semua variabel ini, dan kemudian kita dapat mengintegrasikannya ke dalam konfigurasi MRTG yang ada. | |
− | == | + | ==Contoh Konfigurasi Lengkap== |
− | + | Berikut adalah contoh file konfigurasi yang digunakan untuk permintaan server localhost untuk informasi CPU, memori, disk, dan koneksi TCP. | |
# | # | ||
Line 432: | Line 435: | ||
Unscaled[server.disk]: ymwd | Unscaled[server.disk]: ymwd | ||
− | == | + | ==Test Konfigurasi== |
− | |||
− | Restart SNMP | + | Restart SNMP untuk memastikan perintah monitoring disk dalam file snmpd.conf diaktifkan. Jalankan perintah /usr/bin/mrtg diikuti dengan nama file konfigurasi tiga kali. Jika semuanya berjalan dengan baik, MRTG hanya akan complain tentang file database tertentu tidak ada. MRTG kemudian membuat file tersebut. Dengan menjalankan ketiga, semua file dibuat dan MRTG harusnya beroperasi dengan lancar. |
[root@bigboy tmp]# systemctl restart snmpd.service | [root@bigboy tmp]# systemctl restart snmpd.service | ||
[root@bigboy tmp]# env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg | [root@bigboy tmp]# env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg | ||
− | == | + | ==Create MRTG Index Page yang Baru== |
− | + | Gunakan indexmaker command dan include original MRTG configuration file (/etc/mrtg/mrtg.cfg) plus yang baru kita buat (/etc/mrtg/server-stats.cfg). | |
[root@bigboy tmp]# indexmaker --output=/var/www/mrtg/index.html \ | [root@bigboy tmp]# indexmaker --output=/var/www/mrtg/index.html \ | ||
/etc/mrtg/mrtg.cfg /etc/mrtg/server-stats.cfg | /etc/mrtg/mrtg.cfg /etc/mrtg/server-stats.cfg | ||
− | == | + | ==Konfigurasi cron untuk menggunakan MRTG File yang baru== |
− | + | Langkah terakhir adalah untuk memastikan bahwa MRTG di konfigurasi untuk poll server setiap lima (5) menggunakan file konfigurasi yang baru. Tambahkan line di file /etc/cron.d/mrtg | |
0-59/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg | 0-59/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg | ||
− | + | Beberapa versi Linux (seperti Ubuntu) kita perlu file /etc/crontab. Restart crond agar melakukan polling tersebut, | |
[root@bigboy tmp]# systemctl restart crond.service | [root@bigboy tmp]# systemctl restart crond.service | ||
− | ==Monitoring Non Linux MIB | + | ==Monitoring Non Linux MIB Value== |
− | + | Semua MIB yang disebutkan sejauh ini adalah untuk sistem Linux; jenis sistem lain akan membutuhkan MIB tambahan yang pemasangannya mungkin tidak jelas dalam panduan pengguna atau tidak tersedia. Dalam kasus seperti itu, kita harus mengetahui nilai pasti dari OID. | |
− | |||
− | + | ===Skenario=== | |
− | + | Bayangkan anda sebagai sebuah perusahaan kecil telah membeli Cisco second untuk menghubungkan server situs Web-nya ke Internet. Konfigurasi dasar MRTG menyediakan statistik bandwidth data, tetapi anda ingin mengukur beban CPU yang disebabkan oleh traffic di perangkat. Mengunduh MIB dari Cisco dan menggunakannya dengan perintah snmpget tidak berhasil. Anda tidak tahu apa yang harus dilakukan selanjutnya. | |
− | + | ||
+ | ===Find The OIDs=== | ||
+ | |||
+ | Ketika MIB value gagal, yang terbaik adalah mencoba untuk menemukan nilai OID yang tepat. Seperti kebanyakan produsen peralatan jaringan, Cisco memiliki situs FTP tempat kita dapat mengunduh MIB dan OID. File SNMP untuk perangkat Cisco dapat ditemukan di ftp.cisco.com di direktori /pub/mibs; OID ada di direktori oid di bawahnya. | ||
+ | |||
+ | Setelah melihat semua file OID, kita memutuskan bahwa file CISCO-PROCESS-MIB.oid akan berisi nilai yang diperlukan dan menemukan entri ini di dalamnya. | ||
"cpmCPUTotalPhysicalIndex" "1.3.6.1.4.1.9.9.109.1.1.1.1.2" | "cpmCPUTotalPhysicalIndex" "1.3.6.1.4.1.9.9.109.1.1.1.1.2" | ||
Line 477: | Line 483: | ||
"cpmCPUTotal5minRev" "1.3.6.1.4.1.9.9.109.1.1.1.1.8" | "cpmCPUTotal5minRev" "1.3.6.1.4.1.9.9.109.1.1.1.1.8" | ||
− | == | + | ===Test OID=== |
− | + | Seperti yang kita lihat, semua OID adalah bagian dari pohon yang sama dimulai dengan 1.3.6.1.4.1.9.9.109.1.1.1.1.1. OID yang disediakan mungkin tidak lengkap, jadi yang terbaik adalah menggunakan perintah snmpwalk untuk mencoba mendapatkan semua nilai di bawah root ini terlebih dahulu. | |
[root@bigboy tmp]# snmpwalk -v1 -c craz33guy cisco-switch 1.3.6.1.4.1..9.9.109.1.1.1.1 | [root@bigboy tmp]# snmpwalk -v1 -c craz33guy cisco-switch 1.3.6.1.4.1..9.9.109.1.1.1.1 | ||
Line 488: | Line 494: | ||
[root@bigboy tmp]# | [root@bigboy tmp]# | ||
− | + | Meskipun tercantum dalam file OID, 1.1.1.1.6, 1.1.1.1.7, dan 1.1.1.1.8 tidak di support. Perhatikan juga bagaimana SNMP telah menentukan bahwa bagian pertama dari nilai OID (1.3.6.1.4.1) dalam file OID asli di mapping ke kata "perusahaan". | |
Next, you can use one the snmpget command to set only one of the OID values returned by snmpwalk. | Next, you can use one the snmpget command to set only one of the OID values returned by snmpwalk. | ||
Line 499: | Line 505: | ||
Success! Now you can use this OID value, enterprises.9.9.109.1.1.1.1.5.1, for your MRTG queries. | Success! Now you can use this OID value, enterprises.9.9.109.1.1.1.1.5.1, for your MRTG queries. | ||
− | == | + | ===Percepat MRTG dengan RRDtool=== |
− | MRTG | + | MRTG adalah program yang sangat berguna tetapi memiliki keterbatasan. Semua grafik dan halaman web diciptakan kembali setiap kali sebuah perangkat disurvei. Ini berpotensi membebani server MRTG terutama jika kita memiliki banyak perangkat yang dipantau dan grafik membutuhkan lebih dari lima menit untuk dibuat. RRDtool adalah aplikasi yang ditulis oleh pencipta MRTG yang dapat menyimpan data tujuan umum, tetapi menghasilkan grafik sesuai permintaan. Mengintegrasikan MRTG dengan RRDtool dapat memiliki manfaat kinerja yang sangat nyata. Contoh berikut akan menunjukkan kepada kita cara menerapkan solusi tujuan umum dengan cepat. |
− | == | + | ===Scenario=== |
− | + | Penggunaan RRDtool diperlukan untuk mengurangi beban pada server pemantauan yang telah mengalami kinerja yang sangat lamban karena jumlah grafik MRTG yang harus diregenerasi setiap siklus pemungutan suara. | |
− | * | + | * Karena keterbatasan ruang, database RRD perlu ditempatkan di partisi /var. |
− | * | + | * Server memiliki konfigurasi Apache default dengan file CGI yang diperlukan untuk konten yang dihasilkan secara dinamis yang berada di direktori /var/www/cgi-bin. |
− | * | + | * Diperlukan skrip CGI yang akan membaca data MRTG baru dalam format RRDtool. |
− | * | + | * File konfigurasi MRTG adalah /etc/mrtg/mrtg.cfg. |
− | == | + | ===Install RRDtool=== |
− | + | File modul RRDtool dan RRDtool PERL dapat diunduh dari situs webnya di http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/, tetapi instalasi bisa rumit karena program instalasi mungkin mencari library pendukung tertentu di direktori yang salah. | |
− | + | Untungnya paket rrdtool dan rrdtool-perl prasyarat kini hadir sebagai bagian dari sebagian besar distribusi Linux. Untuk detail lebih lanjut tentang menginstal paket. | |
− | + | ===Menyimpan Data MRTG dalam Format RRDtool=== | |
− | |||
This phase of the integration process can be done in a few minutes, but the steps can be tricky: | This phase of the integration process can be done in a few minutes, but the steps can be tricky: | ||
− | + | The first step is to add some new options to your cfgmaker command. The first indicates that MRTG should only store rrdtool formatted data, and the second defines the /var/mrtg directory in which it should be stored. For added security, the directory should be external to your web server's document root. | |
--global 'LogFormat: rrdtool' --global "workdir: /var/mrtg" --global 'IconDir: /mrtg' | --global 'LogFormat: rrdtool' --global "workdir: /var/mrtg" --global 'IconDir: /mrtg' | ||
− | + | Finally, you should also specify an icon directory which specifies the location of all miscellaneous MRTG web page icons. The RRD web interface script we'll install later uses an incorrect location. The icon directory /mrtg is actually a partial URL location. In this Fedora scenario we are using the default Apache configuration which locates the MRTG icon files in the /var/www/mrtg directory. If you are using a non default Apache MRTG configuration or are using other Linux distributions or versions you may have to copy the icons to the custom directory in which the MRTG PNG format icon files are located. | |
− | + | The cfgmaker program is simple to use and is covered in in Chapter 22, "Monitoring Server Performance". | |
− | + | The next step is to create the data repository directory /var/mrtg and make it be owned by the apache user and process that runs the default Linux web server application. | |
[root@bigboy tmp]# mkdir /var/mrtg | [root@bigboy tmp]# mkdir /var/mrtg | ||
Line 537: | Line 542: | ||
[root@bigboy tmp]# | [root@bigboy tmp]# | ||
− | + | Note: If you are using SELinux you'll have to change the context of this directory to match that of the /var/www/html directory so that the apache process will be able to read the database files when your CGI script needs them. These commands compare the contexts of the both directories and apply the correct set to /var/mrtg. | |
− | + | Please refer to Chapter 20, " The Apache Web Server" for more details on file contexts with Apache. | |
[root@bigboy tmp]# ls -alZ /var/www | grep html | [root@bigboy tmp]# ls -alZ /var/www | grep html | ||
Line 548: | Line 553: | ||
[root@bigboy tmp]# | [root@bigboy tmp]# | ||
− | + | We now need to test that the RRD files are being created correctly. Run MRTG using the /etc/mrtg/mrtg.cfg file as the source configuration file then test to see if the contents of the /var/mrtg directory have changed. Success! | |
[root@bigboy tmp]# ls /var/mrtg/ | [root@bigboy tmp]# ls /var/mrtg/ | ||
Line 562: | Line 567: | ||
Download the script using wget. The site lists several versions; make sure you get the latest one. | Download the script using wget. The site lists several versions; make sure you get the latest one. | ||
− | [root@bigboy tmp]# wget ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz | + | [root@bigboy tmp]# wget ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz |
− | --12:42:12-- ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz | + | --12:42:12-- ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz |
− | + | => `mrtg-rrd-0.7.tar.gz' | |
− | Resolving ftp.linux.cz... 147.251.48.205 | + | Resolving ftp.linux.cz... 147.251.48.205 |
− | Connecting to ftp.linux.cz|147.251.48.205|:21... connected. | + | Connecting to ftp.linux.cz|147.251.48.205|:21... connected. |
− | Logging in as anonymous ... Logged in! | + | Logging in as anonymous ... Logged in! |
− | ... | + | ... |
− | ... | + | ... |
− | ... | + | ... |
− | 15:24:50 (53.53 KB/s) - `mrtg-rrd-0.7.tar.gz' saved [20863] | + | 15:24:50 (53.53 KB/s) - `mrtg-rrd-0.7.tar.gz' saved [20863] |
− | [root@bigboy tmp]# ls | + | [root@bigboy tmp]# ls |
− | mrtg-rrd-0.7.tar.gz | + | mrtg-rrd-0.7.tar.gz |
− | [root@bigboy tmp]# | + | [root@bigboy tmp]# |
Extract the contents of the tar file. | Extract the contents of the tar file. | ||
− | [root@bigboy tmp]# tar -xzvf mrtg-rrd-0.7.tar.gz | + | [root@bigboy tmp]# tar -xzvf mrtg-rrd-0.7.tar.gz |
− | mrtg-rrd-0.7/ | + | mrtg-rrd-0.7/ |
− | mrtg-rrd-0.7/COPYING | + | mrtg-rrd-0.7/COPYING |
− | mrtg-rrd-0.7/FAQ | + | mrtg-rrd-0.7/FAQ |
− | mrtg-rrd-0.7/TODO | + | mrtg-rrd-0.7/TODO |
− | mrtg-rrd-0.7/Makefile | + | mrtg-rrd-0.7/Makefile |
− | mrtg-rrd-0.7/mrtg-rrd.cgi | + | mrtg-rrd-0.7/mrtg-rrd.cgi |
− | mrtg-rrd-0.7/ChangeLog | + | mrtg-rrd-0.7/ChangeLog |
− | [root@bigboy tmp]# | + | [root@bigboy tmp]# |
Create the /var/www/cgi-bin/mrtg directory and copy the mrtg-rrd.cgi file to it. | Create the /var/www/cgi-bin/mrtg directory and copy the mrtg-rrd.cgi file to it. | ||
− | [root@bigboy tmp]# mkdir -p /var/www/cgi-bin/mrtg | + | [root@bigboy tmp]# mkdir -p /var/www/cgi-bin/mrtg |
− | [root@bigboy tmp]# cp mrtg-rrd-0.7/mrtg-rrd.cgi /var/www/cgi-bin/mrtg/ | + | [root@bigboy tmp]# cp mrtg-rrd-0.7/mrtg-rrd.cgi /var/www/cgi-bin/mrtg/ |
− | [root@bigboy tmp]# | + | [root@bigboy tmp]# |
Edit the mrtg-rrd.cgi file and make it refer to the /etc/mrtg/mrtg.cfg file for its configuration details, or you can specify all the .cfg files in your /etc/mrtg directory. | Edit the mrtg-rrd.cgi file and make it refer to the /etc/mrtg/mrtg.cfg file for its configuration details, or you can specify all the .cfg files in your /etc/mrtg directory. | ||
− | # | + | # |
− | # File: mrtg-rrd.cgi (Single File) | + | # File: mrtg-rrd.cgi (Single File) |
− | # | + | # |
+ | |||
+ | # EDIT THIS to reflect all your MRTG config files | ||
+ | BEGIN { @config_files = qw(/etc/mrtg/mrtg.cfg); } | ||
− | + | # | |
− | + | # File: mrtg-rrd.cgi (multipl .cfg files) | |
− | + | # | |
− | # | ||
− | # File: mrtg-rrd.cgi (multipl .cfg files) | ||
− | # | ||
− | # EDIT THIS to reflect all your MRTG config files | + | # EDIT THIS to reflect all your MRTG config files |
− | BEGIN { @config_files = </etc/mrtg/*.cfg>; } | + | BEGIN { @config_files = </etc/mrtg/*.cfg>; } |
You should now be able to access your MRTG RRD graphs by visiting this URL: | You should now be able to access your MRTG RRD graphs by visiting this URL: | ||
− | http://www.my-web-site.org/cgi-bin/mrtg/mrtg-rrd.cgi | + | http://www.my-web-site.org/cgi-bin/mrtg/mrtg-rrd.cgi |
Line 637: | Line 642: | ||
Errors in the /var/log/httpd/errorlog file referring to files or directories that don't exist can be caused by an incorrect IconDir statement in the MRTG configuration file. | Errors in the /var/log/httpd/errorlog file referring to files or directories that don't exist can be caused by an incorrect IconDir statement in the MRTG configuration file. | ||
− | [Wed Jan 04 15:42:13 2006] [error] [client 192.168.1.102] File does not exist: /var/www/html/var, | + | [Wed Jan 04 15:42:13 2006] [error] [client 192.168.1.102] File does not exist: /var/www/html/var, |
− | referer: http://bigboy/cgi-bin/mrtg/mrtg-rrd.cgi/ | + | referer: http://bigboy/cgi-bin/mrtg/mrtg-rrd.cgi/ |
− | [Wed Jan 04 15:45:46 2006] [error] [client 192.168.1.102] script not found or unable to stat: | + | [Wed Jan 04 15:45:46 2006] [error] [client 192.168.1.102] script not found or unable to stat: |
− | + | /var/www/cgi-bin/mrtg/mrtg-l.png, referer: http://bigboy/cgi-bin/mrtg/mrtg-rrd.cgi/ | |
Errors caused by not installing the pre-requisite RRD RPM modules rrdtool, perl-RRD-Simple and rrdtool-perl. | Errors caused by not installing the pre-requisite RRD RPM modules rrdtool, perl-RRD-Simple and rrdtool-perl. | ||
Line 650: | Line 655: | ||
Conclusion | Conclusion | ||
− | Using the guidelines in this chapter you should be able to graph most SNMP MIB values available on any type of device. MRTG is an excellent, flexible monitoring tool and should be considered as a part of any systems administrator's server management plans. | + | Using the guidelines in this chapter you should be able to graph most SNMP MIB values available on any type of device. MRTG is an excellent, flexible monitoring tool and should be considered as a part of any systems administrator's server management plans. |
− | |||
− | |||
− | |||
==Referensi== | ==Referensi== |
Latest revision as of 04:29, 30 May 2020
Dalam banyak hal menggunakan basic configuration MRTG untuk memantau volume lalu lintas jaringan ke server saja tidak cukup. Kita mungkin juga ingin melihat grafik penggunaan CPU, disk, dan memori. Bagian ini menjelaskan cara menemukan nilai yang ingin dipantau dalam file SNMP MIB dan kemudian bagaimana menggunakan informasi ini untuk mengonfigurasi MRTG.
Dalam bagian ini contoh yang digunakan mengasumsikan SNMP Read Only string adalah craz33guy dan paket snmpd snmp libsnmp-dev di Ubuntu atau paket net-snmp-utils RPM di Fedora.
Di Ubuntu 20.04, instalasi menggunakan
sudo apt update sudo apt -y install snmpd snmp libsnmp-dev sudo apt -y install snmp-mibs-downloader sudo sed -i 's/mibs :/# mibs :/g' /etc/snmp/snmp.conf
Cek
snmptranslate -On -IR ifTable snmptranslate .1.3.6.1.2.1.2.2
Mencari dan Melihat isi MIB
Berada di memori, MIB adalah struktur data yang terus diperbarui melalui daemon SNMP. File text konfigurasi MIB terletak di hard disk dan dimuat ke dalam memori setiap kali SNMP restart.
Kita dapat dengan mudah menemukan MIB di Linux dengan menggunakan perintah locate dan memfilter output untuk menyertakan hanya nilai dengan kata "snmp" di dalamnya. Seperti yang dapat Anda lihat dalam kasus ini, MIB terletak di direktori /usr/share/snmp/mibs:
apt -y install mlocate locate mib | grep snmp
... /usr/share/snmp/mibs/LM-SENSORS-MIB.txt /usr/share/snmp/mibs/NET-SNMP-AGENT-MIB.txt /usr/share/snmp/mibs/NET-SNMP-EXAMPLES-MIB.txt /usr/share/snmp/mibs/NET-SNMP-EXTEND-MIB.txt /usr/share/snmp/mibs/NET-SNMP-MIB.txt ...
Konfigurasi MIB adalah text file yang bisa di search menggunakan keyword di perintah grep. Contoh berikut melihat semua OBJECT-TYPE dalam MIB,
grep -i OBJECT-TYPE -r /usr/share/snmp/
Kita bisa membaca MIB menggunakan text editor. JANGAN DIUBAH, karena mengubah akan menyebabkan SNMP gagal. MIB sangat kompelks, tapi untung-nya bagian penting biasanya di commented.
Setiap nilai yang dilacak dalam MIB disebut object dan sering disebut dengan Object ID atau OID. Dalam cuplikan file RFC1213-MIB.txt ini, kita dapat melihat bahwa dengan meminta objek tcpActiveOpens mengembalikan jumlah koneksi TCP terbuka yang aktif ke server. Field SYNTAX menunjukkan bahwa ini adalah counter value.
MIB biasanya melacak dua jenis nilai. Counter Value digunakan untuk nilai yang terus meningkat seiring berjalannya waktu, seperti jumlah paket yang melewati NIC atau jumlah waktu sibuk CPU sejak waktu boot. Nilai Integer berubah instant by instant dan berguna untuk melacak statistik seperti jumlah memori yang sedang digunakan.
tcpActiveOpens OBJECT-TYPE SYNTAX Counter ACCESS read-only STATUS mandatory DESCRIPTION "The number of times TCP connections have made a direct transition to the SYN-SENT state from the CLOSED state." ::= { tcp 5 }
Kita perlu mengeksplorasi perbedaan antara terminologi SNMP dan MRTG lebih terinci nanti. Memahami mereka akan menjadi penting dalam memahami bagaimana menggunakan MRTG untuk track nilai MIB.
Test MIB Value
Setelah kita mengidentifikasi nilai MIB yang menarik untuk sistem Linux, kita dapat menggunakan perintah snmpwalk untuk melakukan polling. Sering kali digunakan text alias dalam MIB hanya mereferensikan cabang OID dan bukan OID data yang terletak di leaf terakhir dengan angka tambahan seperti ".0" atau ".1". Perintah snmpget tidak berfungsi pada branch yang memberikan error MIB variable couldn't be found.
Untuk itu set
vi /etc/snmp/snmp.conf
tambah Read Only Community craz33guy (dan Restart snmpd)
rocommunity craz33guy localhost
Dalam contoh di bawah ini, alias OID ssCpuRawUser tampaknya menarik, tetapi perintah snmpget gagal mendapatkan nilai. Tindak lanjut dengan perintah snmpwalk menunjukkan bahwa nilai terletak di ssCpuRawUser.0 sebagai gantinya. Snmpget tersebut kemudian berhasil mengambil data tipe "counter32" dengan nilai saat ini adalah 396271.
# snmpget -v1 -c craz33guy localhost ssCpuRawUser Error in packet Reason: (noSuchName) There is no such variable name in this MIB. Failed object: UCD-SNMP-MIB::ssCpuRawUser
# snmpwalk -v1 -c craz33guy localhost ssCpuRawUser UUCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 2849
# snmpget -v1 -c craz33guy localhost ssCpuRawUser.0 UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 2851
Nilai MIB yang berhasil bekerja dengan snmpget adalah yang dapat kita gunakan dengan MRTG.
Perbedaan terminologi di MIB dan MRTG
Selalu ingat bahwa MRTG merujuk pada MIB counter value sebagai counter value. Ini mengacu pada MIB integer dan gauge value sebagai ukuran. Secara default, MRTG menganggap semua nilai sebagai counter.
MRTG tidak memplot counter value sebagai grafik yang terus meningkat, MRTG memplot hanya berapa banyak perubahan nilai sejak siklus polling terakhir. Penggunaan CPU biasanya dilacak oleh MIB sebagai counter value; untungnya, kita dapat mengedit file konfigurasi MRTG untuk menjadikannya grafik informasi ini dalam format persentase penggunaan.
Jenis sintaks, nama objek MIB, dan deskripsi tentang apa yang dilakukannya adalah hal terpenting yang perlu kita ketahui saat mengonfigurasi MRTG.CPU Dan Memory Monitoring MIB
The UCD-SNMP-MIB MIB keeps track of a number of key performance MIB objects, including the commonly used ones in Table 23-1.
Table 23-1 Important Objects In The UCD-SNMP-MIB MIB UCD-SNMP-MIB Object Variable MIB Type MRTG Type Description ssCpuRawUser Counter Counter
Total penggunaan CPU oleh aplikasi yang dijalankan oleh pengguna nonprivileged sejak sistem di-boot. Menambahkan nilai pengguna, sistem, dan bagus dapat memberikan perkiraan yang baik tentang total penggunaan CPU ..
ssCpuRawSystem Counter Counter Total CPU usage by applications run by privileged system processes since the system booted. ssCpuRawNice Counter Counter Total CPU usage by applications running at a nondefault priority level. ssCpuRawIdle Counter Counter
Persentase waktu CPU berjalan idle. Mengurangkan nilai ini dari 100 dapat memberikan perkiraan yang baik tentang total penggunaan CPU.
memAvailReal Integer Gauge Available Physical Memory Space On The Host
TCP/IP Monitoring MIB
MIB TCP-MIB men-track informasi koneksi data dan berisi objek tcpActiveOpens dan tcpCurrEstab yang sangat berguna. Tabel 23.2 merinci objek paling penting dalam TCP-MIB.
Table 23-2 Important Objects In The TCP-MIB MIB
UCD-SNMP-MIB Object Variable MIB Type MRTG Type Description tcpActiveOpens Counter Counter Measures the number of completed TCP connections. tcpCurrEstab Gauge Gauge Measures the number of TCP connections in the established state tcpInErrs Counter Counter Total number of TCP segments with bad checksum errors
Konfigurasi Manual MRTG File
Program cfgmaker MRTG membuat file konfigurasi untuk interface jaringan saja, secara bersamaan melacak dua OID: statistik input dan output data NIC. Program mrtg kemudian menggunakan file-file konfigurasi ini untuk menentukan tipe data yang akan direkam dalam direktori datanya. Program pembuat indeks juga menggunakan informasi ini untuk membuat overview, atau Summary View Web page untuk MIB OID yang kita pantau.
Summary View page ini hanya menampilkan statistik harian. Kita harus mengklik Summary View graphs untuk mendapatkan Detailed View page di belakangnya dengan grafik harian, mingguan, bulanan, dan tahunan. Beberapa parameter dalam file konfigurasi merujuk ke Detailed View, yang lain merujuk pada Summary View.
Jika kita ingin memantau pasangan OID lain, kita harus secara manual membuat file konfigurasi, karena pembuat cfgmaker tidak mengetahui adanya OID selain yang terkait dengan NIC. Program mrtg dan pembuat indeks dapat diberi fed masing-masing OID dari file konfigurasi yang disesuaikan dan akan berfungsi seperti yang diharapkan jika kita mengedit file dengan benar.
Parameter Format
Parameter konfigurasi MRTG selalu diikuti oleh nama grafik yang ditutup oleh kurung siku dan titik dua. Formatnya terlihat seperti ini:
Parameter[graph name]: value
Untuk memudahkan pengeditan, parameter untuk grafik tertentu biasanya dikelompokkan bersama. Setiap grafik dapat melacak dua OIDS yang tercantum dalam parameter Target, yang biasanya ditempatkan di bagian paling atas dari daftar nama grafik. Dua nilai OID dipisahkan oleh simbol &; yang pertama adalah input OID, dan yang kedua adalah output OID.
Legend Parameter
Pada halaman Detailed View Web, setiap grafik memiliki legend yang menunjukkan nilai maks, rata-rata, dan terkini dari statistik OID grafik. Kita dapat menggunakan parameter legendI untuk deskripsi grafik input (OID grafik pertama) dan legendO untuk grafik output (OID grafik kedua).
Ruang yang tersedia di bawah setiap legenda grafik sangat kecil sehingga MRTG juga memiliki parameter legend1 dan legend2 yang ditempatkan di bagian paling bawah halaman untuk memberikan rincian lebih lanjut. Parameter legend1 adalah perluasan dari legendI, dan legend2 adalah perluasan dari legendO.
Ylegend adalah legend untuk sumbu Y, nilai yang kita coba bandingkan. Dalam hal konfigurasi MRTG default, ini akan menjadi aliran data melalui interface dalam bit atau byte per detik. Berikut adalah contoh legenda konfigurasi MRTG default:
YLegend[graph1]: Bits per second Legend1[graph1]: Incoming Traffic in Bits per Second Legend2[graph1]: Outgoing Traffic in Bits per Second LegendI[graph1]: In LegendO[graph1]: Out
Kita dapat mencegah MRTG dari mencetak legenda di bagian bawah grafik dengan membiarkan nilai legenda kosong seperti ini:
LegendI[graph1]:
Nanti kita akan belajar cara mencocokkan legenda dengan OID untuk berbagai situasi.
Options Parameter
Parameter option memberi MRTG informasi pemformatan grafik. Opsi growright memastikan data di kanan layar adalah untuk nilai grafik terkini. Ini biasanya membuat grafik lebih mudah dibaca secara intuitif. MRTG default untuk tumbuh dari kiri.
Opsi nopercent mencegah MRTG dari mencetak statistik gaya persentase dalam legenda di bagian bawah grafik. Opsi gauge mengingatkan MRTG pada fakta bahwa nilai-nilai grafik dari tipe gauge. Jika nilai yang kita pantau adalah dalam byte, maka Anda dapat mengonversi output menjadi bit menggunakan opsi bit. Demikian juga, kita dapat mengonversi nilai per detik ke grafik per menit menggunakan opsi perminute. Berikut adalah beberapa contoh untuk dua grafik yang berbeda:
options[graph1]: growright,nopercent,perminute options[graph2]: gauge,bits
Jika kita menempatkan parameter ini di bagian atas dengan label [_] ini akan diterapkan ke semua grafik yang ditentukan dalam file. Berikut contohnya.
options[_]: growright
Title Parameter
Title pada Summary Page disediakan oleh parameter Title, parameter PageTop memberitahu title untuk halaman Detailed View. String PageTop harus dimulai dengan < H1 > dan diakhiri dengan < H1 >.
Title[graph1]: Interface eth0 PageTop[graph1]: < H1 > Detailed Statistics For Interface eth0 < H1 >
Scaling Parameter
Parameter MaxBytes adalah jumlah maksimum data yang akan plot MRTG pada grafik. Apa pun lebih dari ini tampaknya menghilang di tepi grafik.
MRTG juga mencoba menyesuaikan grafiknya sehingga nilai terbesar yang diplot pada grafik selalu dekat ke atas. Ini bahkan jika Anda mengatur parameter MaxBytes.
Ketika kita merencanakan nilai yang memiliki nilai maksimum yang diketahui dan kita selalu ingin memiliki nilai ini di bagian atas legenda vertikal, kita mungkin ingin mematikan penskalaan otomatis MRTG. Jika kita merencanakan persentase penggunaan CPU, dan server mencapai maksimum 60%, dengan scaling, MRTG akan memiliki plot vertikal 0% hingga 60%, sehingga puncak vertikal berada di dekat bagian atas gambar grafik.
Ketika scaling dimatikan, dan MaxBytes diatur ke 100, maka puncaknya akan hanya 60% dari jalan karena grafik plot dari 0% hingga 100%. Contoh ini menghilangkan scaling dari tampilan tahunan, bulanan, mingguan, dan harian pada halaman Detailed View dan memberi mereka nilai maksimum 100.
Unscaled[graph1]: ymwd MaxBytes[graph1]: 100
Mendefinisikan MIB Target Parameter
Seperti yang dinyatakan sebelumnya, MRTG selalu mencoba untuk membandingkan dua nilai OIB MIB yang ditentukan oleh parameter Target. Kita harus menentukan dua objek MIB OID, SNMP password dan alamat IP perangkat yang di query dalam parameter ini, dan pisahkan dengan karakter &:
Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address>
Nilai numerik, dalam hal ini .0, pada akhir MIB diperlukan. Contoh berikutnya menggunakan perintah SNMP untuk mengembalikan user mode CPU utilization dari Linux server. Perhatikan bagaimana .0 di tambahkan pada akhir output.
[root@silent mibs]# snmpwalk -v 1 -c craz33guy localhost ssCpuRawUser UCD-SNMP-MIB::ssCpuRawUser.0 = Counter32: 926739 [root@silent mibs]#
The MRTG legends map to the MIBs listed in the target as shown in Table 23-3.
Table 23-3 Mapping MIBs To The Graph Legends Legend Maps To Target MIB Legend1 #1 Legend2 #2 LegendI #1 LegendO #2
Jadi pada contoh di bawah ini, legend1 dan legendI menggambarkan mib-objek-1.0 dan legend2 dan legendo menjelaskan mib-object-2.0.
Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address>
Plotting hanya Satu MIB Value
Jika kita ingin memplot hanya satu nilai MIB, kita bisa mengulangi target MIB dalam definisi seperti pada contoh berikut, yang plotnya hanya mib-object-1. Grafik MRTG yang dihasilkan sebenarnya menumpangkan grafik input dan output satu di atas yang lain.
Target[graph1]: mib-object-1.0&mib-object-1.0:<SNMP-password>@<IP-address>
Menambahkan MIB Value menjadi satu untuk sebuah Grafik
Kita bisa menggunakan tanda plus di antara pasangan nilai objek MIB untuk menambahkannya menjadi satu. Contoh berikutnya menambahkan mib-objek-1.0 dan mib-objek-3.0 untuk satu grafik dan menambahkan mib-objek-2.0 dan mib-objek-4.0 untuk yang lainnya.
Target[graph1]: mib-object-1.0&mib-object-2.0:<SNMP-password>@<IP-address> + mib-object-3.0&mib-object-4.0:<SNMP-password>@<IP-address>
Kita dapat menggunakan operator matematika lainnya, seperti kurang (-), kali (*), dan bagi (%). Tanda kurung kiri dan kanan juga valid. Harus ada spasi sebelum dan sesudah semua operator ini agar MRTG berfungsi dengan benar. Jika tidak, kita akan mendapatkan grafik berbayang yang aneh.
Sample Target: Total CPU Usage
Penggunaan CPU Linux ditempati oleh proses sistem, user mode process, dan beberapa proses berjalan dalam nice mode. Contoh ini mengumpulkan semuanya dalam satu plot.
Target[graph1]:ssCpuRawUser.0&ssCpuRawUser.0:<SNMP-password>@<IP-address> + ssCpuRawSystem.0&ssCpuRawSystem.0:<SNMP-password>@<IP-address> + ssCpuRawNice.0&ssCpuRawNice.0:<SNMP-password>@<IP-address>
Pastikan untuk menempatkan perintah ini pada satu baris
Sample Target: Memory Usage
Berikut ini adalah contoh untuk merencanakan jumlah memori bebas versus total RAM yang terpasang di server. Perhatikan bahwa ini adalah gauge type variable.
Target[graph1]: memAvailReal.0&memTotalReal.0:<SNMP-password>@<IP-address> options[graph1]: nopercent,growright,gauge
Selanjutnya, plot persentase memori yang tersedia. Perhatikan bagaimana space wajib memisahkan operator matematika dari elemen target berikutnya.
Target[graph1]: ( memAvailReal.0& memAvailReal.0:<SNMP-password>@<IP-Address> ) * 100 / ( memTotalReal.0&memTotalReal.0:<SNMP-password>@<IP-Address> ) options[graph1]: nopercent,growright,gauge
Sample Target: Newly Created Connections
HTTP traffic yang disebabkan oleh Web browsing biasanya terdiri dari banyak koneksi yang sangat singkat. Objek MIB tcpPassiveOpens men-track koneksi yang baru dibuat dan cocok untuk jenis transfer data ini. Objek MIB tcpActiveOpens memonitor koneksi baru yang berasal dari server. Di situs Web yang lebih kecil kita mungkin ingin menggunakan opsi perminute untuk membuat grafik lebih bermakna.
Target[graph1]: tcpPassiveOpens.0& tcpPassiveOpens.0:<SNMP-password>@<IP-address> MaxBytes[graph1]: 1000000 Options[graph1]: perminute
Sample Target: Total TCP Established Connections
Protokol lain seperti FTP dan SSH membuat koneksi yang lebih lama sementara orang mengunduh file besar atau tetap masuk ke server. Objek MIB tcpCurrEstab mengukur jumlah total koneksi dalam established state dan adalah gauge value.
Target[graph1]: tcpCurrEstab.0&tcpCurrEstab.0:<SNMP-password>@<IP-address> MaxBytes[graph1]: 1000000 Options[graph1]: gauge
Sample Target: Disk Partition Usage
Pada contoh ini, kita akan memonitor partisi /var dan /home di system.
1) Pertama-tama gunakan perintah df -k untuk melihat daftar partisi yang digunakan.
[root@bigboy tmp]# df -k Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda8 505605 128199 351302 27% / /dev/hda1 101089 19178 76692 21% /boot /dev/hda5 1035660 122864 860188 13% /home /dev/hda6 505605 8229 471272 2% /tmp /dev/hda3 3921436 890092 2832140 24% /usr /dev/hda2 1510060 171832 1261520 73% /var [root@bigboy tmp]#
2) Tambahkan dua (2) entry di snmpd.conf.
disk /home disk /var
3) Restart SNMP daemon untuk reload value.
[root@bigboy tmp]# systemctl restart snmpd.service
4) Gunakan snmpwalk command untuk query dskPercent MIB. Object dskPercent.1 refer ke first disk entry di snmpd.conf (/home), dskPercent.2 refer ke second disk entry (/var).
[root@bigboy tmp]# snmpwalk -v 1 -c craz33guy localhost dskPercent.1 UCD-SNMP-MIB::dskPercent.1 = INTEGER: 13 [root@bigboy tmp]# snmpwalk -v 1 -c craz33guy localhost dskPercent.2 UCD-SNMP-MIB::dskPercent.2 = INTEGER: 73 [root@bigboy tmp]#
Maka MRTG target untuk gauge MIB object berikit akan tampak seperti:
Target[graph1]: dskPercent.1& dskPercent.1:<SNMP-password>@<IP-address> options[graph1]: growright,gauge
Mendefinisikan Global Variable
Kita harus memastikan MRTG tahu di mana MIB yang kita gunakan berada. Lokasi default yang digunakan MRTG mungkin tidak valid. Tentukan lokasi mereka dengan parameter LoadMIBs global. Kita juga harus menentukan di mana file HTML akan berada; contoh menentukan direktori default MRTG HTML.
LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt, /usr/share/snmp/mibs/TCP-MIB.txt workdir: /var/www/mrtg/
Implementing Advanced Server Monitoring
Kita sekarang dapat menggabungkan semua yang telah kita pelajari untuk membuat file konfigurasi yang memonitor semua variabel ini, dan kemudian kita dapat mengintegrasikannya ke dalam konfigurasi MRTG yang ada.
Contoh Konfigurasi Lengkap
Berikut adalah contoh file konfigurasi yang digunakan untuk permintaan server localhost untuk informasi CPU, memori, disk, dan koneksi TCP.
# # File: /etc/mrtg/server-info.cfg # # Configuration file for non bandwidth server statistics # # # Define global options # LoadMIBs: /usr/share/snmp/mibs/UCD-SNMP-MIB.txt,/usr/share/snmp/mibs/TCP-MIB.txt workdir: /var/www/mrtg/ # # CPU Monitoring # (Scaled so that the sum of all three values doesn't exceed 100) # Target[server.cpu]:ssCpuRawUser.0&ssCpuRawUser.0:craz33guy@localhost + ssCpuRawSystem.0&ssCpuRawSystem.0:craz33guy@localhost + ssCpuRawNice.0&ssCpuRawNice.0:craz33guy@localhost Title[server.cpu]: Server CPU Load PageTop[server.cpu]: < H1 >CPU Load - System, User and Nice Processes< /H1 > MaxBytes[server.cpu]: 100 ShortLegend[server.cpu]: % YLegend[server.cpu]: CPU Utilization Legend1[server.cpu]: Current CPU percentage load LegendI[server.cpu]: Used LegendO[server.cpu]: Options[server.cpu]: growright,nopercent Unscaled[server.cpu]: ymwd # # Memory Monitoring (Total Versus Available Memory) # Target[server.memory]: memAvailReal.0&memTotalReal.0:craz33guy@localhost Title[server.memory]: Free Memory PageTop[server.memory]: < H1 >Free Memory< /H1 > MaxBytes[server.memory]: 100000000000 ShortLegend[server.memory]: B YLegend[server.memory]: Bytes LegendI[server.memory]: Free LegendO[server.memory]: Total Legend1[server.memory]: Free memory, not including swap, in bytes Legend2[server.memory]: Total memory Options[server.memory]: gauge,growright,nopercent kMG[server.memory]: k,M,G,T,P,X # # Memory Monitoring (Percentage usage) # Title[server.mempercent]: Percentage Free Memory PageTop[server.mempercent]: < H1 >Percentage Free Memory< /H1 > Target[server.mempercent]: ( memAvailReal.0&memAvailReal.0:craz33guy@localhost ) * 100 / ( memTotalReal.0&memTotalReal.0:craz33guy@localhost ) options[server.mempercent]: growright,gauge,transparent,nopercent Unscaled[server.mempercent]: ymwd MaxBytes[server.mempercent]: 100 YLegend[server.mempercent]: Memory % ShortLegend[server.mempercent]: Percent LegendI[server.mempercent]: Free LegendO[server.mempercent]: Free Legend1[server.mempercent]: Percentage Free Memory Legend2[server.mempercent]: Percentage Free Memory # # New TCP Connection Monitoring (per minute) # Target[server.newconns]: tcpPassiveOpens.0&tcpActiveOpens.0:craz33guy@localhost Title[server.newconns]: Newly Created TCP Connections PageTop[server.newconns]: < H1 >New TCP Connections< /H1 > MaxBytes[server.newconns]: 10000000000 ShortLegend[server.newconns]: c/s YLegend[server.newconns]: Conns / Min LegendI[server.newconns]: In LegendO[server.newconns]: Out Legend1[server.newconns]: New inbound connections Legend2[server.newconns]: New outbound connections Options[server.newconns]: growright,nopercent,perminute # # Established TCP Connections # Target[server.estabcons]: tcpCurrEstab.0&tcpCurrEstab.0:craz33guy@localhost Title[server.estabcons]: Currently Established TCP Connections PageTop[server.estabcons]: < H1 >Established TCP Connections< /H1 > MaxBytes[server.estabcons]: 10000000000 ShortLegend[server.estabcons]: YLegend[server.estabcons]: Connections LegendI[server.estabcons]: In LegendO[server.estabcons]: Legend1[server.estabcons]: Established connections Legend2[server.estabcons]: Options[server.estabcons]: growright,nopercent,gauge # # Disk Usage Monitoring # Target[server.disk]: dskPercent.1&dskPercent.2:craz33guy@localhost Title[server.disk]: Disk Partition Usage PageTop[server.disk]: < H1 >Disk Partition Usage /home and /var< /H1 > MaxBytes[server.disk]: 100 ShortLegend[server.disk]: % YLegend[server.disk]: Utilization LegendI[server.disk]: /home LegendO[server.disk]: /var Options[server.disk]: gauge,growright,nopercent Unscaled[server.disk]: ymwd
Test Konfigurasi
Restart SNMP untuk memastikan perintah monitoring disk dalam file snmpd.conf diaktifkan. Jalankan perintah /usr/bin/mrtg diikuti dengan nama file konfigurasi tiga kali. Jika semuanya berjalan dengan baik, MRTG hanya akan complain tentang file database tertentu tidak ada. MRTG kemudian membuat file tersebut. Dengan menjalankan ketiga, semua file dibuat dan MRTG harusnya beroperasi dengan lancar.
[root@bigboy tmp]# systemctl restart snmpd.service [root@bigboy tmp]# env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg
Create MRTG Index Page yang Baru
Gunakan indexmaker command dan include original MRTG configuration file (/etc/mrtg/mrtg.cfg) plus yang baru kita buat (/etc/mrtg/server-stats.cfg).
[root@bigboy tmp]# indexmaker --output=/var/www/mrtg/index.html \ /etc/mrtg/mrtg.cfg /etc/mrtg/server-stats.cfg
Konfigurasi cron untuk menggunakan MRTG File yang baru
Langkah terakhir adalah untuk memastikan bahwa MRTG di konfigurasi untuk poll server setiap lima (5) menggunakan file konfigurasi yang baru. Tambahkan line di file /etc/cron.d/mrtg
0-59/5 * * * * root env LANG=C /usr/bin/mrtg /etc/mrtg/server-stats.cfg
Beberapa versi Linux (seperti Ubuntu) kita perlu file /etc/crontab. Restart crond agar melakukan polling tersebut,
[root@bigboy tmp]# systemctl restart crond.service
Monitoring Non Linux MIB Value
Semua MIB yang disebutkan sejauh ini adalah untuk sistem Linux; jenis sistem lain akan membutuhkan MIB tambahan yang pemasangannya mungkin tidak jelas dalam panduan pengguna atau tidak tersedia. Dalam kasus seperti itu, kita harus mengetahui nilai pasti dari OID.
Skenario
Bayangkan anda sebagai sebuah perusahaan kecil telah membeli Cisco second untuk menghubungkan server situs Web-nya ke Internet. Konfigurasi dasar MRTG menyediakan statistik bandwidth data, tetapi anda ingin mengukur beban CPU yang disebabkan oleh traffic di perangkat. Mengunduh MIB dari Cisco dan menggunakannya dengan perintah snmpget tidak berhasil. Anda tidak tahu apa yang harus dilakukan selanjutnya.
Find The OIDs
Ketika MIB value gagal, yang terbaik adalah mencoba untuk menemukan nilai OID yang tepat. Seperti kebanyakan produsen peralatan jaringan, Cisco memiliki situs FTP tempat kita dapat mengunduh MIB dan OID. File SNMP untuk perangkat Cisco dapat ditemukan di ftp.cisco.com di direktori /pub/mibs; OID ada di direktori oid di bawahnya.
Setelah melihat semua file OID, kita memutuskan bahwa file CISCO-PROCESS-MIB.oid akan berisi nilai yang diperlukan dan menemukan entri ini di dalamnya.
"cpmCPUTotalPhysicalIndex" "1.3.6.1.4.1.9.9.109.1.1.1.1.2" "cpmCPUTotal5sec" "1.3.6.1.4.1.9.9.109.1.1.1.1.3" "cpmCPUTotal1min" "1.3.6.1.4.1.9.9.109.1.1.1.1.4" "cpmCPUTotal5min" "1.3.6.1.4.1.9.9.109.1.1.1.1.5" "cpmCPUTotal5secRev" "1.3.6.1.4.1.9.9.109.1.1.1.1.6" "cpmCPUTotal1minRev" "1.3.6.1.4.1.9.9.109.1.1.1.1.7" "cpmCPUTotal5minRev" "1.3.6.1.4.1.9.9.109.1.1.1.1.8"
Test OID
Seperti yang kita lihat, semua OID adalah bagian dari pohon yang sama dimulai dengan 1.3.6.1.4.1.9.9.109.1.1.1.1.1. OID yang disediakan mungkin tidak lengkap, jadi yang terbaik adalah menggunakan perintah snmpwalk untuk mencoba mendapatkan semua nilai di bawah root ini terlebih dahulu.
[root@bigboy tmp]# snmpwalk -v1 -c craz33guy cisco-switch 1.3.6.1.4.1..9.9.109.1.1.1.1 SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.1 = INTEGER: 0 SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.3.1 = Gauge32: 32 SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.4.1 = Gauge32: 32 SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.5.1 = Gauge32: 32 [root@bigboy tmp]#
Meskipun tercantum dalam file OID, 1.1.1.1.6, 1.1.1.1.7, dan 1.1.1.1.8 tidak di support. Perhatikan juga bagaimana SNMP telah menentukan bahwa bagian pertama dari nilai OID (1.3.6.1.4.1) dalam file OID asli di mapping ke kata "perusahaan".
Next, you can use one the snmpget command to set only one of the OID values returned by snmpwalk.
[root@bigboy tmp]# snmpget -v1 -c craz33guy cisco-switch \ enterprises.9.9.109.1.1.1.1.5.1 SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.5.1 = Gauge32: 33 [root@bigboy tmp]#
Success! Now you can use this OID value, enterprises.9.9.109.1.1.1.1.5.1, for your MRTG queries.
Percepat MRTG dengan RRDtool
MRTG adalah program yang sangat berguna tetapi memiliki keterbatasan. Semua grafik dan halaman web diciptakan kembali setiap kali sebuah perangkat disurvei. Ini berpotensi membebani server MRTG terutama jika kita memiliki banyak perangkat yang dipantau dan grafik membutuhkan lebih dari lima menit untuk dibuat. RRDtool adalah aplikasi yang ditulis oleh pencipta MRTG yang dapat menyimpan data tujuan umum, tetapi menghasilkan grafik sesuai permintaan. Mengintegrasikan MRTG dengan RRDtool dapat memiliki manfaat kinerja yang sangat nyata. Contoh berikut akan menunjukkan kepada kita cara menerapkan solusi tujuan umum dengan cepat.
Scenario
Penggunaan RRDtool diperlukan untuk mengurangi beban pada server pemantauan yang telah mengalami kinerja yang sangat lamban karena jumlah grafik MRTG yang harus diregenerasi setiap siklus pemungutan suara.
- Karena keterbatasan ruang, database RRD perlu ditempatkan di partisi /var.
- Server memiliki konfigurasi Apache default dengan file CGI yang diperlukan untuk konten yang dihasilkan secara dinamis yang berada di direktori /var/www/cgi-bin.
- Diperlukan skrip CGI yang akan membaca data MRTG baru dalam format RRDtool.
- File konfigurasi MRTG adalah /etc/mrtg/mrtg.cfg.
Install RRDtool
File modul RRDtool dan RRDtool PERL dapat diunduh dari situs webnya di http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/, tetapi instalasi bisa rumit karena program instalasi mungkin mencari library pendukung tertentu di direktori yang salah.
Untungnya paket rrdtool dan rrdtool-perl prasyarat kini hadir sebagai bagian dari sebagian besar distribusi Linux. Untuk detail lebih lanjut tentang menginstal paket.
Menyimpan Data MRTG dalam Format RRDtool
This phase of the integration process can be done in a few minutes, but the steps can be tricky:
The first step is to add some new options to your cfgmaker command. The first indicates that MRTG should only store rrdtool formatted data, and the second defines the /var/mrtg directory in which it should be stored. For added security, the directory should be external to your web server's document root.
--global 'LogFormat: rrdtool' --global "workdir: /var/mrtg" --global 'IconDir: /mrtg'
Finally, you should also specify an icon directory which specifies the location of all miscellaneous MRTG web page icons. The RRD web interface script we'll install later uses an incorrect location. The icon directory /mrtg is actually a partial URL location. In this Fedora scenario we are using the default Apache configuration which locates the MRTG icon files in the /var/www/mrtg directory. If you are using a non default Apache MRTG configuration or are using other Linux distributions or versions you may have to copy the icons to the custom directory in which the MRTG PNG format icon files are located.
The cfgmaker program is simple to use and is covered in in Chapter 22, "Monitoring Server Performance".
The next step is to create the data repository directory /var/mrtg and make it be owned by the apache user and process that runs the default Linux web server application.
[root@bigboy tmp]# mkdir /var/mrtg [root@bigboy tmp]# chown apache /var/mrtg [root@bigboy tmp]#
Note: If you are using SELinux you'll have to change the context of this directory to match that of the /var/www/html directory so that the apache process will be able to read the database files when your CGI script needs them. These commands compare the contexts of the both directories and apply the correct set to /var/mrtg.
Please refer to Chapter 20, " The Apache Web Server" for more details on file contexts with Apache.
[root@bigboy tmp]# ls -alZ /var/www | grep html drwxr-xr-x root root system_u:object_r:httpd_sys_content_t html [root@bigboy tmp]# ls -alZ /var | grep mrtg drwxr-xr-x apache root root:object_r:var_t mrtg [root@bigboy tmp]# chcon -R -u system_u -r object_r -t httpd_sys_content_t /var/mrtg [root@bigboy tmp]#
We now need to test that the RRD files are being created correctly. Run MRTG using the /etc/mrtg/mrtg.cfg file as the source configuration file then test to see if the contents of the /var/mrtg directory have changed. Success!
[root@bigboy tmp]# ls /var/mrtg/ localhost_192.168.1.100.rrd [root@bigboy tmp]#
The files are being created properly. Now we need to find a script to read the new data format and present it in a web format. This will be discussed next.
The MRTG / RRDtool Integration Script
The MRTG website recommends the script located on the mrtg-rrd website (http://www.fi.muni.cz/~kas/mrtg-rrd/) as being a good one to use. Let's go ahead and install it.
Download the script using wget. The site lists several versions; make sure you get the latest one.
[root@bigboy tmp]# wget ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz --12:42:12-- ftp://ftp.linux.cz/pub/linux/people/jan_kasprzak/mrtg-rrd/mrtg-rrd-0.7.tar.gz => `mrtg-rrd-0.7.tar.gz' Resolving ftp.linux.cz... 147.251.48.205 Connecting to ftp.linux.cz|147.251.48.205|:21... connected. Logging in as anonymous ... Logged in! ... ... ... 15:24:50 (53.53 KB/s) - `mrtg-rrd-0.7.tar.gz' saved [20863] [root@bigboy tmp]# ls mrtg-rrd-0.7.tar.gz [root@bigboy tmp]#
Extract the contents of the tar file.
[root@bigboy tmp]# tar -xzvf mrtg-rrd-0.7.tar.gz mrtg-rrd-0.7/ mrtg-rrd-0.7/COPYING mrtg-rrd-0.7/FAQ mrtg-rrd-0.7/TODO mrtg-rrd-0.7/Makefile mrtg-rrd-0.7/mrtg-rrd.cgi mrtg-rrd-0.7/ChangeLog [root@bigboy tmp]#
Create the /var/www/cgi-bin/mrtg directory and copy the mrtg-rrd.cgi file to it.
[root@bigboy tmp]# mkdir -p /var/www/cgi-bin/mrtg [root@bigboy tmp]# cp mrtg-rrd-0.7/mrtg-rrd.cgi /var/www/cgi-bin/mrtg/ [root@bigboy tmp]#
Edit the mrtg-rrd.cgi file and make it refer to the /etc/mrtg/mrtg.cfg file for its configuration details, or you can specify all the .cfg files in your /etc/mrtg directory.
# # File: mrtg-rrd.cgi (Single File) # # EDIT THIS to reflect all your MRTG config files BEGIN { @config_files = qw(/etc/mrtg/mrtg.cfg); } # # File: mrtg-rrd.cgi (multipl .cfg files) # # EDIT THIS to reflect all your MRTG config files BEGIN { @config_files = </etc/mrtg/*.cfg>; }
You should now be able to access your MRTG RRD graphs by visiting this URL:
http://www.my-web-site.org/cgi-bin/mrtg/mrtg-rrd.cgi
Once installed, RRDtool operates transparently with MRTG. You'll have to remember to add the RRD statements to any new MRTG configurations and also add the configuration file to the CGI script. Our monitoring server can now breathe a little easier.
Troubleshooting
The troubleshooting techniques for advanced MRTG are similar to those mentioned in Chapter 22, " Monitoring Server Performance", but because you have done some customizations you'll have to go the extra mile.
Verify the IP address and community string of the target device you intend to poll. Make sure you can do an SNMP walk of the target device. If not, revise your access controls on the target device and any firewall rules that may impede SNMP traffic. Ensure you can do an SNMP get of the specific OID value listed in your MRTG configuration file. Check your MRTG parameters to make sure they are correct. Gauge values defined as counter and vice versa will cause your graphs to have continuous zero values. Graph results that are eight times what you expect may have the bits parameter set. There are a few errors common to initial RRDtool integration.
Web messages like this where the reference to the MRTG configuration file in the CGI script was incorrect
Error: Cannot open config file: No such file or directory
"Permission Denied" web messages are usually caused by incorrect file permissions and / or SELinux contexts
Error: RRDs::graph failed, opening '/var/mrtg/localhost_192.168.1.100.rrd': Permission denied
Errors in the /var/log/httpd/errorlog file referring to files or directories that don't exist can be caused by an incorrect IconDir statement in the MRTG configuration file.
[Wed Jan 04 15:42:13 2006] [error] [client 192.168.1.102] File does not exist: /var/www/html/var, referer: http://bigboy/cgi-bin/mrtg/mrtg-rrd.cgi/
[Wed Jan 04 15:45:46 2006] [error] [client 192.168.1.102] script not found or unable to stat: /var/www/cgi-bin/mrtg/mrtg-l.png, referer: http://bigboy/cgi-bin/mrtg/mrtg-rrd.cgi/
Errors caused by not installing the pre-requisite RRD RPM modules rrdtool, perl-RRD-Simple and rrdtool-perl.
ERROR: could not find RRDs.pm. Use LibAdd: in mrtg.cfg to help mrtg find RRDs.pm
These quick steps should be sufficient in most cases and will reward you with a more manageable network. Conclusion
Using the guidelines in this chapter you should be able to graph most SNMP MIB values available on any type of device. MRTG is an excellent, flexible monitoring tool and should be considered as a part of any systems administrator's server management plans.