En esta guía se verá como instalar Kibana, ElasticSearch y Logstash, como configurarlos y como crear paneles con ellos. Con respecto a logs logs, usaremos los de un servidor web Apache.
Como paso previo a empezar la instalación necesitamos tener instalado Java Runtime ya que Elasticsearch trabaja sobre este. Para ello ejecutamos lo siguiente:
apt-get install default-jre-headless
Instalar Elasticsearch
Para ello ejecutamos lo siguiente:
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
apt-get update
Con ello, hemos añadido el repositorio oficial para ahora, proceder con su instalación:
sudo apt-get install elasticsearch
Una vez instalado, tenemos que tener en cuenta que Elasticsearch consume una cantidad considerable de memoria, por lo que según la documentación oficial debemos fijar el límite de memoria en 1/4 de la memoria del servidor. En mi caso, estoy trabajando con una máquina vitual de 1GB de RAM por lo que he fijado el limite de memoria en 258 MB. Esto lo hacemos en el fichero /etc/elasticsearch/jvm.options. Dentro de este, tendremos comentados dos lineas, las cuales tendremos que descomentar y modificar por la cantidad que queramos:
## -Xms4g
## -Xmx4g
Una vez hecho esto, habilitamos y ejecutamos el mismo:
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch
Instalación Logstash
Simplemente tenemos que ejecutar lo siguiente:
sudo apt-get install logstash
Instalación Kibana
Podremos instalarlo ejecutando lo siguiente:
sudo apt-get install kibana
Configuración
Primero crearemos un template por defecto. Para ello crearemos el fichero template.json con el siguiente contenido:
{
"index_patterns": ["*"],
"template": {
"settings": {
"index": {
"number_of_shards": 1,
"number_of_replicas": 0
}
}
}
}
Luego, mediante CURL, con una petición POST subiremos esta template:
curl -XPUT -H'Content-type: application/json' http://localhost:9200/_index_template/defaults -d @template.json
En segundo lugar, procederemos a configurar logstash. Para ello haremos lo que hicimos antes con el Elasticsearch, limitar la cantidad de memoria que puede usar. Esto lo haremos sobre el fichero /etc/logstash/jvm.options modificando las mismas lineas
Luego, crearemos el siguiente fichero /etc/logstash/conf.d/apache.conf donde indicaremos de donde coger el input de los datos, es decir, los ficheros de log. Los filtros y el output:
input {
file {
path => '/var/www/*/logs/access.log'
start_position => 'beginning'
}
}
filter {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}" }
}
}
output {
elasticsearch { }
}
Una vez hecho lo anterior pondremos a funcionar el servicio:
sudo systemctl enable logstash
sudo systemctl start logstash
Lo segundo a configurar es el Kibana es habilitar el servicio:
sudo systemctl enable kibana
sudo systemctl start kibana
Por defecto, Kibana solo permite acceder de forma local, en mi caso he tenido que ejecutar lo siguiente para poder acceder de forma «remota»:
ssh -N -L 5601:localhost:5601 IPServidor
Con esto hemos creado un puente de forma que al acceder a localhost al puerto 5601, accecederemos al del servidor. Podemos comprobarlo accediendo: http://localhost:5601.
Debería cargar lo siguiente:
Visualizar logs
Para poder visualizar los logs tendremos que crear la vista en el panel de Kibana. Para ello vamos a la siguiente opción:
Y crearemos un index nuevo:
También podremos crear visualizaciones de forma que podemos ver todo de forma más gráfica y crear paneles con ello. Ejemplificaré esto creando un gráfico sencillo. Para ello crearemos una nueva visualización: