En este post os vamos explicar como instalar Elasticsearch, Kibana y Logstash. Con estas 3 herramientas podemos tener nuestros registros logs centralizados, podremos realizar búsquedas avanzadas o analizar datos.
Instalar Java JDK
Para instalar JDK añadiremos el repositorio ppa, actualizaremos repositorios e instalaremos java, para ellos ejecutaremos:
# add-apt-repository ppa:webupd8team/java
# apt-get update
# apt-get install oracle-java8-installer
# java -version
El último comando nos sirve para ver si se ha instalado correctamente, nos ha de mostrar algo similar a:
java version “1.8.0_144”
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
Instalar Elasticsearch
Elasticsearch es un motor de búsqueda y análisis distribuido, para instalarlo añadiremos el repositorio de Elastic y procederemos con la instalación:
# wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
# apt-get update
# apt-get install elasticsearch
Ahora cambiaremos la configuración de Elasticsearch para que funcione con la IP Privada de nuestro servidor:
# vi /etc/elasticsearch/elasticsearch.yml
Añadiremos o modificaremos:
network.host: IP-Privada
Ahora arrancaremos Elasticsearch y configuraremos que arranque automáticamente al reiniciar el servidor.
# systemctl start elasticsearch
# systemctl enable elasticsearch
Instalar Kibana
Kibana te permite explorar, visualizar o descubrir datos. Además podemos obtener gráficas o colocar datos geográficos en cualquier mapa, para instalar Kibana:
# apt-get install kibana
Editaremos el fichero vi /etc/kibana/kibana.yml y añadiremos o modificaremos:
server.host: "IP-Privada"
elasticsearch.url: "http://IP-Privada:9200"
Ahora arrancaremos Kibana y configuraremos que arranque automáticamente al reiniciar el servidor.
# systemctl start kibana
# systemctl enable kibana
Instalar Nginx
Kibana funciona a través del puerto 5601, usaremos Nginx para redireccionar todo el tráfico del puerto 80 al puerto 5601 mediante el usuario adminkibana y la contraseña que elijamos.
# apt-get install nginx apache2-utils
# htpasswd -c /etc/nginx/htpasswd.kibana adminkibana
# echo > /etc/nginx/sites-available/default
Editaremos el fichero /etc/nginx/sites-available/default y modificaremos server_name y proxy_pass:
server {
listen 80;
server_name IP-Publica;
auth_basic "Acceso a Kibana";
auth_basic_user_file /etc/nginx/htpasswd.kibana;
location / {
proxy_pass http://IP-Privada:5601;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
Ahora arrancaremos Nginx y configuraremos que arranque automáticamente al reiniciar el servidor:
# systemctl start nginx
# systemctl enable nginx
Instalar Logstash
Logstash nos permite centralizar, transformar y almacenar nuestros datos. En el siguiente artículo os enseñamos más ejemplos de filtros. Para instalar Logstash ejecutaremos:
# apt-get install logstash
Ahora crearemos los siguiente filtros, contenido para /etc/logstash/conf.d/02-beats-input.conf:
input {
beats {
port => 5044
ssl => false
}
}
Contenido para /etc/logstash/conf.d/10-syslog-filter.conf:
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
add_field => [ "program", "%{syslog_program}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Ahora modificaremos hosts en /etc/logstash/conf.d/30-elasticsearch-output.conf :
output {
elasticsearch {
hosts => "IP-Privada:9200"
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Ahora arrancaremos Logstash y configuraremos que arranque automáticamente al reiniciar el servidor.
# systemctl start logstash
# systemctl enable logstash
Cargar Beats Dashboards
# wget https://github.com/elastic/beats-dashboards/archive/master.zip
# unzip master.zip
# cd beats-dashboards-master
Editaremos load.sh y modificamos la linea que contenga ELASTICSEARCH:
ELASTICSEARCH=http://IP-Privada:9200
Entraremos en Kibana http://IP-Pública con el usuario y contraseña que hemos creado en “Instalación Nginx”, dentro de Kibana iremos a Management > Index Patterns haremos clic en filebeat-* y luego en la “estrella”. Así establecemos este filtro por defecto.
Ya tenemos nuestro ELK funcionando:
Puede que te interesen estos otros artículos: Filtros para Logstash o Como enviar datos a ELK mediante Filebeats.