Elasticsearch est un moteur de recherche open source basé sur Lucene, développé en Java. Il fournit un moteur de recherche en texte intégral distribué et mutualisé avec une interface Web HTTP Dashboard (Kibana). Les données sont interrogées, récupérées et stockées avec un schéma de document JSON. Elasticsearch est un moteur de recherche évolutif qui peut être utilisé pour rechercher toutes sortes de documents texte, y compris les fichiers journaux. Elasticsearch est le cœur de la "pile élastique" ou pile ELK.
Logstash est un outil open source pour la gestion des événements et des journaux. Il fournit un pipeline en temps réel pour les collectes de données. Logstash collectera vos données de journal, convertira les données en documents JSON et les stockera dans Elasticsearch.
Kibana est un outil de visualisation de données open source pour Elasticsearch. Kibana fournit une jolie interface Web de tableau de bord. Il vous permet de gérer et de visualiser les données d'Elasticsearch. Ce n'est pas seulement beau, mais aussi puissant.
Dans ce didacticiel, nous vous montrerons étape par étape l'installation et la configuration de la "pile élastique" sur le serveur CentOS 8. Nous allons installer et configurer Elasticsearch, Logstash et Kibana. Et puis configurez le Beats 'filebeat' sur les systèmes clients Ubuntu et CentOS.
Prérequis
- CentOS 8 64 bits avec 4 Go de RAM – elk-master
- CentOS 8 64 bits avec 1 Go de RAM - client01
- Ubuntu 18.04 64 bits avec 1 Go de RAM - client02
Ce que nous allons faire :
- Ajouter un référentiel élastique au serveur CentOS 8
- Installer et configurer Elasticsearch
- Installer et configurer le tableau de bord Kibana
- Configurer Nginx en tant que proxy inverse pour Kibana
- Installer et configurer Logstash
- Installer et configurer Filebeat
- Test
Étape 1 - Ajouter un référentiel élastique
Tout d'abord, nous allons ajouter la clé et le référentiel Elasticsearc au serveur CentOS 8. Avec le référentiel elasticsearch fourni par elastic.co, nous sommes en mesure d'installer des produits élastiques, notamment Elasticsearch, Logstash, Kibana et Beats.
Ajoutez la clé élastique au système à l'aide de la commande suivante.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Après cela, allez dans le répertoire '/etc/yum.repos.d' et créez un nouveau fichier de référentiel 'elasticsearch.repo'.
cd /etc/yum.repos.d/
vim elasticsearch.repo
Collez le référentiel elasticsearch ci-dessous.
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Enregistrez et fermez.
Vérifiez maintenant tous les référentiels disponibles sur le système à l'aide de la commande dnf ci-dessous.
dnf repolist
Et vous obtiendrez le référentiel elasticsearch qui a été ajouté au serveur CentOS 8.
En conséquence, vous pouvez installer des produits Elastic tels que Elasticsearch, Logstash et Kibana, etc.
Étape 2 - Installer et configurer Elasticsearch
Dans cette étape, nous allons installer et configurer Elasticsearch.
Installez le package Elasticsearch à l'aide de la commande dnf ci-dessous.
sudo dnf install elasticsearch -y
Une fois l'installation terminée, allez dans le répertoire '/etc/elasticsearch' et modifiez le fichier de configuration 'elasticsearch.yml' à l'aide de l'éditeur vim.
cd /etc/elasticsearch/
vim elasticsearch.yml
Décommentez les lignes suivantes et modifiez la valeur de chaque ligne comme ci-dessous.
network.host: 127.0.0.1
http.port: 9200
Enregistrez et fermez.
Facultatif :
Vous pouvez régler elasticsearch en modifiant le fichier de configuration JVM "jvm.options" et configurer la taille du tas en fonction de la quantité de mémoire dont vous disposez.
Modifiez la configuration JVM 'jvm.options' à l'aide de l'éditeur vim.
vim jvm.options
Modifiez la taille de tas min/max via la configuration Xms et Xmx comme ci-dessous.
-Xms512m
-Xmx512m
Enregistrez et fermez.
Ensuite, rechargez la configuration du gestionnaire systemd et ajoutez le service elasticsearch au démarrage.
sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
Démarrez ensuite le service elasticsearch.
sudo systemctl start elasticsearch
Par conséquent, elasticsearch est opérationnel derrière l'adresse IP locale "127.0.0.1" avec le port par défaut "9200" sur le serveur CentOS 8.
Vous pouvez vérifier elasticsearch en utilisant la commande curl ci-dessous.
curl -XGET 'http://127.0.0.1:9200/?pretty'
Et ci-dessous, le résultat que vous obtiendrez.
Étape 3 - Installer et configurer le tableau de bord Kibana
Après avoir installé elasticsearch, nous allons installer et configurer le tableau de bord Kibana sur le serveur CentOS 8.
Installez le tableau de bord Kibana à l'aide de la commande dnf ci-dessous.
sudo dnf install kibana
Une fois l'installation terminée, allez dans le répertoire '/etc/kibana' et éditez le fichier de configuration 'kibana.yml'.
cd /etc/kibana/
vim kibana.yml
Décommentez et modifiez la configuration de certaines lignes comme ci-dessous.
server.port: 5601
server.host: "127.0.0.1"
elasticsearch.url: "http://127.0.0.1:9200"
Enregistrez et fermez.
Ensuite, ajoutez le service kibana au démarrage du système et démarrez le service kibana.
sudo systemctl enable kibana
sudo systemctl start kibana
Le service Kibana est opérationnel sur le serveur CentOS 8, vérifiez-le à l'aide des commandes suivantes.
systemctl status kibana
netstat -plntu
Et vous obtiendrez le résultat ci-dessous.
Par conséquent, le service Kibana est opérationnel et exécute le port TCP par défaut '5601'.
Étape 4 - Configurer Nginx en tant que proxy inverse pour Kibana
Dans cette étape, nous allons installer le serveur Web Nginx et le configurer en tant que proxy inverse pour le tableau de bord Kibana.
Installez Nginx et httpd-tools à l'aide de la commande dnf ci-dessous.
sudo dnf install nginx httpd-tools
Une fois l'installation terminée, allez dans le répertoire '/etc/nginx/conf.d' et créez un nouveau fichier de configuration 'kibana.conf'.
cd /etc/nginx/conf.d/
vim kibana.conf
Collez la configuration suivante.
server {
listen 80;
server_name elk.hakase-labs.io;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.kibana-user;
location / {
proxy_pass http://127.0.0.1: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;
}
}
Enregistrez et fermez.
Ensuite, nous devons créer l'authentification de base pour sécuriser l'accès à Kibana. Remplacez l'utilisateur 'hakase' par le vôtre et exécutez la commande htpasspwd comme ci-dessous.
sudo htpasswd -c /etc/nginx/.kibana-user hakase
TYPE YOUR PASSWORD
Tapez votre mot de passe et testez la configuration nginx.
nginx -t
Assurez-vous qu'il n'y a pas d'erreur.
Ajoutez maintenant le service nginx au démarrage du système et démarrez le service nginx.
systemctl enable nginx
systemctl start nginx
En conséquence, l'installation et la configuration de Nginx en tant que proxy inverse pour Kibana Dashboard sont terminées.
Étape 5 - Installer et configurer Logstash
Dans cette étape, nous allons installer et configurer le logstash de l'expéditeur de journaux. Nous allons installer logstash, configurer les battements d'entrée, configurer le filtrage syslog à l'aide du plug-in logstash appelé "grok", puis configurer la sortie vers elasticsearch.
Installez logstash à l'aide de la commande dnf ci-dessous.
sudo dnf install logstash
Une fois l'installation terminée, allez dans le répertoire '/etc/logstash' et modifiez le fichier de configuration JVM 'jvm.options' à l'aide de l'éditeur vim.
cd /etc/logstash/
vim jvm.options
Modifiez la taille de tas min/max via la configuration Xms et Xmx comme ci-dessous.
-Xms512m
-Xmx512m
Enregistrez et fermez.
Ensuite, allez dans le répertoire '/etc/logstash/conf.d' et créez le fichier de configuration pour l'entrée beats appelé 'input-beat.conf'.
cd /etc/logstash/conf.d/
vim input-beat.conf
Collez la configuration suivante.
input {
beats {
port => 5044
}
}
Enregistrez et fermez.
Créez maintenant le fichier de configuration 'syslog-filter.conf'.
vim syslog-filter.conf
Collez la configuration suivante.
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}" ]
}
date {
match => [ "syslog_timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}
Enregistrez et fermez.
Et puis créez la configuration de sortie pour elasticsearch 'output-elasticsearch.conf'.
vim output-elasticsearch.conf
Collez la configuration suivante.
output {
elasticsearch { hosts => ["127.0.0.1:9200"]
hosts => "127.0.0.1:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}
Enregistrez et fermez.
Ensuite, ajoutez le service logstash au démarrage du système et démarrez le service logstash.
systemctl enable logstash
systemctl start logstash
Le service logstash est opérationnel, vérifiez à l'aide des commandes suivantes.
systemctl status logstash
netstat -plntu
Et vous obtiendrez le résultat ci-dessous.
Par conséquent, l'expéditeur de journaux logstash est opérationnel sur le serveur CentOS 8 avec le port TCP par défaut '5044'. Et l'installation de base d'Elastic Stack est terminée, et nous sommes prêts à expédier et à surveiller nos journaux sur le serveur Elastic (ELK Stack).
Étape 6 - Installer Filebeat sur le client
Dans cette étape, nous allons vous montrer comment configurer le filebeat sur le système Ubuntu et CentOS. Nous allons installer un filebeat et le configurer pour expédier les journaux des deux serveurs vers le Logstash sur le serveur élastique.
- Installer Filebeat sur CentOS 8
Ajoutez la clé elasticsearch au système CentOS 8 à l'aide de la commande suivante.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Allez maintenant dans le répertoire '/etc/yum.repos.d' et créez le fichier 'elasticsearch.repo' à l'aide de l'éditeur vim.
cd /etc/yum.repos.d/
vim elasticsearch.repo
Collez la configuration suivante.
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
Enregistrez et fermez.
Installez maintenant le filebeat en utilisant la commande dnf ci-dessous.
sudo dnf install filebeat
Attendez que l'installation de filebeat soit terminée.
- Installer Filebeat sur Ubuntu 18.04
Tout d'abord, installez les packages apt-transport-https.
sudo apt install apt-transport-https
Après cela, ajoutez la clé elasticsearch et le référentiel à l'aide des commandes suivantes.
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
Maintenant, mettez à jour tous les référentiels et installez filebeat sur le système Ubuntu à l'aide de la commande apt ci-dessous.
sudo apt update
sudo apt install filebeat
Attendez que l'installation de filebeat soit terminée.
- Configurer Filebeat
La configuration de filebeat située dans le répertoire '/etc/filebeat'. Allez dans le répertoire filebeat et modifiez le fichier de configuration 'filebeat.yml'.
cd /etc/filebeat/
vim filebeat.yml
Désactivez maintenant la sortie elasticsearch par défaut comme ci-dessous.
#output.elasticsearch:
# Array of hosts to connect to.
# hosts: ["127.0.0.1:9200"]
Activez ensuite la sortie logstash et spécifiez l'adresse IP de l'hôte logstash.
output.logstash:
# The Logstash hosts
hosts: ["10.5.5.25:5044"]
Enregistrez et fermez.
Ensuite, nous devons activer les modules filebeat. Exécutez la commande filebeat ci-dessous pour obtenir la liste des modules filebeat.
filebeat modules list
Activez le module 'système' à l'aide de la commande suivante.
filebeat modules enable system
Le module filebeat system a été activé avec le fichier de configuration 'modules.d/system.yml'.
Modifiez la configuration du module système à l'aide de l'éditeur vim.
cd /etc/filebeat/
vim modules.d/system.yml
Décommentez le chemin du fichier syslog et du fichier d'autorisation ssh.
Pour le système CentOS :
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/messages"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/secure"]
Pour le système Ubuntu :
# Syslog
syslog:
enabled: true
var.paths: ["/var/log/syslog"]
# Authorization logs
auth:
enabled: true
var.paths: ["/var/log/auth.log"]
Enregistrez et fermez.
Ajoutez maintenant le service filebeat au démarrage du système et démarrez le service.
systemctl enable filebeat
systemctl start filebeat
Le service filebeat est opérationnel, vous pouvez le vérifier à l'aide de la commande suivante.
systemctl status filebeat
Et vous verrez le résultat comme ci-dessous.
Ci-dessous le résultat du serveur CentOS 8.
Et ci-dessous provient du serveur Ubuntu 18.04.
En conséquence, la connexion entre filebeat et le service logstash sur l'adresse IP du serveur de pile élastique '10.5.5.12' a été établie.
Étape 7 - Tester
Ouvrez votre navigateur Web et saisissez le nom de domaine d'installation de la Suite Elastic dans la barre d'adresse.
http://elk.hakase-labs.io/
Connectez-vous maintenant au tableau de bord Kibana à l'aide du compte d'authentification de base que vous avez créé.
Et vous obtiendrez le tableau de bord Kibana comme ci-dessous.
Connectez-vous maintenant aux données d'index elasticsearch créées automatiquement après le filebeat connecté au logstash. Cliquez sur 'Se connecter à votre index Elasticsearch ' lien.
Créez le 'filebeat-* ' modèle d'index et cliquez sur 'Étape suivante ' bouton.
Pour le nom du filtre, choisissez '@timestamp ' et cliquez sur 'Créer un modèle d'index '.
Et le 'filebeat-* ' modèle d'index a été créé, cliquez sur le bouton 'Découvrir ' sur la gauche.
Et vous obtiendrez les données de journal des clients filebeat comme ci-dessous.
Journaux pour le système CentOS 8.
Journal pour le système Ubuntu.
En conséquence, les données de journal définies sur le module système filebeat ont été envoyées au serveur de la pile élastique.
Et l'installation et la configuration d'Elastic Stack sur CentOS 8 se sont terminées avec succès.