ELK est une pile d'analyse de données complète, composée d'Elasticsearch , Logstash et Kibana qui vous aide à stocker et à gérer les journaux de manière centralisée et offre la possibilité d'analyser les problèmes en corrélant les événements à un moment donné.
Ce guide vous aide à installer la pile ELK sur Ubuntu 16.04.
Composants
Logstash - Il effectue le traitement (collecte, enrichissement et envoi à Elasticsearch) des journaux 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.
Beats – Installé sur les machines clientes, envoyez les journaux à Logstash via le protocole beats.
Prérequis
Basculez vers l'utilisateur root.
su -
OU
sudo su -
Comme Elasticsearch est basé sur Java, vous devez avoir OpenJDK ou Oracle JDK installé sur votre machine.
LIRE :Comment installer Oracle Java 8 sur Ubuntu 16.04 / LinuxMint 18
Ici, je choisis d'installer OpenJ D K .
apt-get updateapt-get install -y openjdk-8-jdk wget
Vérifiez la version de JAVA.
version Java
Sortie :
openjdk version "1.8.0_131"Environnement d'exécution OpenJDK (build 1.8.0_131-8u131-b11-2ubuntu1.16.04.3-b11)OpenJDK 64-Bit Server VM (build 25.131-b11, mode mixte)
Installer Elasticsearch
Elasticsearch est un serveur 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 le kibana à la demande des utilisateurs.
Cette rubrique couvre les paramètres de configuration requis pour ELK. Vous pouvez également consulter Installer Elasticsearch sur CentOS 7/Ubuntu 16.04/Linux Mint 18 pour plus d'instructions.
Configurez le référentiel Elasticsearch.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elk.list
Installez Elasticsearch.
apt-get updateapt-get install -y elasticsearch
Configurez Elasticsearch pour qu'il démarre au démarrage du système.
systemctl activer elasticsearchsystemctl démarrer elasticsearch
Elastisearch devrait maintenant écouter sur 9200 pour traiter la requête HTTP ; nous pouvons utiliser CURL pour obtenir la réponse.
curl -X GET http://localhost:9200
Sortie :
{ "name" :"gf5QYAn", "cluster_name" :"elasticsearch", "cluster_uuid" :"S6gZNkMERpSr-MGXqEFUJw", "version" :{ "number" :"5.5.2", "build_hash" :" b2f0c09", "build_date" :"2017-08-14T12:33:14.154Z", "build_snapshot" : false, "lucene_version" :"6.6.0" }, "tagline" :"Vous savez, pour la recherche"}Installer Logstash
Logstash est un outil open source, 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 un type d'événement différent sans travail supplémentaire.
Installez Logstash à l'aide de la commande apt-get.
apt-get install -y logstashCréer un certificat SSL
Le redirecteur (filebeat) qui sera installé sur les serveurs clients 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 dans la configuration beats (transmetteur), assurez-vous d'avoir un enregistrement A pour le serveur logstash ; assurez-vous que la machine cliente peut résoudre le nom d'hôte du serveur logstash.
Si vous n'avez pas de serveur de noms dans votre environnement ; assurez-vous d'ajouter l'entrée d'hôte pour le serveur logstash sur les machines clientes ainsi que sur le serveur logstash.
sudo nano /etc/hosts192.168.12.10 server.itzgeek.localAccédez au répertoire OpenSSL.
cd /etc/ssl/Maintenant, créez le certificat SSL. Remplacez "vert ” un avec le nom d'hôte de votre vrai serveur logstash.
openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.itzgeek.localOption 2 :(Adresse IP)
Si vous envisagez d'utiliser une adresse IP au lieu d'un nom d'hôte, veuillez suivre les étapes de création d'un certificat SSL pour IP SAN.
Comme condition préalable, nous aurions besoin d'ajouter une adresse IP du serveur logstash à SubjectAltName dans le fichier de configuration OpenSSL.
nano /etc/ssl/openssl.cnfRecherchez la section "[ v3_ca ]" et remplacez "vert ” un avec l'IP de votre serveur logstash.
subjectAltName =IP :192.168.12.10Allez dans le répertoire OpenSSL.
cd /etc/ssl/Maintenant, créez un certificat SSL en exécutant la commande suivante.
openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crtCe logstash-forwarder.crt doit être copié sur tous les serveurs clients ceux qui envoient des journaux au serveur logstash.
Configurer Logstash
La configuration de Logstash se trouve dans /etc/logstash/conf.d/. Si les fichiers n'existent pas, créez-en un nouveau. 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 chaque section aura 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.
nano /etc/logstash/conf.d/logstash.confDans 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.
input { beats { port => 5044 ssl => true ssl_certificate => "/etc/ssl/logstash-forwarder.crt" ssl_key => "/etc/ssl/logstash-forwarder.key" congestion_threshold => "40 " }}Dans la section filtre. Nous utiliserons Grok pour analyser les journaux avant de les envoyer à Elasticsearch. Le filtre grok suivant recherchera les journaux étiquetés "syslog" et essaiera 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 jj HH:mm:ss" ]} }}Pour plus de modèles de filtre, 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.
sortie { elasticsearch { hosts => localhost index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}" }stdout { codec => rubydebug }}Maintenant, démarrez et activez le logstash.
systemctl démarrer logstashsystemctl activer logstashVous pouvez résoudre tous les problèmes en consultant le journal ci-dessous.
cat /var/log/logstash/logstash-plain.logEnsuite, nous allons configurer beats pour expédier les journaux au serveur logstash.
Installer Filebeat
Quatre clients Beats sont disponibles.
- Packetbeat – Analyse des données de paquets du réseau.
- Filebeat – Aperçu en temps réel des données de journal.
- Topbeat – Obtenez des informations à partir des données d'infrastructure.
- Metricbeat – Envoyer les métriques à Elasticsearch.
Sur l'ordinateur client :
Pour analyser les journaux système, nous utiliserons ici filebeat. Vous pouvez télécharger filebeat depuis le site officiel , ou vous pouvez utiliser la commande suivante pour l'installer.
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/beats.listInstallez Filebeat.
apt-get update apt-get install -y filebeatFilebeat (beats) utilise un certificat SSL pour valider l'identité du serveur logstash. Copiez donc logstash-forwarder.crt du serveur logstash vers le client.
$ scp -pr [email protected]:/etc/ssl/logstash-forwarder.crt /etc/sslConfigurer Filebeat
Il est maintenant temps de connecter filebeat à Logstash ; suivez les étapes ci-dessous pour configurer filebeat avec la pile ELK.
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.
nano /etc/filebeat/filebeat.ymlEn haut, vous verriez les prospecteurs Filebeat. Ici, vous devez spécifier quels fichiers 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/syslog au serveur Logstash. Pour cela, modifiez le prospecteur existant sous paths section. Commentez le – /var/log/*.log pour éviter d'envoyer tous les .log fichier présent dans ce répertoire à Logstash.
. . . chemins : - /var/log/syslog # - /var/log/*.log. . .Dans la section Sorties , 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é.
Remarque :Remplacez "server.itzgeek.local " avec l'adresse IP au cas où vous utilisez un SAN IP.
. . .output.logstash :# Les hôtes Logstash hébergent :["server.itzgeek.local:5044 "] # SSL facultatif. Par défaut, désactivé. # Liste des certificats racine pour les vérifications de serveur HTTPS ssl.certificate_authorities :["/etc/ssl/logstash-forwarder.crt "]. . .Redémarrez le service.
systemctl restart filebeatsystemctl enable filebeatLes journaux Beats se trouvent généralement dans son fichier journal.
cat /var/log/filebeat/filebeatInstaller et configurer Kibana
Kibana fournit une visualisation des journaux stockés sur elasticsearch, téléchargez-le depuis le site officiel ou utilisez la commande suivante pour configurer le référentiel.
apt-get install -y kibanaModifiez le fichier kibana.yml.
nano /etc/kibana/kibana.ymlPar défaut, Kibana écoute sur localhost, ce qui signifie que vous ne pouvez pas accéder à l'interface Kibana à partir de machines extérieures. Pour l'activer, modifiez la ligne ci-dessous avec l'adresse IP de votre machine.
serveur.hôte :"192.168.12.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 démarrer kibanasystemctl activer kibanaAccédez au Kibana en utilisant l'URL suivante.
http://votre-adresse-ip:5601/OU
http://votre-nom-de-serveur:5601Lors de votre première connexion, vous devez mapper l'index filebeat.
Tapez ce qui suit dans le nom ou modèle d'index boîte.
filebeat-*Sélectionnez @horodatage puis cliquez sur créer.
@horodatageParcourez les modèles d'index et leur mappage.
Cliquez sur Découvrir dans la navigation de gauche pour afficher les journaux entrants de la machine cliente.
C'est tout. Vous avez configuré avec succès la pile ELK sur Ubuntu 16.04