wiki/HowtoELK.md

173 lines
4.7 KiB
Markdown
Raw Permalink Normal View History

2016-09-20 13:12:19 +02:00
---
title: Howto Stack Elastic
categories: nosql pack
2016-09-20 13:12:19 +02:00
---
Cette documentation décrit l'installation et la configuration de la suite Elastic, anciennement nommée **ELK** (Elasticsearch + Logstash + Kibana).
2016-09-20 13:12:19 +02:00
## Pré-requis
2016-09-20 13:12:19 +02:00
Les composants de la suite doivent être installés à partir du dépôt APT de la société Elastic (éditrice de la suite Elastic)
2016-09-20 13:12:19 +02:00
~~~
# echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" >> /etc/apt/sources.list.d/elastic.list
# cd /etc/apt/trusted.gpg.d
# wget https://artifacts.elastic.co/GPG-KEY-elasticsearch -O GPG-KEY-elasticsearch.asc
# chmod 644 GPG-KEY-elasticsearch.asc
2016-09-20 13:12:19 +02:00
~~~
Pour Elasticsearch et Logstash, il faut avoir Java 1.8, disponible depuis les `jessie-backports`.
2016-09-20 13:12:19 +02:00
~~~
# apt install openjdk-8-jre
# update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
~~~
2016-09-20 13:12:19 +02:00
## Elasticsearch
2016-09-20 13:12:19 +02:00
Il existe un guide détaillé d'installation et configuation pour Elasticsearch : [HowtoElasticsearch#installation]().
2016-09-20 13:12:19 +02:00
### Installation
~~~
# apt install elasticsearch
~~~
2016-09-20 13:12:19 +02:00
### Démarrage
2016-09-20 13:12:19 +02:00
~~~
# systemctl enable elasticsearch
# systemctl start elasticsearch
2016-09-20 13:12:19 +02:00
~~~
### Configuration
2016-09-28 10:39:00 +02:00
Préciser *node.name* dans le fichier `/etc/elasticsearch/elasticsearch.yml` :
2016-09-20 13:12:19 +02:00
~~~{.yaml}
node.name: bar
~~~
2016-09-20 13:12:19 +02:00
## Logstash
2016-09-20 13:12:19 +02:00
Logstash est un service qui récupère des données depuis des sources variées (ports TCP/UDP, fichiers…), les transforme et les renvois vers des sorties variées (fichiers, Elasticsearch, syslog…).
C'est un logiciel écrit en Ruby, qui tourne sur une JVM (grace à JRuby).
Documentation officielle : <https://www.elastic.co/guide/en/logstash/5.0/index.html>
2016-09-20 13:12:19 +02:00
### Installation
2016-09-20 13:12:19 +02:00
~~~
# apt install logstash
# systemctl enable logstash
# systemctl start logstash
2016-09-20 13:12:19 +02:00
~~~
Dans `/etc/default/logstash` il faut penser à ajuster la ram allouée.
2017-10-27 09:59:56 +02:00
Logstash fait lui-même la rotation et la compression des logs, mais ne les supprime jamais. On peut ajouter ce script en cron :
2017-10-27 09:59:39 +02:00
~~~{.bash}
#!/bin/sh
LOG_DIR=/var/log/logstash
MAX_AGE=365
find ${LOG_DIR} -type f -user logstash -name "logstash.log.*.gz" -mtime +${MAX_AGE} -delete
find ${LOG_DIR} -type f -user root -name "logstash.err.*.gz" -mtime +${MAX_AGE} -delete
find ${LOG_DIR} -type f -user root -name "logstash.stdout.*.gz" -mtime +${MAX_AGE} -delete
~~~
2016-09-20 13:12:19 +02:00
### Configuration
2016-09-28 10:39:00 +02:00
À ce stade, aucun "pipeline" Logstash n'est configuré.
Voir <https://www.elastic.co/guide/en/logstash/5.0/configuration.html>
2016-09-28 10:39:00 +02:00
### Ajout de plugins
Il est possible d'installer des plugins logstash via la commande `logstash-plugin`.
Pour installer par exemple le plugin « logstash-input-jdbc » :
~~~
# cd /usr/share/logstash/
/usr/share/logstash# bin/logstash-plugin install logstash-input-jdbc
Validating logstash-input-jdbc
Installing logstash-input-jdbcio/console on JRuby shells out to stty for most operations
Installation successful
~~~
## Kibana
2016-09-20 13:12:19 +02:00
Kibana est une interface de visualisation des donnes stockées dans Elasticsearch.
C'est un logiciel écrit principalement en NodeJS, où tout est embarqué dans un processus principal.
Documentation officielle : <https://www.elastic.co/guide/en/kibana/5.0/index.html>
2016-09-20 13:12:19 +02:00
### Installation
2016-09-20 13:12:19 +02:00
~~~
# apt install kibana
2016-09-20 13:12:19 +02:00
~~~
~~~
# vim /etc/logrotate.d/kibana
/var/log/kibana/*.log {
daily
rotate 7
copytruncate
compress
delaycompress
missingok
notifempty
}
~~~
### Démarrage
2016-09-28 10:39:00 +02:00
~~~
# systemctl enable kibana
# systemctl start kibana
2016-09-28 10:39:00 +02:00
~~~
L'interface principale est disponible sur <http://127.0.0.1:5601/>
2016-09-20 13:12:19 +02:00
### Proxy
2016-09-28 14:06:12 +02:00
Kibana ne gère pas d'authentification. Pour le rendre accessible de manière sécurisée, il est conseillé de le placer derrière un reverse proxy, par exemple Nginx.
~~~
upstream kibana {
server 127.0.0.1:5601 fail_timeout=0;
}
server {
charset utf-8;
# ajouter les règles d'authentification
listen _IP_PUBLIQUE_:80;
server_name _HOSTNAME_;
location / {
proxy_redirect off;
proxy_pass http://kibana/;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host;
}
}
~~~
2016-09-20 13:12:19 +02:00
## Conseils
2016-09-20 13:12:19 +02:00
* utiliser des certificats SSL (nativement géré par les logiciels) pour que les données circulent de manière chiffrée (surtout entre filebeat et logstash, car ça passe par Internet).
2017-02-07 11:21:07 +01:00
## Support
2017-02-07 11:25:03 +01:00
Une grille officielle de support est disponible sur <https://www.elastic.co/support/matrix> Elle couvre la compatibilité avec les OS, JVM, navigateurs…
2017-02-07 11:21:07 +01:00
La politique de durée de support des versions est disponible sur <https://www.elastic.co/support/eol>