Description :

Nous allons voir comment installer Elastic Search.

Installation :

Nous partirons d'une VM Centos 6.7 sans iptables, SELinux pour la démo.

Java

1 yum -y install java-1.8.0-openjdk

Elasticsearch

Récupération du package :

1 cd /usr/src/
2 wget https://download.elasticsearch.org/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/5.0.0-alpha2/elasticsearch-5.0.0-alpha2.rpm

Installation

1 yum localinstall elasticsearch-5.0.0-alpha2.rpm

Logstash

Récupération de package :

1 wget https://download.elastic.co/logstash/logstash/packages/centos/logstash-5.0.0-alpha2.noarch.rpm

Installation

1 yum localinstall logstash-5.0.0-alpha2.noarch.rpm

Kibana

Récupération de package :

1 wget https://download.elastic.co/kibana/kibana/kibana-5.0.0_alpha2-1.x86_64.rpm

Installation

1 yum localinstall kibana-5.0.0_alpha2-1.x86_64.rpm

Configuration :

Elasticsearch

Modifier les lignes suivantes dans /etc/elasticsearch/elasticsearch.yml :

1 #limiter l'accès local 
2 network.host: localhost
3 
4 #Nom du node
5 node.name: ${HOSTNAME}

Gestion du service :

1 chkconfig --add elasticsearch
2 service elasticsearch start

Vérification

 1 curl http://127.0.0.1:9200
 2 {
 3   "name" : "es5",
 4   "cluster_name" : "elasticsearch",
 5   "version" : {
 6     "number" : "5.0.0-alpha2",
 7     "build_hash" : "e3126df",
 8     "build_date" : "2016-04-26T12:08:58.960Z",
 9     "build_snapshot" : false,
10     "lucene_version" : "6.0.0"
11   },
12   "tagline" : "You Know, for Search"
13 }

Logstash

Nous allons créer une configuration ultra basique pour commencer, on l'agrémentera au besoin par la suite.
Edition du fichier de configuration /etc/logstash/conf.d/es5.conf :

 1 input {
 2   #Ouverture en entrée d'un port d'écoute utilisant le protocol syslog
 3   tcp {
 4  port => 5544
 5  type => syslog
 6   }
 7   udp {
 8  port => 5544
 9  type => syslog
10   }
11 }
12 filter {
13   # Traitement type syslog, le type étant marqué sur les données entrant par nos ports de type syslog
14   if [type] == "syslog" {
15  grok {
16    # Si on ne veut pas garder le message non traité
17    overwrite => "message"
18    match => {
19      # rsyslong envoi des messages de type : <Numero>Ligne Syslog avec le message
20      #"message" => "^(?:<%{NONNEGINT:syslog_pri}>)?%{SYSLOGBASE2} %{GREEDYDATA:message}"
21      "message" => "%{SYSLOG5424PRI}%{SYSLOGBASE2} %{DATA:message}"
22    }
23    # on ajoute des tags perso, pratique pour filtrer dans l'interface kibana
24    add_tag => [ "syslog", "grokked" ]
25  }
26     }
27 }
28 # on stock dans elasticsearch
29 output {
30   elasticsearch {
31     hosts => "localhost"
32       template_overwrite => true
33   }
34 }

Gestion du service

1 chkconfig --add logstash
2 service logstash start

Vérification

1 service logstash status
2 logstash is running
3 
4 #Logstash sera fonctionnel quand les ports d'écoute seront ouvert :
5 lsof -i :5544
6 COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
7 java    4041 logstash   15u  IPv6  53611      0t0  TCP :5544 (LISTEN)
8 java    4041 logstash   40u  IPv6  53615      0t0  UDP :5544

Rsyslog

Ajouter à la fin du fichier de configuration /etc/rsyslog.conf

1 . @@127.0.0.1:5544

Pour générer des logs on forward tous les logs Logstash.

Gestion du service

1 service rsyslog restart

Génerer quelques logs

1 logger ${USER} test $(date)
2 logger ${USER} test $(date)
3 logger ${USER} test $(date)

Kibana

Gestion du service

1 service kibana start
2 kibana started
3 
4 chkconfig --add kibana

Vérification

1 lsof -i :5601                                                                   
2 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME 3 node 4173 kibana 10u IPv4 54297 0t0 TCP *:esmagent (LISTEN)

On peut maintenant utiliser un navigateur à l'adresse http://@IP_ES:5601.

Première connexion, configuration du pattern d'index :
index pattern

Le menu Discover :
index pattern

Visualisation
index pattern

Dashboard
index pattern

Nouveau dans kibana : la console
index pattern

Settings
index pattern

Création d'un line chart
index pattern