La pile ELK est également connue sous le nom de pile Elastic et comprend Elasticsearch, Logstash et Kibana. Il vous aide à stocker tous vos journaux au même endroit et à analyser les problèmes en corrélant les événements à un moment donné.
Ce guide vous aide à installer la pile ELK sur CentOS 7 / RHEL 7 .
Composants
Logstash – Il effectue le traitement (Collecte, enrichit et envoie à Elasticsearch) des logs entrants envoyés par beats (forwarder).
Elasticsearch – Il stocke les journaux entrants de Logstash et offre la possibilité de rechercher les journaux/données en temps réel
Kibana – Fournit une visualisation des journaux.
Battements – Installé sur les machines clientes, envoyez les journaux à Logstash via le protocole beats.
Environnement
Pour disposer d'une pile ELK complète, nous aurions besoin de deux machines pour tester la collecte des journaux.
Pile ELK
Operating system : CentOS 7 Minimal IP Address : 192.168.1.10 HostName : server.itzgeek.local
Filebeat
Operating System : CentOS 7 Minimal IP Address : 192.168.1.20 HostName : client.itzgeek.local
Prérequis
Installer Java
Étant donné qu'Elasticsearch est basé sur Java, assurez-vous que OpenJDK ou Oracle JDK est installé sur votre machine.
LIRE :Comment installer Oracle Java 8 sur CentOS 7 / RHEL 7
Ici, j'utilise OpenJDK 1.8.
yum -y install java-1.8.0 wget
Vérifiez la version Java.
java -version
Sortie :
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Configurer le référentiel ELK
Importez la clé de signature Elastic.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Configurez le référentiel Elasticsearch et installez-le.
vi /etc/yum.repos.d/elk.repo
Ajoutez le contenu ci-dessous au elk.repo fichier.
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Installer Elasticsearch
Elasticsearch est un moteur de recherche open source, offre une recherche et des analyses distribuées en temps réel avec l'interface Web RESTful. Elasticsearch stocke toutes les données envoyées par le Logstash et les affiche via l'interface Web (Kibana) à la demande des utilisateurs.
Installez Elasticsearch.
yum install -y elasticsearch
Configurez Elasticsearch pour qu'il démarre au démarrage du système.
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Utilisez CURL pour vérifier si Elasticsearch répond ou non aux requêtes.
curl -X GET http://localhost:9200
Sortie :
{ "name" : "1DwGO86", "cluster_name" : "elasticsearch", "cluster_uuid" : "xboS_6K5Q2OO1XA-QJ9GIQ", "version" : { "number" : "6.4.0", "build_flavor" : "default", "build_type" : "rpm", "build_hash" : "595516e", "build_date" : "2018-08-17T23:18:47.308994Z", "build_snapshot" : false, "lucene_version" : "7.4.0", "minimum_wire_compatibility_version" : "5.6.0", "minimum_index_compatibility_version" : "5.0.0" }, "tagline" : "You Know, for Search" }
Installer Logstash
Logstash est un outil open source pour gérer les événements et les journaux, il collecte les journaux, les analyse et les stocke sur Elasticsearch pour la recherche. Plus de 160 plugins sont disponibles pour Logstash, ce qui permet de traiter les différents types d'événements sans travail supplémentaire.
Installez le package Logstash.
yum -y install logstash
Créer un certificat SSL (facultatif)
Filebeat (Logstash Forwarder) est normalement installé sur les serveurs clients et utilise un certificat SSL pour valider l'identité du serveur Logstash pour une communication sécurisée.
Créez un certificat SSL avec le nom d'hôte ou le SAN IP.
Option 1 :(nom de domaine complet du nom d'hôte)
Si vous utilisez le nom d'hôte du serveur Logstash dans la configuration beats (transitaire), assurez-vous d'avoir un enregistrement A pour le serveur Logstash et assurez-vous également que la machine cliente peut résoudre le nom d'hôte du serveur Logstash.
Accédez au répertoire OpenSSL.
cd /etc/pki/tls/
Maintenant, créez le certificat SSL. Remplacer vert un avec le nom d'hôte de votre vrai serveur Logstash.
openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt -subj /CN=server.itzgeek.local
Option 2 :(Adresse IP)
Si vous prévoyez d'utiliser une adresse IP au lieu d'un nom d'hôte, veuillez suivre les étapes pour créer un certificat SSL pour IP SAN.
Pour créer un certificat IP SAN, vous devez ajouter une adresse IP du serveur Logstash au SubjectAltName dans le fichier de configuration OpenSSL.
vi /etc/pki/tls/openssl.cnf
Recherchez la section "[ v3_ca ]" et remplacez vert un avec l'IP de votre serveur Logstash.
subjectAltName = IP:192.168.1.10
Allez dans le répertoire OpenSSL.
cd /etc/pki/tls/
Maintenant, créez un certificat SSL en exécutant la commande suivante.
openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crtCe fichierlogstash-forwarder.crt doivent être copiés sur toutes les machines clientes celles qui envoient des journaux au serveur Logstash.
Configurer Logstash
La configuration de Logstash se trouve dans /etc/logstash/conf.d/ . Le fichier de configuration Logstash se compose de trois sections d'entrée, de filtre et de sortie. Les trois sections peuvent être trouvées soit dans un seul fichier, soit dans des fichiers séparés se terminant par .conf.
Je vous recommande d'utiliser un seul fichier pour placer les sections d'entrée, de filtre et de sortie.
vi /etc/logstash/conf.d/logstash.conf
Dans la première section, nous mettrons une entrée pour la configuration des entrées. La configuration suivante définit Logstash pour qu'il écoute sur le port 5044 les journaux entrants des beats (transmetteur) qui se trouvent sur les machines clientes.
Ajoutez également les détails du certificat SSL dans la section d'entrée pour une communication sécurisée - Facultatif.
input { beats { port => 5044 # Set to False if you do not use SSL ssl => true # Delete below linesif you do not use SSL ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt" ssl_key => "/etc/pki/tls/private/logstash-forwarder.key" } }
Dans la section filtre. Nous utiliserons Grok pour analyser les journaux avant de les envoyer à Elasticsearch. Le filtre grok suivant recherchera le syslog journaux étiquetés et essaie de les analyser pour créer un index structuré.
filter { if [type] == "syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date { match => [ "timestamp", "MMM d HH:mm:ss", "MMM dd HH:mm:ss" ] } } }
Pour plus de modèles de filtres, consultez la page grokdebugger.
Dans la section de sortie, nous définirons l'emplacement où les journaux seront stockés ; évidemment, ce devrait être Elasticsearch.
output { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" } stdout { codec => rubydebug } }
Maintenant, démarrez et activez le service Logstash.
systemctl start logstash systemctl enable logstash
Vous pouvez résoudre tous les problèmes en consultant les journaux Logstash.
cat /var/log/logstash/logstash-plain.log
Installer et configurer Kibana
Kibana fournit une visualisation des journaux stockés sur Elasticsearch. Installez le Kibana à l'aide de la commande suivante.
yum -y install kibana
Modifiez le fichier kibana.yml.
vi /etc/kibana/kibana.yml
Par défaut, Kibana écoute sur localhost, ce qui signifie que vous ne pouvez pas accéder à l'interface Kibana à partir de machines externes. Pour l'autoriser, modifiez la ligne ci-dessous avec l'adresse IP de votre machine.
server.host: "192.168.1.10"
Décommentez la ligne suivante et mettez-la à jour avec l'URL de l'instance Elasticsearch. Dans mon cas, c'est localhost.
elasticsearch.url: "http://localhost:9200"
Démarrez et activez kibana au démarrage du système.
systemctl start kibana systemctl enable kibana
Pare-feu
Configurez un pare-feu sur le nœud de la pile ELK pour recevoir les journaux des machines clientes.
5044 – Pour que Logstash reçoive les logs
5061 – Pour accéder à l'interface Kibana depuis la machine externe.
firewall-cmd --permanent --add-port=5044/tcp firewall-cmd --permanent --add-port=5601/tcp firewall-cmd --reload
Ensuite, nous allons configurer beats pour envoyer les journaux au serveur Logstash.
Installer et configurer Filebeat
Quatre clients Beats sont disponibles
- Packetbeat – Analyser les données des paquets réseau.
- Filebeat – Aperçu en temps réel des données de journal.
- Meilleur rythme – Obtenez des informations à partir des données d'infrastructure.
- Metricbeat – Envoi des métriques à Elasticsearch.
Pour analyser les journaux système de la machine cliente (Ex. client.itzgeek.local), nous devons installer filebeat . Créez le fichier beats.repo.
vi /etc/yum.repos.d/beats.repo
Ajoutez le contenu ci-dessous au fichier de dépôt ci-dessus.
[elasticsearch-6.x] name=Elasticsearch repository for 6.x packages baseurl=https://artifacts.elastic.co/packages/6.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md
Maintenant, installez Filebeat en utilisant la commande suivante.
yum -y install filebeat
Configurez une entrée d'hôte sur la machine cliente au cas où votre environnement n'aurait pas de serveur DNS .
vi /etc/hosts
Créez une entrée d'hôte comme ci-dessous sur la machine cliente.
192.168.1.10 server.itzgeek.local server
Filebeat (beats) utilise un certificat SSL pour valider l'identité du serveur Logstash, alors copiez le logstash-forwarder.crt du serveur Logstash au client.
Ignorez cette étape, au cas où vous n'utiliseriez pas SSL dans Logstash.
scp -pr [email protected]:/etc/pki/tls/certs/logstash-forwarder.crt /etc/ssl/certs/
Le fichier de configuration Filebeat est au format YAML, ce qui signifie que l'indentation est très importante. Assurez-vous d'utiliser le même nombre d'espaces que dans le guide.
Ouvrez le fichier de configuration filebeat.
vi /etc/filebeat/filebeat.yml
En haut, vous verriez la section des prospecteurs. Ici, vous devez spécifier quels journaux doivent être envoyés à Logstash et comment ils doivent être traités. Chaque prospecteur commence par – caractère.
À des fins de test, nous allons configurer filebeat pour envoyer /var/log/messages au serveur Logstash. Pour cela, modifiez le prospecteur existant sous paths rubrique.
Commentez le – /var/log/*.log pour éviter d'envoyer tous les .log fichiers présents dans ce répertoire vers Logstash.
filebeat.inputs: - type: log # Change to true to enable this input configuration. enabled: true # Paths that should be crawled and fetched. paths: - /var/log/messages # - /var/log/*.log . . .
Commentez la section output.elasticsearch : car nous n'allons pas stocker les journaux directement dans Elasticsearch.
Maintenant, trouvez la ligne output.logstash et modifiez les entrées comme ci-dessous. Cette section définit filebeat pour envoyer les journaux au serveur Logstash server.itzgeek.local sur le port 5044 et mentionnez le chemin où se trouve le certificat SSL copié
Remplacez server.itzgeek.local par l'adresse IP si vous utilisez un SAN IP .
. . . output.logstash: # The Logstash Server hosts: ["server.itzgeek.local:5044"] # Comment out this line if Logstash is not using SSL ssl.certificate_authorities: ["/etc/ssl/certs/logstash-forwarder.crt"] . . .
Redémarrez le service.
systemctl restart filebeat
Les journaux Beats se trouvent généralement dans le fichier syslog.
cat /var/log/filebeat/filebeat
Accéder à Kibana
Accédez au Kibana en utilisant l'URL suivante.
http://votre-adresse-ip:5601/Vous obtiendriez la page d'accueil de Kibana.
Lors de votre première connexion, vous devez mapper l'index filebeat. Accédez à Gestion>> Modèles d'index .
Tapez ce qui suit dans le modèle d'index boîte.
filebeat-*
Vous devriez voir au moins un index filebeat comme ci-dessus. Cliquez sur Étape suivante.
Sélectionnez @timestamp puis cliquez sur Créer .
@timestamp
Vérifiez vos modèles d'index et ses mappages.
Maintenant, cliquez sur Découvrir pour afficher les journaux entrants et effectuer des requêtes de recherche.
C'est tout.