GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Comment installer Elastic Stack sur Ubuntu 16.04

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) et un schéma de documents JSON. Elasticsearch est un moteur de recherche évolutif qui peut être utilisé pour rechercher tous les types de documents, 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 système et des journaux. Il fournit un pipeline en temps réel pour collecter des données. Logstash collectera le journal ou les données, convertira toutes les données en documents JSON et les stockera dans Elasticsearch.

Kibana est une interface de visualisation de données pour Elasticsearch. Kibana fournit un joli tableau de bord (interfaces web), il vous permet de gérer et de visualiser vous-même toutes les données d'Elasticsearch. Ce n'est pas seulement beau, mais aussi puissant.

Dans ce didacticiel, je vais vous montrer comment installer et configurer Elastic Stack sur un seul serveur Ubuntu 16.04 pour surveiller les journaux du serveur et comment installer 'Elastic beats' sur des PC clients avec le système d'exploitation Ubuntu 16.04 et CentOS 7.

Prérequis

  • Serveur Ubuntu 16.04 64 bits avec 4 Go de RAM, nom d'hôte :elk-master
  • Client Ubuntu 16.04 64 bits avec 1 Go de RAM, nom d'hôte :elk-client1
  • Client CentOS 7 64 bits avec 1 Go de RAM, nom d'hôte :elk-client2

Étape 1 - Installer Java

Java est requis pour le déploiement de la pile élastique. Elasticsearch nécessite Java 8. Il est recommandé d'utiliser Oracle JDK 1.8. Nous allons installer Java 8 à partir d'un référentiel PPA.

Installez le nouveau package 'python-software-properties' afin que nous puissions facilement ajouter un nouveau référentiel avec une commande apt.

sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common apt-transport-https

Ajoutez le nouveau référentiel Java 8 PPA avec la commande 'add-apt-repository', puis mettez à jour le référentiel.

sudo add-apt-repository ppa:webupd8team/java -y
sudo apt-get update

Installez Java 8 à partir du référentiel PPA webpub8.

sudo apt-get install -y oracle-java8-installer

Une fois l'installation terminée, assurez-vous que Java est correctement installé sur le système en vérifiant la version de Java.

version Java

Étape 2 - Installer et configurer Elasticsearch

Dans cette étape, nous allons installer et configurer Elasticsearch. Installez Elasticsearch à partir du référentiel élastique et configurez-le pour qu'il s'exécute sur l'adresse IP de l'hôte local.

Avant d'installer Elasticsearch, ajoutez la clé du référentiel élastique au serveur.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key ajouter -

Ajoutez le référentiel elastic 5.x au répertoire 'sources.list.d'.

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list

Mettez à jour le référentiel et installez Elasticsearch 5.1 avec la commande apt ci-dessous.

sudo apt-get update
sudo apt-get install -y elasticsearch

Elasticsearch est installé. Allez maintenant dans le répertoire de configuration et modifiez le fichier de configuration elasticsaerch.yml.

cd /etc/elasticsearch/
vim elasticsearch.yml

Activez le verrouillage de la mémoire pour Elasticsearch en supprimant le commentaire à la ligne 43. Nous faisons cela pour désactiver l'échange de mémoire pour Elasticsearch afin d'éviter de surcharger le serveur.

bootstrap.memory_lock :vrai

Dans le bloc 'Réseau', décommentez les lignes network.host et http.port.

network.host :localhost
http.port :9200

Enregistrez le fichier et quittez vim.

Modifiez maintenant le fichier du service elasticsearch pour la configuration du verrouillage de la mémoire mlockall.

vim /usr/lib/systemd/system/elasticsearch.service

Décommentez la ligne LimitMEMLOCK.

LimitMEMLOCK=infinity

Enregistrez le fichier et quittez.

Modifiez la configuration par défaut d'Elasticsearch dans le répertoire /etc/default.

vim /etc/default/elasticsearch

Décommentez la ligne 60 et assurez-vous que la valeur est "illimitée".

MAX_LOCKED_MEMORY=illimité

Enregistrez et quittez.

La configuration d'Elasticsearch est terminée. Elasticsearch fonctionnera sous l'adresse IP localhost avec le port 9200 et nous avons désactivé la mémoire d'échange en activant mlockall sur le serveur Ubuntu.

Rechargez le fichier du service Elasticsearch et activez-le pour qu'il s'exécute au moment du démarrage, puis démarrez le service.

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

Attendez une seconde qu'Elasticsearch s'exécute, puis vérifiez le port ouvert sur le serveur, assurez-vous que "l'état" du port 9200 est "LISTEN".

netstat -plntu

Vérifiez ensuite le verrouillage de la mémoire pour vous assurer que mlockall est activé. Vérifiez également qu'Elasticsearch est en cours d'exécution avec les commandes ci-dessous.

curl -XGET 'localhost:9200/_nodes?filter_path=**.mlockall&pretty'
curl -XGET 'localhost:9200/?pretty'

Vous verrez les résultats ci-dessous.

Étape 3 - Installer et configurer Kibana avec Nginx

Dans cette étape, nous allons installer et configurer Kibana derrière un serveur Web Nginx. Kibana écoutera uniquement sur l'adresse IP de l'hôte local et Nginx agit en tant que proxy inverse pour l'application Kibana.

Installez Kibana avec cette commande apt :

sudo apt-get install -y kibana

Modifiez maintenant le fichier de configuration kibana.yml.

vim /etc/kibana/kibana.yml

Décommentez les lignes server.port, server.hos et elasticsearch.url.

server.port :5601
server.host :"localhost"
elasticsearch.url :"http://localhost:9200"

Enregistrez le fichier et quittez vim.

Ajoutez Kibana pour qu'il s'exécute au démarrage et démarrez-le.

sudo systemctl enable kibana
sudo systemctl start kibana

Kibana s'exécutera sur le port 5601 en tant qu'application de nœud.

netstat -plntu

L'installation de Kibana est terminée, nous devons maintenant installer Nginx et le configurer en tant que proxy inverse pour pouvoir accéder à Kibana à partir de l'adresse IP publique.

Ensuite, installez les packages Nginx et apache2-utils.

sudo apt-get install -y nginx apache2-utils

Apache2-utils est un package qui contient des outils pour le serveur Web qui fonctionnent également avec Nginx, nous utiliserons l'authentification de base htpasswd pour Kibana.

Nginx a été installé. Nous devons maintenant créer un nouveau fichier de configuration d'hôte virtuel dans le répertoire Nginx sites-available. Créez un nouveau fichier 'kibana' avec vim.

cd /etc/nginx/
vim sites-available/kibana

Collez la configuration ci-dessous.

server {
    listen 80 ;

    nom_serveur elk-stack.co ;

    auth_basic "Accès restreint" ;
    auth_basic_user_file /etc/nginx /.kibana-user ;

    emplacement / {
        proxy_pass http://localhost:5601 ;
        proxy_http_version 1.1 ;
        proxy_set_header Upgrade $http_upgrade ;
proxy_set_header Connection 'upgrade' ;
        proxy_set_header Hôte $host ;
        proxy_cache_bypass $http_upgrade ;
    }
}

Enregistrez le fichier et quittez vim

Créez un nouveau fichier d'authentification de base avec la commande htpasswd.

sudo htpasswd -c /etc/nginx/.kibana-user admin
TAPEZ VOTRE MOT DE PASSE

Activez l'hôte virtuel kibana en créant un lien symbolique depuis le fichier kibana dans "sites-available" vers le répertoire "sites-enabled".

ln -s /etc/nginx/sites-available/kibana /etc/nginx/sites-enabled/

Testez la configuration de nginx et assurez-vous qu'il n'y a pas d'erreur, puis ajoutez nginx pour qu'il s'exécute au démarrage et redémarrez nginx.

nginx -t
systemctl activer nginx
systemctl redémarrer nginx

Étape 4 - Installer et configurer Logstash

Dans cette étape, nous allons installer et configurer Logsatash pour centraliser les journaux du serveur à partir des sources client avec filebeat, puis filtrer et transformer toutes les données (Syslog) et les transporter vers la réserve (Elasticsearch).

Installez Logstash 5 avec la commande apt ci-dessous.

sudo apt-get install -y logstash

Modifiez le fichier hosts avec vim.

vim /etc/hosts

Ajoutez l'adresse IP et le nom d'hôte du serveur.

10.0.15.10    elk-master

Enregistrez le fichier hosts et quittez l'éditeur.

Générez maintenant un nouveau fichier de certificat SSL avec OpenSSL afin que les sources client puissent identifier le serveur élastique.

cd /etc/logstash/
openssl req -subj /CN=elk-master -x509 -days 3650 -batch -nodes -newkey rsa:4096 -keyout logstash.key -out logstash.crt

Changez le '/CN ' au nom d'hôte du serveur élastique.

Les fichiers de certificat seront créés dans le répertoire '/etc/logstash/'.

Ensuite, nous allons créer les fichiers de configuration pour logstash. Nous allons créer un fichier de configuration 'filebeat-input.conf' comme fichier d'entrée de filebeat, 'syslog-filter.conf' pour le traitement syslog, puis un fichier 'output-elasticsearch.conf' pour définir la sortie Elasticsearch.

Allez dans le répertoire de configuration logstash et créez les nouveaux fichiers de configuration dans le répertoire 'conf.d'.

cd /etc/logstash/
vim conf.d/filebeat-input.conf

Saisissez la configuration, collez la configuration ci-dessous.

input {
  beats {
    port => 5443
    type => syslog
    ssl => true
    ssl_certificate => "/etc/logstash/logstash. crt"
    ssl_key => "/etc/logstash/logstash.key"
  }
}

Enregistrez et quittez.

Créez le fichier syslog-filter.conf.

vim conf.d/syslog-filter.conf

Collez la configuration ci-dessous.

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 jj HH:mm:ss" ]
    }
  }
}

Nous utilisons un plugin de filtre nommé 'grok ' pour analyser les fichiers syslog.

Enregistrez et quittez.

Créez le fichier de configuration de sortie 'output-elasticsearch.conf'.

vim conf.d/output-elasticsearch.conf

Collez la configuration ci-dessous.

sortie {
  elasticsearch { hosts => ["localhost:9200"]
    hosts => "localhost:9200"
    manage_template => false
    index => "% {[@metadata][beat]}-%{+YYYY.MM.dd}"
    document_type => "%{[@metadata][type]}"
  }
}

Enregistrez et quittez.

Lorsque cela est fait, ajoutez logstash pour démarrer au démarrage et démarrer le service.

sudo systemctl enable logstash
sudo systemctl start logstash

Étape 5 - Installer et configurer Filebeat sur un client Ubuntu

Connectez-vous au serveur en tant que root avec un compte ssh.

ssh [protégé par e-mail]

Copiez le fichier de certificat sur le client avec la commande scp.

scp [protégé par e-mail] :/etc/logstash/logstash.crt .

Modifiez le fichier hosts et ajoutez l'adresse IP elk-master.

vim /etc/hosts

Ajoutez la configuration ci-dessous à la fin du fichier.

10.0.15.10    elk-master

Enregistrez et quittez.

Nous devons maintenant ajouter la clé élastique au serveur elk-client1.

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key ajouter -

Nous utiliserons le référentiel élastique avec le transport de téléchargement https, nous devons donc installer le package 'apt-transport-https' sur le serveur.

sudo apt-get install -y apt-transport-https

Ajoutez le référentiel élastique et mettez à jour tous les référentiels Ubuntu.

echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update

Installez maintenant 'filebeat' avec la commande apt.

sudo apt-get install -y filebeat

Ensuite, allez dans le répertoire de configuration de filebeat et modifiez le fichier 'filebeat.yml' avec vim.

cd /etc/filebeat/
vim filebeat.yml

Ajoutez de nouveaux fichiers journaux sous la configuration des chemins.

  chemins :
    - /var/log/auth.log
    - /var/log/syslog

Définissez le type de document sur 'syslog'.

 type de document :syslog

Désactivez la sortie elasticsearch en ajoutant des commentaires aux lignes.

#-------------------------- Sortie Elasticsearch ------------------ ------------
#output.elasticsearch :
   # tableau d'hôtes auxquels se connecter.
#  hôtes :["localhost:9200"]

Activez la sortie logstash, décommentez la configuration et modifiez la valeur comme ci-dessous.

output.logstash :
  # Les hôtes Logstash
  hôtes :["elk-master:5443"]
  bulk_max_size :2048
  ssl.certificate_authorities :["/etc/ filebeat/logstash.crt"]
  template.name :"filebeat"
  template.path :"filebeat.template.json"
  template.overwrite :false

Enregistrez et quittez.

Déplacez le fichier de certificat dans le répertoire filebeat.

mv ~/logstash.crt /etc/filebeat/

Démarrez filebeat et ajoutez-le pour qu'il s'exécute au démarrage.

sudo systemctl start filebeat
sudo systemctl enable filebeat

Vérifiez l'état du service.

sudo systemctl status filebeat

Étape 6 - Installer et configurer Filebeat sur un client CentOS

Les Beats sont des expéditeurs de données, des agents légers qui peuvent être installés sur les nœuds clients pour envoyer d'énormes quantités de données de la machine cliente au serveur Logstash ou Elasticsearch. Il y a 4 beats disponibles, 'Filebeat' pour 'Log Files', 'Metricbeat' pour 'Metrics', 'Packetbeat' pour 'Network Data' et 'Winlogbeat' pour le client Windows 'Event Log'.

Dans ce didacticiel, je vais vous montrer comment installer et configurer 'Filebeat' pour envoyer les données de journal au serveur logstash via une connexion SSL sécurisée.

Copiez le fichier de certificat du serveur élastique vers le serveur client1. Connectez-vous au serveur client1.

ssh [protégé par e-mail]

Copiez le fichier de certificat avec la commande scp.

scp [email protected] :/etc/logstash/logstash.crt .
TYPE elk-server password

Modifiez le fichier hosts et ajoutez l'adresse du serveur elk-master.

vim /etc/hosts

Ajoutez l'adresse du serveur elk-master.

10.0.15.10    elk-master

Enregistrez et quittez.

Ensuite, importez la clé élastique sur le serveur elk-client2.

rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

Ajoutez un référentiel élastique au serveur.

cd /etc/yum.repos.d/
vim elastic.repo

Collez la configuration ci-dessous.

[elastic-5.x]
name=Référentiel Elastic pour les packages 5.x
baseurl=https://artifacts.elastic.co/packages/5.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md

Enregistrez et quittez.

Installez filebeat avec cette commande yum.

sudo yum -y install filebeat

Filebeat a été installé, allez maintenant dans le répertoire de configuration et modifiez le fichier 'filebeat.yml'.

cd /etc/filebeat/
vim filebeat.yml

À la ligne 21 de la section des chemins, ajoutez de nouveaux fichiers journaux, nous ajouterons deux fichiers ici :'/var/log/secure' pour l'activité ssh et '/var/log/messages' pour le journal du serveur.

  chemins :
    - /var/log/secure
    - /var/log/messages

Ajoutez une nouvelle configuration à la ligne 26 pour définir le type de fichier sur 'syslog'.

 type de document :syslog

Par défaut, filebeat utilise elasticsearch comme sortie. Dans ce tutoriel, nous allons le changer en logshtash. Désactivez la sortie elasticsearch en ajoutant des commentaires aux lignes 83 et 85.

Désactivez la sortie elasticsearch.

#-------------------------- Sortie Elasticsearch ------------------ ------------
#output.elasticsearch :
   # tableau d'hôtes auxquels se connecter.
#  hôtes :["localhost:9200"]

Ajoutez maintenant la nouvelle configuration de sortie logstash, décommentez la configuration de sortie logstash et remplacez toutes les valeurs par celles qui sont affichées dans la configuration ci-dessous.

output.logstash :
  # Les hôtes Logstash
  hôtes :["elk-master:5443"]
  bulk_max_size :2048
  ssl.certificate_authorities :["/etc/ filebeat/logstash.crt"]
  template.name :"filebeat"
  template.path :"filebeat.template.json"
  template.overwrite :false

Enregistrez et quittez.

Ajoutez filebeat pour démarrer au démarrage et démarrez-le.

sudo systemctl enable filebeat
sudo systemctl start filebeat

Vous pouvez maintenant vérifier et regarder le fichier journal filebeat pour vous assurer qu'il fonctionne correctement.

tail -f /var/log/filebeat/filebeat

Étape 8 - Tester

Ouvrez votre navigateur Web et visitez le domaine de la pile élastique que vous avez configuré dans la configuration nginx, le mien est "elk-stack.co", saisissez le nom d'utilisateur administrateur avec votre mot de passe et appuyez sur Entrée pour vous connecter au tableau de bord Kibana.

Créez un nouvel index par défaut 'filebeat-* ' et cliquez sur 'Créer '.

L'index par défaut a été créé. Si vous avez plusieurs battements sur la pile élastique, vous pouvez configurer un battement par défaut d'un simple clic sur l'étoile ' bouton.

Allez dans 'Découvrir ' et vous verrez tous les fichiers journaux des serveurs elk-client1 et elk-client2.

Un exemple de sortie JSON du journal du serveur elk-client1 pour une connexion ssh non valide.

Et vous pouvez faire bien plus avec le tableau de bord Kibana, essayez-le !

Elastic Stack a été installé sur un serveur Ubuntu 16.04, filebeat a été installé sur les serveurs clients Ubuntu et CentOS.


Ubuntu
  1. Comment installer Elasticsearch sur Ubuntu 18.04

  2. Comment installer Graylog2 sur Ubuntu 14.04

  3. Comment installer Graylog2 sur Ubuntu 15.04 / 14.10

  4. Comment installer Elasticsearch sur Ubuntu 20.04

  5. Comment installer et configurer Elasticsearch sur Ubuntu 20.04

Comment installer Graylog 3.0 sur Ubuntu 18.04 / Ubuntu 16.04

Comment installer Elasticsearch, Logstash et Kibana (ELK Stack) sur Ubuntu 18.04 / Ubuntu 16.04

Comment installer ELK Stack sur Ubuntu 18.04

Comment installer qt sur Ubuntu 20.04

Comment installer le serveur Graylog sur Ubuntu 21

Comment installer Elasticsearch Logstash Kibana (Elastic Stack) sur Ubuntu 18.04