Homer Untuk SIP dan RTP Monitoring/Troubleshoot

Membaca log pada saat troubleshoot VoIP berbasis SIP itu penting, tapi masih juga banyak yang malas melakukan hal tersebut. Bisa dimaklumi karena memang membaca log SIP itu beneran ribet, walaupun sebenarnya cukup dengan merunut Call-ID problem langsung bisa ketahuan. Jika di sebuah lingkungan dengan jumlah panggilan sedikit, hal ini tidak menjadi masalah, karena jumlah log SIP tidak begitu banyak dan bisa langsung teridentifikasi permasalahannya. Tapi jika dalam lingkungan call yang berjumlah banyak, misal di sebuah VoIP provider, membaca log akan menjadi sangat merepotkan. Sering kali kita harus meminta pelanggan untuk melakukan test call lagi hanya demi mendapatkan log. Sedangkan sebagai pelanggan, ogah banget kan disuruh ini itu hanya karena si provider tidak punya catatan log pada saat problem terjadi.

Log SIP itu benar-benar chatty. Banyak banget. Dalam satu kali sesi bisa sampai dengan ratusan baris. Jadi kalo ada problem 1 jam sebelumnya, pada saat kita check log, sudah terdapat ribuan baris log menumpuk dari panggilan yang lain. Untuk mempermudah melakukan troubleshoot ini, kita bisa memanfaatkan tool lain seperti Homer SIP Capture.

Cara Kerja

Homer terdiri dari Capture Server dan Capture agent. Capture server merupakan server sipcapture berbasis Kamailo / OpenSIPS yang menerima kiriman HEP, IPIP ataupun raw packet dari HEP agent/Capture agent. Beberapa software telephony sudah memiliki implementasi capture agent seperti FreeSWITCH (versi 1.6.8 ke atas), Asterisk (versi 13 ke atas), Kamailio dan OpenSIPS. Lalu untuk perangkat lain yang tidak memiliki implementasi capture agent, tetap bisa memanfaatkannya dengan cara memasang sebuah server (berbasis Linux) dengan capture agent, lalu salah satu interface nya tersambung ke  port mirror perangkat SIP lain. Semua paket SIP yangt tertangkap capture agent akan dikirimkan ke Capture Server untuk kemudian disimpan dan dianalisa jika terjadi problem.

Berikut ini gambaran topologi dari yang saya embat dari https://github.com/sipcapture/homer :

Capture Server:

 

Capture agent:

Instalasi/Setup

Lalu berikutnya mari kita setup Capture Server terlebih dahulu:

  • Paling enak menurut saya kalau Capture Server jalan di Debian 8 Jessie 64 bit. Jadi silahkan disiapkan. Server distro lain harusnya tidak masalah, tapi pas saya install di Centos 7, saya stuck di MySQL. Walaupun problemnya sebenarnya jelas, tapi sayanya yang malas troubleshoot karena dikejar waktu.
  • Ada 4 cara install Homer 5, ini yang bisa dilihat di sini, tapi cara yang paling saya sukai adalah cara pertama, yaitu menggunakan install script. Jalankan step di bawah ini:
root~# cd /usr/src
root~# wget https://cdn.rawgit.com/sipcapture/homer-installer/master/homer_installer.sh
root~# chmod +x homer_installer.sh
root~# ./homer_installer.sh
  • Pada saat proses instalasi, kita akan ditanyakan nama database, user dan password user database untuk akses database Homer. Nama database saya pilih default, yaitu homer, dan passwordnya tentu saja saya isikan berbeda. Script di atas akan menginstall Kamailio dengan module sipcapture.so, jika penasaran bagaimana cara penggunaannya silahkan lihat di kamailio.cfg. Selain itu script ini juga akan menambahkan direktori web di /var/www/html/homer. Web tersebut langsung bisa diakses dengan username admin dan password : test1234. Sangat disarankan untuk segera mengganti password ini begitu login. Jika instalasi berhasil secara keseluruhan, akan nampak informasi seperti berikut:
*************************************************************
    ,;;;;,
   ;;;;;;;;.  Congratulations! HOMER has been installed!
 ;;;;;;;;;;;;
 ;;;; ;; ;;;; <--------------- INVITE --------------- 
 ;;;; ;; ;;;; --------------- 200 OK --------------->
 ;;;; .. ;;;;
 ;;;;    ;;;; Your system should be now ready to rock!
 ;;;; ;; ;;;; Please verify/complete the configuration
 ,;;; ;; ;;;; files generated by the installer below.
 ;;;;;;;;;;;;
  :;;;;;;;;;  THIS SCRIPT IS PROVIDED AS-IS, USE AT
   ;;;;;;;;   YOUR *OWN* RISK, REVIEW LICENSE &amp; DOCS

*************************************************************

* Verify configuration for HOMER-API:
 '/var/www/html/homer/api/configuration.php'
 '/var/www/html/homer/api/preferences.php'

* Verify capture settings for Homer/Kamailio:
 '/etc/kamailio/kamailio.cfg'

* Start/stop Homer SIP Capture:
 '/sbin/kamctl start|stop'

* Access HOMER UI:
 http://1.2.3.4
 [default: admin/test1234]

* Send HEP/EEP Encapsulated Packets:
 hep://1.2.3.4:9060

**************************************************************

IMPORTANT: Do not forget to send Homer node some traffic! 😉
 For our capture agents, visit http://github.com/sipcapture
 For more help and information visit: http://sipcapture.org

**************************************************************
 Installer Log saved to: /tmp/homer_installer.sh.6095.log

Selanjutnya adalah bagaimana setup Capture agent. Kebetulan yang akan dimonitor adalah server FreeSWITCH v1.6.19. Ada dua cara untuk melakukannya, yang pertama dengan mengaktifkan capture agent bawaan dari FreeSWITCH. Caranya:

  • Tambahkan ip address Homer di sofia.conf.xml (misal: 1.2.3.4 port 9060) dengan menambahkan baris berikut di global_settings:
<param name="capture-server" value="udp:1.2.3.4:9060"/>
  • Lalu buka sip profiles yang hendak dimonitor. Dalam instalasi FreeSWITCH biasanya sudah ada default sip profile, misal, internal.xml, tambahkan baris berikut
<param name="sip-capture" value="no"/>
  • Setelah perubahan di atas disimpan, reload sip profile dari fs_cli dengan perintah:
freeswitch@localhost> sofia profile internal restart
  • Aktifkan HEP agent melalui fs_cli dengan perintah:
freeswitch@localhost> sofia profile internal capture on

 

Cara kedua adalah dengan menginstall Captagent di server yang sama dengan FreeSWITCH. Langkahnya adalah sebagai berikut:

  • Karena FreeSWITCH saya berjalan di atas Centos 7, maka perlu ditambahkan package berikut:

yum -y install json-c-devel expat-devel libpcap-devel flex-devel automake libtool bison libuv-devel flex

  • Clone captagent  dan install:
cd /usr/src
git clone https://github.com/sipcapture/captagent.git captagent
cd captagent
./build.sh
./configure
make && make install
  • Setelah selesai menjalankan script di atas, lokasi default konfigurasi berada di /usr/local/captagent/etc/captagent. File pertama yang perlu diedit adalah file protocol_sip.xml. Edit bagian enable=”false” menjadi enable=”true”
<profile name="proto_sip" description="PROTO SIP" enable="true" serial="2014010402">
  • Kemudian edit file transport_hep.xml untuk diaktifkan dan dicantumkan alamat ip server Homer/Capture Server seperti berikut:
<profile name="hepsocket" description="Transport HEP" enable="true" serial="2014010402">
            <settings>
                <param name="version" value="3"/>
                <param name="capture-host" value="1.2.3.4"/>
                <param name="capture-port" value="9060"/>
  • Untuk memudahkan startup captagent di Centos 7, salin file startup dan jalakan perintah berikut ini :
root~# cp /usr/src/captagent/init/el/7/captagent.service /usr/lib/systemd/system/captagent.service
root~# cp /usr/src/captagent/init/el/captagent.sysconfig /etc/sysconfig/captagent
root~# systemctl enable captagent
root~# systemctl start captagent
  • Login ke web Homer dan lakukan test call melalui server FreeSWITCH tersebut, tunggu beberapa saat, maka kita bisa mendapatkan log sepert berikut:

Banyak sekali yang bisa diexplore dari hasil log ini yang tidak bisa dibahas semua dalam satu postingan. Nanti kapan-kapan saya posting lagi cara memanfaatkan Homer lebih jauh. Setidaknya dari hasil log di atas saya bisa melakukan troubleshoot dengan merunut Call-id tanpa harus melototin file log dalam mode text:

Jika hendak mencari sebuah panggilan gagal, saya tinggal click reply code panggilan dari Leg A ke Leg B di jam yang disebutkan pada saat terjadi problem, misal, pada tanggal 11 November 2017 pukul 8.45 – 8.50 pelanggan anu mengalami gagal ke nomer tertentu. Saya bisa mengisi kolom search :

Lalu hasilnya ternyata ada log seperti ini:

Hanya perlu click pada kolom CallID di atas saya mendapatkan detail sesi.

Banyak sekali yang bisa dieksplore di sini, dan saya masih belom mendapatkan semuanya. Untuk lebih detail bagaimana memanfaatkan

Kelebihan Setup CaptAgent Server Tersendiri

Seperti yang telah dibahas di atas, agent bisa diaktifkan di aplikasi SIP yang sudah support seperti FreeSWITCH ver 1.6.8 ke atas, Asterisk versi 13 ke atas, Kamailio dan OpenSIPS.

Lalu bagaimana jika perangkat SIP yang tidak support sipcapture/Captagent seperti AudiCode, Sonus, atau bahkan Asterisk versi 11 ke bawah?

Gampang. Install Captagent di server tersendiri dengan minimal dua interface. Satu interface tanpa ip address dengan mode promiscuous  digunakan untuk menerima raw packet dari port mirror perangkat SIP yang sedang dimonitoring. Switch tentunya harus manageable. Lalu interface satunya lagi digunakan untuk mengirim paket HEP/EEP ke server Homer. Topologi nya kira-kira seperti ini (gambar saya ambil dari https://github.com/sipcapture/captagent):

HomerFlow

 

Links

 

 

2 thoughts on “Homer Untuk SIP dan RTP Monitoring/Troubleshoot

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>