GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment installer Elastic Stack sur CentOS 7

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 tous les types 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 tutoriel, je vais vous montrer comment installer et configurer Elastic Stack sur un serveur CentOS 7 pour surveiller les journaux du serveur. Ensuite, je vous montrerai comment installer "Elastic beats" sur CentOS 7 et sur un système d'exploitation client Ubuntu 16.04.

Prérequis

  • CentOS 7 64 bits avec 4 Go de RAM – elk-master
  • CentOS 7 64 bits avec 1 Go de RAM - client1
  • Ubuntu 16.04 64 bits avec 1 Go de RAM - client2

Étape 1 : Préparer le système d'exploitation

Dans ce tutoriel, nous allons désactiver SELinux sur le serveur CentOS 7. Modifiez le fichier de configuration SELinux.

vim /etc/sysconfig/selinux

Modifiez la valeur SELinux de l'application à désactivée.

SELINUX=désactivé

Redémarrez ensuite le serveur.

redémarrer

Connectez-vous à nouveau au serveur et vérifiez l'état de SELinux.

getenforce

Assurez-vous que le résultat est désactivé.

Étape 2 - Installer Java

Java est requis pour le déploiement de la pile élastique. Elasticsearch nécessite Java 8, il est recommandé d'utiliser le JDK Oracle 1.8. Je vais installer Java 8 à partir du package officiel Oracle rpm.

Téléchargez Java 8 JDK avec la commande wget.

wget --no-cookies --no-check-certificate --header "Cookie :gpw_e24=http:%2F%2Fwww.oracle.com%2F ; oraclelicense=accept-securebackup-cookie" "http:// download.oracle.com/otn-pub/java/jdk/8u77-b02/jdk-8u77-linux-x64.rpm"

Installez-le ensuite avec cette commande rpm ;

rpm -ivh jdk-8u77-linux-x64.rpm

Enfin, vérifiez la version de Java JDK pour vous assurer qu'elle fonctionne correctement.

version Java

Vous verrez la version Java du serveur.

Étape 3 - Installer et configurer Elasticsearch

Dans cette étape, nous allons installer et configurer Elasticsearch. Je vais installer Elasticsearch à partir d'un package rpm fourni par elastic.co et le configurer pour qu'il s'exécute sur localhost (pour sécuriser l'installation et m'assurer qu'il n'est pas accessible de l'extérieur).

Avant d'installer Elasticsearch, ajoutez la clé elastic.co au serveur.

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

Ensuite, téléchargez Elasticsearch 5.1 avec wget puis installez-le.

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.1.1.rpm
rpm -ivh elasticsearch-5.1.1.rpm

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 un commentaire à la ligne 40. Cela désactive l'échange de mémoire pour Elasticsearch.

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 l'éditeur.

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

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

Décommentez la ligne LimitMEMLOCK.

LimitMEMLOCK=infinity

Enregistrez et quittez.

Modifiez le fichier de configuration sysconfig pour Elasticsearch.

vim /etc/sysconfig/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 s'exécutera sur l'adresse IP localhost sur le port 9200, nous avons désactivé l'échange de mémoire en activant mlockall sur le serveur CentOS.

Rechargez systemd, activez Elasticsearch pour qu'il démarre au démarrage, puis démarrez le service.

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

Attendez une seconde pour qu'Eelasticsearch démarre, puis vérifiez les ports ouverts 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é, et vérifiez 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 4 - Installer et configurer Kibana avec Nginx

Dans cette étape, nous allons installer et configurer Kibana avec un serveur Web Nginx. Kibana écoutera sur l'adresse IP de l'hôte local et Nginx agit comme un proxy inverse pour l'application Kibana.

Téléchargez Kibana 5.1 avec wget, puis installez-le avec la commande rpm :

wget https://artifacts.elastic.co/downloads/kibana/kibana-5.1.1-x86_64.rpm
rpm -ivh kibana-5.1.1-x86_64.rpm

Modifiez maintenant le fichier de configuration de Kibana.

vim /etc/kibana/kibana.yml

Décommentez les lignes de configuration pour server.port, server.host et elasticsearch.url.

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

Enregistrez et quittez.

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.

Nginx est disponible dans le référentiel Epel, installez epel-release avec yum.

yum -y install epel-release

Ensuite, installez le package Nginx et httpd-tools.

yum -y install nginx httpd-tools

Le package httpd-tools contient des outils pour le serveur Web, nous utiliserons l'authentification de base htpasswd pour Kibana.

Modifiez le fichier de configuration Nginx et supprimez le 'server { } ' afin que nous puissions ajouter une nouvelle configuration d'hôte virtuel.

cd /etc/nginx/
vim nginx.conf

Supprimez le bloc serveur { }.

Enregistrez le fichier et quittez vim.

Nous devons maintenant créer un nouveau fichier de configuration d'hôte virtuel dans le répertoire conf.d. Créez le nouveau fichier 'kibana.conf' avec vim.

vim /etc/nginx/conf.d/kibana.conf

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 et quittez.

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

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

Testez la configuration Nginx et assurez-vous qu'il n'y a pas d'erreur. Ajoutez ensuite Nginx pour qu'il s'exécute au démarrage et démarrez Nginx.

nginx -t
systemctl activer nginx
systemctl démarrer nginx

Étape 5 - Installer et configurer Logstash

Dans cette étape, nous allons installer Logsatash et le configurer pour centraliser les journaux de serveur des clients avec filebeat, puis filtrer et transformer les données Syslog et les déplacer dans la réserve (Elasticsearch).

Téléchargez Logstash et installez-le avec rpm.

wget https://artifacts.elastic.co/downloads/logstash/logstash-5.1.1.rpm
rpm -ivh logstash-5.1.1.rpm

Générez un nouveau fichier de certificat SSL afin que le client puisse identifier le serveur élastique.

Accédez au répertoire tls et modifiez le fichier openssl.cnf.

cd /etc/pki/tls
vim openssl.cnf

Ajoutez une nouvelle ligne dans la section '[ v3_ca ]' pour l'identification du serveur.

[ v3_ca ]

# Adresse IP du serveur
subjectAltName =IP :10.0.15.10

Enregistrez et quittez.

Générez le fichier de certificat avec la commande openssl.

openssl req -config /etc/pki/tls/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout /etc/pki/tls/private/logstash-forwarder.key -out / etc/pki/tls/certs/logstash-forwarder.crt

Les fichiers de certificat se trouvent dans les répertoires '/etc/pki/tls/certs/' et '/etc/pki/tls/private/'.

Ensuite, nous allons créer de nouveaux fichiers de configuration pour Logstash. Nous allons créer un nouveau fichier "filebeat-input.conf" pour configurer les sources de journal pour filebeat, puis un fichier "syslog-filter.conf" pour le traitement syslog et le fichier "output-elasticsearch.conf" pour définir la sortie Elasticsearch.

Accédez au répertoire de configuration logstash et créez les nouveaux fichiers de configuration dans le sous-répertoire 'conf.d'.

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

Configuration d'entrée :collez la configuration ci-dessous.

input {
  bat {
    port => 5443
    ssl => true
    ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
    ssl_key => "/etc/pki/tls/private/logstash-forwarder.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.

Enfin, ajoutez logstash pour démarrer au démarrage et démarrer le service.

sudo systemctl enable logstash
sudo systemctl start logstash

Étape 6 - Installer et configurer Filebeat sur le 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 tutoriel, je vais vous montrer comment installer et configurer 'Filebeat' pour transférer les fichiers journaux de données vers le serveur Logstash via une connexion SSL.

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

ssh [protégé par e-mail]

Copiez le fichier de certificat avec la commande scp.

scp [email protected] :~/logstash-forwarder.crt .
TYPE mot de passe du serveur elk

Créez un nouveau répertoire et déplacez le fichier de certificat dans ce répertoire.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Ensuite, importez la clé élastique sur le serveur client1.

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

Téléchargez Filebeat et installez-le avec rpm.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-x86_64.rpm
rpm -ivh filebeat-5.1.1-x86_64.rpm

Filebeat a été installé, accédez au répertoire de configuration et modifiez le fichier "filebeat.yml".

cd /etc/filebeat/
vim filebeat.yml

Dans la section des chemins à la ligne 21, ajoutez les nouveaux fichiers journaux. Nous ajouterons deux fichiers '/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 les fichiers de type syslog.

 type de document :syslog

Filebeat utilise Elasticsearch comme cible de sortie par défaut. Dans ce tutoriel, nous allons le changer en Logshtash. Désactivez la sortie Elasticsearch en ajoutant des commentaires sur les 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 la configuration indiquée ci-dessous.

output.logstash :
  # Les hôtes Logstash
  hôtes :["10.0.15.10:5443"]
  bulk_max_size :1024
  ssl.certificate_authorities :["/etc/ pki/tls/certs/logstash-forwarder.crt"]
  template.name :"filebeat"
  template.path :"filebeat.template.json"
  template.overwrite :false

Enregistrez le fichier et quittez vim.

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

sudo systemctl enable filebeat
sudo systemctl start filebeat

Étape 7 - Installer et configurer Filebeat sur le client Ubuntu

Connectez-vous au serveur par 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] :~/logstash-forwarder.crt .

Créez un nouveau répertoire pour le fichier de certificat et déplacez le fichier dans ce répertoire.

sudo mkdir -p /etc/pki/tls/certs/
mv ~/logstash-forwarder.crt /etc/pki/tls/certs/

Ajoutez la clé élastique au serveur.

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

Téléchargez le package Filebeat .deb et installez-le avec la commande dpkg.

wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-5.1.1-amd64.deb
dpkg -i filebeat-5.1.1-amd64.deb

Allez dans le répertoire de configuration de filebeat et éditez le fichier 'filebeat.yml' avec vim.

cd /etc/filebeat/
vim filebeat.yml

Ajoutez les nouveaux chemins de fichiers journaux dans la section de 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 ci-dessous.

#-------------------------- 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 les valeurs comme indiqué ci-dessous.

output.logstash :
  # Les hôtes Logstash
  hôtes :["10.0.15.10:5443"]
  bulk_max_size :1024
  ssl.certificate_authorities :["/etc/ pki/tls/certs/logstash-forwarder.crt"]
  template.name :"filebeat"
  template.path :"filebeat.template.json"
  template.overwrite :false

Enregistrez le fichier et quittez vim.

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

sudo systemctl enable filebeat
sudo systemctl start filebeat

Vérifiez l'état du service.

systemctl status filebeat

Étape 8 - Tester Elastic Stack

Ouvrez votre navigateur Web et visitez le domaine de la pile élastique que vous avez utilisé dans la configuration Nginx, le mien est "elk-stack.co". Connectez-vous en tant qu'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 le bouton 'Créer'.

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

Allez dans la rubrique '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 il y a bien plus que ce que vous pouvez faire avec le tableau de bord Kibana, il suffit de jouer avec les options disponibles.

Elastic Stack a été installé sur un serveur CentOS 7. Filebeat a été installé sur un CentOS 7 et un client Ubuntu.


Cent OS
  1. Comment installer des packages RPM sur CentOS

  2. Comment installer Elasticsearch sur CentOS 7

  3. Comment installer Graylog2 sur CentOS 7 / RHEL 7

  4. Comment installer Ntopng sur CentOS 6

  5. Comment installer la pile ELK sur CentOS 7

Comment installer Graylog 3.0 sur CentOS 7 / RHEL 7

Comment installer la pile ELK sur RHEL 8

Comment installer HHVM sur CentOS 6

Comment installer Deluge sur CentOS 7

Comment installer la pile ELK sur CentOS 7

Comment installer la pile ELK sur CentOS 8