Vector: herramienta de monitorización en tiempo real de Netflix

Hace unos días Netflix liberaba la herramienta que utilizan internamente para analizar el rendimiento de sus instancias: Vector. Esta herramienta no deja de ser una aplicación web que se conecta a la API de PCP para obtener las métricas. PCP es un demonio que se instala en cada una de las instancias o servidores que se quiere monitorizar.

Para hacerlo funcionar se pueden seguir varios manuales:

En este último explica como compilar PCP para generar paquetes .rpm o .deb según la distribución GNU/Linux donde lo querramos instalar. Para crear el procedimiento se basa en el fichero Vagrantfile del Github de PCP. Entonces para crear nuestros paquetes y poder redistribuirlos en varias máquinas seguiremos los siguientes pasos:

RPM

Clonaremos el repositorio de PCP:

$ git clone git://git.pcp.io/pcp

Instalaremos las dependencias y compilamos con el script Makepkgs. Hay que tener en cuenta que existen dependencias obligatorias y otras opcionales. Se pueden comprobar lanzando el script ./qa/admin/check-vm. Si falla alguna de las opcionales, como la libmicrohttpd-devel, es posible que algunas funcionalidades o paquetes no se creen.

$ cd pcp
$ yum -y groupinstall 'Development Tools'
$ yum -y install git ncurses-devel readline-devel man libmicrohttpd-devel qt4-devel\
  python26 python26-devel perl-JSON sysstat perl-TimeDate \
  perl-XML-TokeParser perl-ExtUtils-MakeMaker perl-Time-HiRes \
  systemd-devel bc cairo-devel cyrus-sasl-devel \
  systemd-devel libibumad-devel libibmad-devel papi-devel libpfm-devel \
  rpm-devel perl-Spreadsheet-WriteExcel perl-Text-CSV_XS bind-utils httpd \
  python-devel nspr-devel nss-devel python-ctypes nss-tools \
  perl-Spreadsheet-XLSX ed cpan valgrind time xdpyinfo rrdtool-perl
$ ./Makepkgs

Una vez compilado podemos instalar los paquetes que se acaban de crear:

$ rpm -ivh pcp-*/build/rpm/*.rpm

Los servicios ya se pueden habilitar y arrancar y verificaremos que el servicio pmwebd está escuchando en el puerto 44323:

$ systemctl enable pmcd 
$ systemctl enable  pmwebd
$ systemctl start pmcd 
$ systemctl start pmwebd
$ netstat -anp | grep ':44323'
tcp        0      0 0.0.0.0:44323     0.0.0.0:*   LISTEN      8970/pmwebd
tcp        0      0 :::44323          :::*        LISTEN      8970/pmwebd

DEB

Para generar los .deb empezaremos también clonando el repositorio, instalando las dependencias y compilando. El script Makepkgs detecta que se trata de una distribución basada en Debian y generará los paquetes .deb:

# apt-get update
# apt-get install -y  '^(libreadline|libpapi|libpfm4|libcoin80|libicu)-dev$' \
    bc bison curl flex  git  g++  dpkg-dev  pkg-config  debhelper chrpath \
        python-all  python-all-dev  libnspr4-dev  libnss3-dev  libsasl2-dev  libmicrohttpd-dev  libavahi-common-dev \
        libqt4-dev  autotools-dev  autoconf  gawk  libxml-tokeparser-perl  libspreadsheet-read-perl gdb sysv-rc-conf \
    libcairo2-dev sysstat valgrind apache2 realpath unbound \
    libibumad-dev libsoqt-dev libsoqt-dev-common libnss3-tools libibmad-dev x11-utils
#./Makepkgs

Una vez generados los paquetes se podrán instalar, arrancar los servicios y comprobar que el demonio pmwebd esta escuchando en el puerto 44323:

# dpkg -i build/deb/*.deb
# service pcp start
# service pmwebd start

Instalación de Vector:

El último paso será la instalación del propio Vector. Deberemos tener instalados con antelación NodeJS ya que los instaladores se basan en el. Una vez instalado, instalaremos las herramientas bower y gulp (en Red Hat):

$ yum install nodejs npm
$ npm install -g bower
$ npm install -g gulp

A continuación clonaremos el repositorio de Vector en github e instalaremos las dependencias con bower. Accederemos al directorio app y arrancaremos un servidor HTTP con Python escuchando en el puerto 8080:

$ git clone https://github.com/Netflix/vector.git
$ cd vector/
$ bower install
$ cd app/
$ python -m SimpleHTTPServer 8080

Con un navegador apuntaríamos a http://localhost:8080 y ya aparecerá la interfaz de Vector. En el campo de host podemos poner el nombre o la IP de la máquina que queremos monitorizar. Así es como se muestran las gráficas al iniciar un Benchmark:

vector1vector2

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s