Oct 262015
 

Instalación de SiLK

En primer lugar, para obtener el paquete de instalación debemos rellenar el formulario en la página http://lucidworks.com/products/silk/#download_form. Una vez enviado el formulario, recibiremos en la dirección de email que hemos introducido un mensaje con el enlace para la descarga.

El paquete descargado en nuestro caso se llama SiLK-1.5.zip y ocupa 290 Mb

Para realizar la instalación, basta con descomprimir el fichero zip en un directorio de nuestra elección. Una vez descomprimido, podemos ver que el paquete contiene tres directorios, para cada uno de los componentes principales de SiLK:

  • solr-4.10.3 – El motor de búsqueda solr
  • solrWriterForLogStash – Una versión de LogStash que procesa los ficheros de log de accesos del servidor web, y los almacena en un índice solr
  • banana – Es el front-end que presenta el resultado del proceso estadístico del los datos almacenados en solr en forma de gráficos y tablas en un navegador web

Instalación de Java

El motor de búsqueda solr utilizado por SiLK se ejecuta en una máquina virtual Java, por lo que debemos disponer de un entorno de ejecución de Java (JRE) previamente instalado y operativo. Alternativamente podemos instalar el kit de desarrollo de java (JDK), que además del JRE, contiene también un compilador y otras herramientas.

En un sistema Linux Debian, la instalación se puede realizar fácilmente con el comando apt-get:

# apt-get install default-jdk

A continuación comprobamos la versión de java instalada con la opción “-version”:

# java -version
java version "1.7.0_85"
OpenJDK Runtime Environment (IcedTea 2.6.1) (7u85-2.6.1-6+deb8u1)
OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)

Configuración y ejecución de solr

El motor de búsqueda solr de ejemplo incluido en el paquete SiLK se ejecuta con los comandos:

$ cd SiLK-1.5/solr-4.10.3/SiLK
$ java -jar start.jar

Con esto, solr comienza a ejecutarse y queda a la espera de conexiones en el puerto 8983. Desde un navegador web, accedemos a la url “http://SERVIDOR:8983/solr”, y accedemos al frontend de solr:

SiLK-sample-collections

Como podemos ver, la instancia de solr ya contiene la definición de algunas colecciones de ejemplo. Entre ellas:

  • La colección “logstash_logs” es una colección vacía, preparada para que logstash almacene en ella los logs de acceso.
  • La colección “banana-int” es una colección vacía, preparada para almacenar en ella los paneles de control que se generen en banana.

Configuración y ejecución de LogStash

El componente LogStash de SiLK se encuentra en el directorio  “SiLK-1.5/solrWriterForLogStash/logstash_deploy”

Para ejecutar logstash, debemos preparar previamente un fichero de configuración “logstash_apache.conf” con tres secciones: input, filter y output.

Sección input

En esta sección se indican los ficheros de entrada a logstash.

input {
  file {
    path => "/path-al-directorio-de-ficheros-de-log/access.log"
    exclude => ["*.gz","*.zip","*.tgz"]
    type => "apache-access"
    sincedb_path => "apachelogs.sincedb"
    start_position => "beginning"
  }
}

Sección filter

filter {
  grok {

    type => "apache-access"
    patterns_dir => "./patterns"
    # See the following URL for a complete list of named patterns
    # logstash/grok ships with by default:
    # https://github.com/logstash/logstash/tree/master/patterns
    #
    # The grok filter will use the below pattern and on successful match use
    # any captured values as new fields in the event.

    pattern => "%{COMBINEDAPACHELOG}"
  }

  if ("_grokparsefailure" in [tags]) {
                drop{}
  }

  date {
    type => "apache-access"
    # Try to pull the timestamp from the 'timestamp' field (parsed above with
    # grok). The apache time format looks like: "18/Aug/2011:05:44:34 -0700"
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }

  mutate{
  #timestamp is a field used in LWS. Need to delete it here
        remove_field => [ "timestamp"]
  }

}

Sección output

output {
  stdout { debug => true codec => "rubydebug"}
  lucidworks_solr_lsv133 { collection_host => "localhost"
                           collection_port => "8983"
                           collection_name => "logstash_logs"
                           field_prefix => "event_"
                           force_commit => false
                           flush_size => 100 idle_flush_time => 1 }

}

Con este fichero de configuración, podemos ejecutar logstash con los comandos:

$ cd SiLK-1.5/solrWriterForLogStash/logstash_deploy
$ java -jar logstash-1.3.3-flatjar.jar agent -f logstash_apache.conf -p .

Típicamente, el fichero que se especifica en la sección input del fichero de configuración es un fichero de log de accesos “vivo”, sobre el que apache está registrando las solicitudes de acceso que se van recibiendo. Cuando logstash termina de procesar el contenido del fichero, continúa ejecutándose, y va procesando los nuevos registros conforme apache los va escribiendo en el fichero.

Si lo que queremos es procesar un fichero de log y que logstash finalice su ejecución cuando termine de procesarlo, deberemos cambiar la configuración de la sección input para que los datos a procesar se lean desde stdin:

input {
  stdin {
    type => "apache-access"
  }
}

y ejecutar logstash de la siguiente forma:

$ java -jar logstash-1.3.3-flatjar.jar agent -f logstash_apache.conf -p . < access.log

Configuración de banana

Para acceder a banana, basta con visitar desde un navegador la url:

http://localhost:8983/banana

si todo funciona correctamente, veremos el panel de control por defecto “Basic Dashboard with Pointers”:

banana-basic-dashboard

Si estamos utilizando una instancia de solr que se ejecuta en otro servidor, o en un puerto distinto del puerto por defecto 8983, deberemos editar el fichero de configuración :

SiLK-1.5/solr-4.10.3/SiLK/banana-webapp/webapp/config.js

En dicho fichero, deberemos especificar la url de acceso a solr, incluyendo el nombre completo del servidor y el puerto en el que da servicio.

A continuación podemos comenzar a definir y configurar paneles en los que se presentarán de forma gráfica las estadísticas que nos interesa obtener. Para no partir de cero, podemos descargar de github algunos ejemplos.

 Publicado por en 11:20 am

 Deja un comentario

(requerido)

(requerido)