Et si on parlait d’élan ?

Élan, soit ELK en anglais, veut dire sans jeu de mot foireux ElasticSearch, Logstash et Kibana.

Qu’est ce que c’est ?

ELK est une suite logicielle qui permet d’indexer les données, de les filtrer et de les afficher.

Elasticsearch est un serveur utilisant Lucene pour l’indexation et la recherche des données (Source).

Logstash est un ETL (Extract-transform-load). Il permet d’effectuer des synchronisations massives d’information d’une source de données vers une autre (Source).

Kibana fournit des fonctions de visualisation sur du contenu indexé dans une grappe Elasticsearch (Source).

Comment ça marche ?

Dans mon contexte, je l’ai utilisé comme concentrateur de logs. Logstash va recevoir les logs, puis les filter pour ensuite les renvoyer dans ElasticSearch. Kibana va ensuite afficher les résultats de ce qu’on veut. Il va également permettre de créer des filtres par rapport à ce que l’on recherche. Du coup c’est finit les grep dans tous les sens pour trouver une info… là on a tout sous la main.

Donc on installe la suite logicielle (je te fais pas de dessins, il y a pas mal de docs dessus, et puis un apt install y’a rien de sorcier, on va plutôt aller voir un peu plus loin).
Ta suite est installée sauf que là, bah t’es un peu perdu(e) vu que la suite reste très difficile à documenter…

ElasticSearch :

On commence par configurer ElasticSearch (exemple que tu peux trouver ici).
Le fichier de conf se trouve dans /etc/elasticsearch/elasticsearch.yml :

###### Cluster ######
#Ici on met un nom de cluster... chaque node qui sera rattaché à ce cluster devra porter le même nom.
cluster.name: prout


###### Node ######
#Nom d'un node... afin qu'on puisse le reconnaître.
node.name: "prout-01"

#On peut déterminer si un node sera un master ou non. Sachant que tous vos nodes peuvent être ET master et data. ElasticSearch gère plutôt pas trop mal la répartition. 
#node.master: true
#node.data: true

###### Index ######
#On peut ici indiquer le nombre de shards et de replicas.
index.number_of_shards: 2
index.number_of_replicas: 1


###### Paths ######

path.conf: /path/to/conf
path.data: /path/to/data
path.logs: /path/to/logs

###### Network And HTTP ######

network.host: prout01.localhost
http.port: 9200

###### Discovery ######

discovery.zen.ping.unicast.hosts: ["host1", "host2:port"]
discovery.zen.minimum_master_nodes: 1
discovery.zen.ping_timeout: 100s
discovery.zen.fd.ping_timeout: 100s

C’est une conf basique. Simple. C’est surtout pour comprendre le principe.

ATTENTION : C’est une conf par défaut à adapter à votre environnement (elasticsearch écoute sur Internet par défaut, pas d’authentification, ça peut se faire trouer facilement). Donc soit on évite le localhost, soit on expose pas la machine à Internet.

Je vais m’attarder un peu sur les shards et les replicas… Un shard va répendre la donnée sur tous les nodes, alors qu’un replica va le répliquer. Le tout est de savoir combien il en faut en fonction des données à traiter etc… Perso j’ai commencé à m’y intéresser quand j’ai perdu un node donc bon…

Logstash :

Logstash va permettre de filter ce que vous voulez garder.
Attention cependant à bien organiser tout ça dès le départ. Pour MON besoin j’ai découpé les fichiers en fonction de l’ordre.

ATTENTION : Les inputs doivent toujours se trouver AVANT les filters. Les Outputs doivent toujours se trouver APRES.

Du coup j’ai fait un truc du genre :
001input
200filters
400output

Comme ça on peut ajouter d’autres fichiers par exemple 201filters qui aura un filtre firewall par exemple ou un autre pour les syslogs etc…
Pour les filtres là c’est un peu plus compliqué mais si tu cherches sur ton canard préféré tu devrais trouver quelques templates pour d’aiguiller.

Kibana :

Pour Kibana c’est bien plus simple je crois… On prend le /etc/kibana/kibana.yml (tu peux trouver un exemple ici) :

server.port: 5601
server.host: "localhost"
server.name: "prout01"
kibana.index: ".kibana"

Voilà à peu près ce qu’il vous faut pour que ça marche juste.

Donc on récapétète : on installe, on configure et on démarre et pof ça marche.

Si tu as des questions tu sais où me trouver. Je ferai peut être un article si ça intéresse des gens sur le fonctionnement un peu plus poussé de kibana… Mais c’est déjà un bon début pour commencer à comprendre le principe et jouer avec.

Merci aux gens pour les corrections et les compléments pour cet article <3

hackorn

Un peu magique, un peu trash, un peu tout, surtout rien. Mastodon

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.