UEC: Troubleshooting
File Log Eucalyptus
File log berikut akan sangat menolong pada saat melakukan debugging berbagai masalah pada pada Eucalyptus yang berjalan:
Eucalyptus Component | Log file(s) |
---|---|
CC | cc.log, httpd-cc_error_log, cc-registration.log |
NC | nc.log, httpd-nc_error_log, euca_test_nc.log |
CLC | cloud-debug.log, cloud-error.log, cloud-output.log, axis2c.log |
SC | sc-stats.log, sc-registration.log |
WS3 | walrus-stats.log, walrus-registration.log |
Level logging di atur oleh macro LOGLEVEL di eucalyptus.conf untuk masing-masing komponen. Level log yang ada adalah DEBUG, INFO, WARN, ERROR, dan FATAL. Default level adalah DEBUG (untuk semua komponen).
‘tail -f ‘ pada file log adalah cara yang baik untuk mengetahui apa yang terjadi pada komponen Eucalyptus.
Perintah Linux
Perintah Linux seperti ps, top dll. jalan di CC dan NC sangat membantu dalam mengetahui tahapan proses pada Eucalyptus.
Tool Libvirt
NC akan menjalankan sebuah instance dengan cara melakukan call ke libvirt untuk menjalankan VM. Kita dapat menggunakan tool libvirt seperti virsh untuk troubleshooting berbagai isu sekitar hypervisor.
Menjalankan sebuah instance dengan VNC attached(HACK):
Jika output euca-describe-instances menunjukan status sebuah instance sebagai ‘running’, tapi jika kita tidak bisa SSH ke instance tersebut atau RDP ke instance tersebut, akan sangat susah untuk mencari tahu dimana terjadi kegagalan. Dalam kasus tersebut, sebuah VNC interface ke instance sangat menolong dalam membantu proses troubleshooting. Akan tetapi Eucalyptus tidak memberikan cara untuk menyambungkan instance melalui VNC. Hack berikut akan membantu dalam mensetup interface VNC ke sebuah instance.
Instance Windows
Di NC, edit /usr/share/eucalyptus/gen_kvm_libvirt_xml (jika kita menggunakan KVM sebagai hypervisor) untuk mengubah
<devices> <disk type='file'> <source file='BASEPATH/disk'/> <target dev='sda'/> </disk> <interface type='bridge'> <source bridge='BRIDGEDEV'/> <mac address='PRIVMACADDR'/> <model type='e1000'/> </interface> <serial type="file"> <source path='BASEPATH/console.log'/> <target port='1'/> </serial> </devices>
menjadi
<devices> <disk type='file'> <source file='BASEPATH/disk'/> <target dev='sda'/> </disk> <interface type='bridge'> <source bridge='BRIDGEDEV'/> <mac address='PRIVMACADDR'/> <model type='e1000'/> </interface> <serial type="file"> <source path='BASEPATH/console.log'/> <target port='1'/> </serial> <graphics type='vnc' listen='A.B.C.D' port='5904'/> </devices>
Dimana A.B.C.D adalah IP address dari interface di NC yang dapat dihubungi dari mesin client yang menjalankan VNC client. Kita mengasumsikan NC mempunyai dua (2) interface dan kita dapat menggunakan interface ke dua untuk mencapai NC tanpa melalui CC. Perhatikan bahwa ini hanya digunakan untuk troubleshooting. Pada setup produksi, kita harus menyambungkan NC ke dunia luar hanya melalui CC.
Dengan perubahan tersebut, KVM akan menambahkan opsi “-vnc” untuk NC dengan IP address tertentu tersebut dengan display nomor 4.
Untuk menyambung ke instance melalui VNC client dari mesin yang berbeda, gunakan IP address NC dan display nomor 4. Misalnya: A.B.C.D :4
Untuk Xen, kita perlu memodifikasi bagian terkait yang ada di /usr/share/eucalyptus/gen_libvirt_xml. Kami belum pernah mentest untuk Xen.
Instance Linux
Kita dapat menggunakan cara yang sama untuk Instance Linux, dengan catatan kita tidak dapat melihat keluaran apapun euca-get-console-output jika output console tidak di tulis ke /var/lib/eucalyptus/instances/<user>/i-xxxxxxxx/console.log. Output tentu saja dapat di display menggunakan VNC.
CATATAN: Cara ini hanya jalan jika kita melakukan debugging satu instance dalam satu waktu. Jika kita berusaha untuk menjalankan instance yang lain pada saat sebuah instance sedang berjalan, KVM akan berusaha untuk menempelkan VNC display 4 yang sama ke instance yang ke dua dan akan gagal dengan error yang tertulis di /var/log/libvirtd/qemu/i-XXXXXXXX.log
inet_listen_opts: bind(ipv4,A.B.C.D,5904): Address already in use inet_listen_opts:FAILED