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

Comment installer la pile ELK sur RHEL 8

La pile ELK, également connue sous le nom de pile Elastic, se compose de quatre projets open source :Elasticsearch, Logstash, Kibana et Beats. Il vous aide à stocker tous vos journaux au même endroit et vous permet d'analyser et de visualiser les données ou les problèmes en corrélant les événements à un moment donné.

Ce guide vous aide à installer la pile ELK sur RHEL 8.

Composants

Elasticsearch – Un moteur de recherche open source en texte intégral. Il stocke les journaux entrants de Logstash et offre la possibilité de rechercher les journaux/données en temps réel

Logstash – Il effectue le traitement des données (collecte, enrichissement et transformation) des journaux entrants envoyés par beats (forwarder) et les envoie à Elasticsearch

Kibana – Fournit une visualisation des données ou des journaux d'Elasticsearch.

Beats :installé sur les machines clientes, il collecte et envoie 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.

Nom d'hôte SE Adresse IP Objectif
elk.itzgeek.local RHEL 8 192.168.1.10 Pile ELK
client.itzgeek.local CentOS 7 192.168.1.20 Machine cliente (Filebeat)

Prérequis

Installer Java

Étant donné qu'Elasticsearch est basé sur Java, nous devons avoir OpenJDK ou Oracle JDK installé sur votre machine.

LIRE : Comment installer Java sur RHEL 8

Ici, j'utilise OpenJDK 1.8.

yum -y install java

Vérifiez la version Java.

java -version

Sortie :

openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-b04)
OpenJDK 64-Bit Server VM (build 25.212-b04, 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 sur le serveur ELK et le client.

cat << EOF > /etc/yum.repos.d/elastic.repo
[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md
EOF

Installer et configurer Elasticsearch

Elasticsearch est une source ouverte, le moteur de recherche en texte intégral 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-oss

Modifiez le fichier de configuration d'Elasticsearch en

vi /etc/elasticsearch/elasticsearch.yml

Définissez le nom du cluster, le nom du nœud, l'adresse IP d'écoute en fonction de votre environnement.

cluster.name: elkstack

node.name: elk.itzgeek.local

network.host: 192.168.1.10

Si vous définissez une adresse IP d'écoute, vous devez définir des hôtes de départ et des nœuds maîtres initiaux.

discovery.seed_hosts: ["elk.itzgeek.local"]

cluster.initial_master_nodes: ["elk.itzgeek.local"]

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 aux requêtes.

curl -X GET http://192.168.1.10:9200

Sortie :

{
  "name" : "elk.itzgeek.local",
  "cluster_name" : "elkstack",
  "cluster_uuid" : "yws_6oYKS965bZ7GTh0e6g",
  "version" : {
    "number" : "7.2.0",
    "build_flavor" : "oss",
    "build_type" : "rpm",
    "build_hash" : "508c38a",
    "build_date" : "2019-06-20T15:54:18.811730Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

Vérifiez la santé du cluster en exécutant la commande ci-dessous.

curl -XGET '192.168.1.10:9200/_cluster/health?pretty'

Résultat :l'état du cluster doit être vert.

{
  "cluster_name" : "elkstack",
  "status" : "green",
  "timed_out" : false,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}

Installer et configurer Logstash

Logstash est un outil open source de gestion des logs. Il collecte les journaux, les analyse et les stocke sur Elasticsearch. Plus de 160 plugins sont disponibles pour Logstash, qui offre la possibilité de traiter les différents types d'événements sans travail supplémentaire.

Installez le package Logstash.

yum -y install logstash-oss

La configuration de Logstash se trouve dans /etc/logstash/conf.d/ .

Le fichier de configuration Logstash se compose de trois sections, à savoir l'entrée, le filtre et la sortie. Les trois sections peuvent être trouvées dans un seul fichier ou 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/beats.conf

Dans la section d'entrée, nous allons configurer Logstash pour qu'il écoute sur le port 5044 les journaux entrants des beats (transmetteur) installés sur les machines clientes.

input {
  beats {
    port => 5044
  }
}

Dans la section des filtres, 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é. Ce filtre est très utile uniquement pour surveiller les messages syslog (/var/log/messages).

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, visitez la page grokdebugger.

Dans la section de sortie, nous définirons l'emplacement où les journaux seront stockés, évidemment, un nœud Elasticsearch.

output {
  elasticsearch {
    hosts => ["192.168.1.10:9200"]
    index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
  }
}

Maintenant, démarrez et activez le service Logstash.

systemctl start logstash

systemctl enable logstash

Attendez une minute pour permettre à Logstash de démarrer, puis exécutez la commande ci-dessous pour vérifier s'il écoute sur le port 5044.

netstat -antup | grep -i 5044

Sortie :

tcp6       0      0 :::5044                 :::*                    LISTEN      31014/java

Vous pouvez dépanner Logstash à l'aide des journaux.

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-oss

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 à Kibana à partir de machines externes. Pour l'autoriser, modifiez la ligne ci-dessous et mentionnez l'adresse IP de votre serveur ELK.

server.host: "0.0.0.0"

Décommentez la ligne suivante et mettez-la à jour avec l'URL de l'instance Elasticsearch.

elasticsearch.hosts: ["http://192.168.1.10:9200"]

Démarrez et activez kibana au démarrage du système.

systemctl start kibana

systemctl enable kibana

Vérifiez si Kibana écoute sur le port 5601.

netstat -antup | grep -i 5601

Sortie :

tcp        0      0 0.0.0.0:5601            0.0.0.0:*               LISTEN      3631/node

Pare-feu

Configurez un pare-feu sur le serveur ELK pour recevoir les journaux des machines clientes.

5044 – Pour que Logstash reçoive les logs

5061 – Pour accéder au Kibana depuis des machines externes.

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

  1. Packetbeat – Analyser les données des paquets réseau.
  2. Filebeat – Aperçu en temps réel des données de journal.
  3. Meilleur rythme – Obtenez des informations à partir des données d'infrastructure.
  4. Metricbeat – Envoi des métriques à Elasticsearch.

Configurez le référentiel Elastic sur la machine cliente pour obtenir le package Filebeat.

Installez Filebeat à l'aide de la commande suivante.

yum -y install filebeat

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.

Modifier le fichier de configuration filebeat.

vi /etc/filebeat/filebeat.yml

Commentez la section output.elasticsearch : car nous n'allons pas stocker les journaux directement dans Elasticsearch.

#-------------------------- Elasticsearch output ------------------------------
#output.elasticsearch:
  # Array of hosts to connect to.
  #hosts: ["localhost:9200"]

  # Optional protocol and basic auth credentials.
  #protocol: "https"
  #username: "elastic"
  #password: "changeme"

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 192.168.1.10 sur le port 5044 .

.   .   .

#----------------------------- Logstash output --------------------------------
output.logstash:
  # The Logstash hosts
  hosts: ["192.168.1.10:5044"]
.   .   .

En plus de /etc/filebeat/filebeat.yml , vous verriez la section des prospecteurs. Ici, vous devez spécifier quels journaux doivent être envoyés à Logstash.

Chaque prospecteur commence par un caractère.

Ici, nous allons configurer filebeat pour envoyer les journaux système /var/log/messages au serveur Logstash. Pour cela, modifiez le prospecteur existant sous paths section comme indiqué ci-dessous.

.   .   .

filebeat.inputs:

# Each - is an input. Most options can be set at the input level, so
# you can use different inputs for various configurations.
# Below are the input specific configurations.

- type: log

  # Change to true to enable this input configuration.
  enabled: true

  # Paths that should be crawled and fetched. Glob based paths.
  paths:
    - /var/log/messages
    #- c:\programdata\elasticsearch\logs\*

.  .  .

Redémarrez le service.

systemctl restart filebeat

systemctl enable filebeat

Accéder à Kibana

Accédez au Kibana en utilisant l'URL suivante.

http://votre-adresse-ip:5601/

Vous obtiendrez la page d'accueil de Kibana. Cliquez sur Explorer par moi-même .

Lors de votre premier accès, vous devez mapper l'index filebeat. Accédez à Gestion>> Modèles d'indexation>> Créer un modèle d'indexation .

Tapez ce qui suit dans le modèle d'index boîte.

filebeat-*
Vous devriez voir au moins un index filebeat comme ci-dessous. Cliquez sur Étape suivante .

Sélectionnez @timestamp puis cliquez sur Créer un modèle d'index .

@timestamp

Vérifiez vos modèles d'index et ses mappages.

Maintenant, cliquez sur Découvrir pour afficher les journaux et effectuer des requêtes de recherche.

Conclusion

C'est tout. Vous avez réussi à installer ELK Stack sur RHEL 8. Veuillez partager vos commentaires dans la section des commentaires.


Cent OS
  1. Comment installer Elasticsearch, Logstash et Kibana (ELK Stack) sur CentOS 8

  2. Comment installer Graylog2 sur CentOS 7 / RHEL 7

  3. Comment installer Elasticsearch sur CentOS 8 / RHEL 8

  4. Comment installer Elasticsearch sur CentOS/RHEL 8

  5. Comment installer la pile ELK sur CentOS 7

Comment configurer la pile ELK sur Debian 10 / Debian 9

Comment installer ELK Stack sur Ubuntu 18.04

Comment installer la pile ELK sur AlmaLinux 8

Comment installer la pile ELK sur CentOS 7

Comment installer la pile ELK sur CentOS 8

Comment installer la pile ELK sur Debian 8