O Homer é um sistema de captura do protocolo SIP e de monitoria de sistemas de Voz sobre Internet Protocolo (VoIP). Este procedimento mostrará como instalar o Homer em um servidor CentOS v7.
CaptAgent é um agente de protocolo de encapsulamento Homer (HEP). Ele é usado para coletar dados relevantes em um servidor VoIP em sistema operacional Linux, localhost, encapsulá-lo para transporte e enviá-lo para Homer. Este procedimento mostrará como instalá-lo no CentOS v6, v7 e Debian v8.
Sofware:
CentOS v7;
Homer v5;
Kamailio v5
CaptAgent v6
Pré Instalação:
Desabilitando o SE Linux, vamos checar o status do mesmo com o comando abaixo:
# sestatus
Se não estiver desativado, faça o seguinte procedimento e reinicie o servidor:
# sed -i 's/\(^SELINUX=\).*/\SELINUX=disabled/' /etc/selinux/configRetornando ao sistema operacional execute novamente sestatus e observe a resposta que se encontra desativado. Uma vez estando desativado o SE Linux, vamos desativar o Firewall, lembrando que é recomendado desativar o firewall somente no processo de instalação dos serviços. Após estar com tudo funcional é altamente recomendado fazer uma boa politica de firewall. Para desativa siga com os próximos comando:
# systemctl disable firewalld
# systemctl disable iptables
# systemctl stop firewalld
# systemctl stop iptables
Um analisador do tipo Carrier, é importante estar com o Timezone correto. Vamos instalar e setar o Timezone de nosso sistema de monitoria ToIP. Execute os comando abaixo:
# yum install ntp
# systemctl enable ntpd
# systemctl start ntpd
Procurando o Timezone;
# tzselect
Exemplo de como setar o Timezone:
# timedatectl set-timezone America/São_Paulo
NOTA: Caso queira conhecer mais sobre NTP, o site NTP.br é uma ótima fonte de estudos.
Agora vamos proceder com a instalação dos pré requisitos:
# yum -y install epel-release
# yum -y update
# yum -y install git nano gcc httpd mariadb mariadb-server mariadb-devel php php-mysql bison pcre-devel libpcap-devel flex GeoIP-devel
Instalando o Homer:
# cd /usr/src/
# git clone https://github.com/sipcapture/homer-ui.git
# git clone https://github.com/sipcapture/homer-api.git
# git clone https://github.com/sipcapture/homer-config.git
Opcionalmente, mude a senha padrão do banco de dados nos seguintes arquivos:
# /usr/src/homer-api/api/configuration_example.php
# vim /usr/src/homer-api/scripts/mysql/rotation.ini
# /usr/src/homer-api/sql/mysql/homer_user.sql
# /usr/src/homer-config/sipcapture/sipcapture.kamailio5
Copie os arquivos:
# cp -R /usr/src/homer-ui/* /var/www/html
# cp -R /usr/src/homer-api/api /var/www/html/api
# mkdir /opt/homer
# cp /usr/src/homer-api/scripts/mysql/* /opt/homer
# cp /usr/src/homer-api/scripts/mysql/* /opt/homer
# chmod +x /opt/homer/*
Renomeie as preferências e os arquivos de configuração:
# cd /var/www/html/api# mv preferences_example.php preferences.php
# mv configuration_example.php configuration.php
Editando as preferências:
# vim /var/www/html/api/preferences.php
define('RTCP_TABLE_PARTITIOM', 1);
Mudar o REMOTE_LOG_URL e EXTERNAL_AUTH_URL para o IP do Homer.
Mudar ALARM_FROMEMAIL, ALARM_TOEMAIL e HOMER_TIMEZONE, como necessário.
Altere o diretório do socket MySQL e o nome da compatibilidade com o CentOS v7.
Procedimentos com o MariaDB:
# systemctl enable mariadb
# systemctl restart mariadb
# mysql -u root -p < homer_databases.sql
# mysql -u root -p < homer_user.sql
# mysql -u root -p homer_data < schema_data.sql
# mysql -u root -p homer_configuration < schema_configuration.sql
# mysql -u root -p homer_statistic < schema_statistic.sql
Agora bloqueie o servidor de Banco de Dados.
# mysql_secure_installation
NOTA: Responda Y para tudo!
Vamos criar agora, um script de rotação, vamos configurar ele no CRON para ser diário.
# crontab -e
O CRON diário deve ser executado antes que o Homer possa começar a capturar dados.
/opt/homer/homer_mysql_rotate
Vamos agora instalar o Kamailio, a instalação de compilação é necessária para usar o módulo GeoIP. Este procedimento de compilação é instalado nos mesmos diretórios que os RPM Kamailio oficiais, portanto, é intercambiável com uma instalação RPM.
Vamos instala o GeoIP Data:
Deu um erro na hora de copilar o Kamailio, eu resolvi seguindo os passos deste post: GeoIP
Depois vou arrumar aqui.Deu um erro na hora de copilar o Kamailio, eu resolvi seguindo os passos deste post: GeoIP
# mkdir /usr/share/GeoIP
# cd /usr/share/GeoIP/
# wget -N -q http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
# mv GeoLiteCity.dat.gz GeoIPCity.dat.gz
# gunzip GeoIPCity.dat.gz
# cd /usr/src
# git clone -b 5.0 --single-branch https://github.com/kamailio/kamailio.git
# cd /usr/src/kamailio
# make include_modules="db_mysql sipcapture pv textops rtimer xlog sqlops htable sl siputils geoip" cfg \ prefix=/usr/ cfg_prefix=/
# make all && make install
Copie e modifique kamailio.cfg
# sed -i "s/GeoIP.dat/GeoIPCity.dat/g" /etc/kamailio/kamailio.cfg
# sed -i "s/lib\/x86_64-linux-gnu/lib64/g" /etc/kamailio/kamailio.cfg
Vamos habilitar o GeoIP:
# vim /etc/kamailio/kamailio.cfg
#!define WITH_HOMER_GEO
Criamos agora o arquivo de inicialização do tipo SystemD:
# vim /etc/systemd/system/kamailio.service
[Unit]
Description=Kamailio - the Open Source SIP Server
After=network-online.target
After=mariadb.service httpd.service
[Service]
Type=forking
Environment='CFGFILE=/etc/kamailio/kamailio.cfg'
EnvironmentFile=/etc/default/kamailio
ExecStartPre=/usr/bin/mkdir -m=2770 -p /var/run/kamailio
ExecStartPre=/usr/bin/chown kamailio:kamailio /var/run/kamailio
PIDFile=/var/run/kamailio.pid
ExecStart=/usr/sbin/kamailio -P /var/run/kamailio.pid -f $CFGFILE -m $SHM_MEMORY -M $PKG_MEMORY -u $USER -g $GROUP
ExecStopPost=/usr/bin/rm -f /var/run/kamailio.pid
Restart=on-abort
[Install]
WantedBy=multi-user.target
Criar o usuário Kamailio:
# useradd kamailio
Copias o arquivo de ambiente do Kamailio:
# cp /usr/src/kamailio/pkg/kamailio/centos/7/kamailio.sysconfig /etc/default/kamailio
Habilitar e Inicializar o Kamailio:
# systemctl enable kamailio
# systemctl start kamailio
Configurar o Apache2 para o projeto:
# chown -R apache. /var/www/html
# vim /etc/httpd/conf.d/homer.conf
<VirtualHost *:80>
ServerName homer
# Indexes + Directory Root.
DirectoryIndex index.php index.html index.htm
DocumentRoot /var/www/html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/html >
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
</VirtualHost>
# systemctl enable httpd
# systemctl restart httpd
Vamos a prova dos nove! http://ip_do_seu_servidor
Usuário: admin
Password: test123
NOTA: Certifique-se de que o intervalo de data/hora no canto superior direito esteja correto na pesquisa.
Politicas do Firewall, importante, substitua x.x.x.x pelo IP do servidor ToIP ou VoIP que vai ser monitorado e repita conforme necessário.
# systemctl enable firewalld
# systemctl start firewalld
# firewall-cmd --permanent --zone=public --add-service={http,https}
# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="x.x.x.x" accept'
# firewall-cmd --reload
O CaptAgent, Universal Homer Encapsulation Protocol (HEP) é o Agente. Instale em qualquer servidor ToIP ou VoIP que você deseja monitorar. Alternativamente, o Asterisk PJSIP, Freeswitch, Kamailio, OpenSIPS e RTPEngine têm a capacidade de habilitar o suporte HEP nativo. Os clientes nativos podem não suportar todos os recursos. Por exemplo, o Freeswitch v1.6 atualmente não suporta RTCP para estatísticas de QoS. Não se preocupe que o Asterisk SIP só não tem HEP nativo, mais pode ser utilizado com o Agente.
Para usar no Debian 8 (jessie) execute o seguinte comando para instalar os pré requisitos.
# apt-get install build-essential git-core libexpat-dev libpcap-dev libjson0-dev libtool automake flex bison libuv-dev
Para o CentOS v6 ou v7 execute o seguinte comando para instalar os pré requisitos.
# yum -y install epel-release
# yum -y install git gcc json-c-devel expat-devel libpcap-devel flex-devel automake libtool bison flex libuv-devel
Procedendo com a instalação.
# cd /usr/src
# git clone https://github.com/sipcapture/captagent.git
# cd captagent
# ./build.sh
# ./configure
# make && make install
Configurando o socket_pcap.xml. A única alteração necessária é habilitar na seção do RTCP (enable= true). Se não estiver usando a interface de rede eth0, tente alterar o valor "dev" para (value="any") para ambas as seções.
# vim /usr/local/captagent/etc/captagent/socket_pcap.xml
<?xml version="1.0"?>
<document type="captagent_module/xml">
<module name="socket_pcap" description="HEP Socket" serial="2014010402">
<profile name="socketspcap_sip" description="HEP Socket" enable="true" serial="2014010402">
<settings>
<param name="dev" value="any"/>
<param name="promisc" value="true"/>
<param name="reasm" value="false"/>
<param name="tcpdefrag" value="false"/>
<param name="capture-plan" value="sip_capture_plan.cfg"/>
<param name="filter">
<value>portrange 5060-5091</value>
</param>
</settings>
</profile>
<profile name="socketspcap_rtcp" description="RTCP Socket" enable="true" serial="2014010402">
<settings>
<param name="dev" value="any"/>
<param name="promisc" value="true"/>
<param name="reasm" value="false"/>
<!-- size in MB -->
<param name="ring-buffer" value="20"/>
<!-- for rtp && rtcp < 250 -->
<param name="snap-len" value="256"/>
<param name="capture-filter" value="rtcp"/>
<param name="capture-plan" value="rtcp_capture_plan.cfg"/>
<param name="filter">
<value>portrange 5060-50000 and len >=50 </value>
</param>
</settings>
</profile>
</module>
</document>
Agora vamos configurar transport_hel.xml
# vim /usr/local/captagent/etc/captagent/transport_hep.xml
NOTA: Altere x.x.x.x para o endereço IP do seu servidor de monitoramento Homer e altere a porta para 9060. Opcionalmente, altere o número de identificação de captura para identificar de forma exclusiva esta instância do CaptAgent.
<?xml version="1.0"?>
<document type="captagent_module/xml">
<module name="transport_hep" description="HEP Protocol" serial="2014010402">
<profile name="hepsocket" description="Transport HEP" enable="true" serial="2014010402">
<settings>
<param name="version" value="3"/>
<param name="capture-host" value="x.x.x.x"/>
<param name="capture-port" value="9060"/>
<param name="capture-proto" value="udp"/>
<param name="capture-id" value="100"/>
<param name="capture-password" value="myhep"/>
<param name="payload-compression" value="false"/>
</settings>
</profile>
</module>
</document>
Neste pondo vamos configurar o sip_capture_plan.cfg
NOTA: Descomente a seção if (sip_has_sdp ())
# vim /usr/local/captagent/etc/captagent/captureplans/sip_capture_plan.cfg
capture[pcap] {
# here we can check source/destination IP/port, message size
if(msg_check("size", "100")) {
#Do parsing
if(parse_sip()) {
#Can be defined many profiles in transport_hep.xml
if(!send_hep("hepsocket")) {
clog("ERROR", "Error sending HEP!!!!");
}
if(sip_has_sdp())
{
#Activate it for RTCP checks
if(!check_rtcp_ipport())
{
clog("ERROR", "ALREADY EXIST");
}
}
#Duplicate all INVITEs to JSON transport
# if(sip_is_method() && sip_check("method","INVITE")) {
# #Can be defined many profiles in transport_json.xml
# if(!send_json("jsonsocket")) {
# clog("ERROR", "Error sending JSON!!!");
# }
# }
}
}
drop;
}
Configurando o Init ou SystemD e o Defaul.
Debian v8
# cp /usr/src/captagent/init/deb/jessie/captagent.service /etc/systemd/system/
# cp /usr/src/captagent/init/deb/debian/captagent.default /etc/default/captagent
# systemctl daemon-reload
# systemctl enable captagent
# systemctl start captagent
CentOS v7
# cp /usr/src/captagent/init/el/7/captagent.service /etc/systemd/system/
# cp /usr/src/captagent/init/el/captagent.sysconfig /etc/sysconfig/captagent
# systemctl daemon-reload
# systemctl enable captagent
# systemctl start captagent
CentOS v6
# cp /usr/src/captagent/init/el/6/captagent.init /etc/init.d/captagent
# cp /usr/src/captagent/init/el/captagent.sysconfig /etc/sysconfig/captagent
Faça as alterações em init.d do nome do diretorio "bin" para "sbin"
# vim /etc/init.d/captagent
# APP_FILE=/usr/local/captagent/sbin/$prog
# chmod 755 /etc/init.d/captagent
# chkconfig --add captagent
# chkconfig captagent on
# service captagent start
Screenshots
Fonte: PowerPBX.org
Sobre
O HOMER faz parte da pilha SIPCAPTURE: uma plataforma robusta, portadora e modular de VoIP e RTC Capture Framework para análise e monitoramento com suporte nativo para todas as principais plataformas de Voz OSS e agentes de captura agnósticos do fornecedor. O HOMER conta com milhares de implementações em todo o mundo, incluindo vendedores notáveis da indústria, operadores de rede de voz e empresas, como a Fortune 500, fornecendo pesquisa avançada, análise de ponta a ponta e capacidades de detalhamento de pacotes para ITSPs, provedores de VoIP e Fornecedores de troncos usando e confiando em serviços VoIP e Tecnologias RTC - Todos são 100% Open-Source.
Fonte: SIPCAPTURE
0 comentários:
Postar um comentário