Comment installer Elasticsearch, Logstash et Kibana (pile ELK) sur CentOS 7

introduction

Dans ce didacticiel, nous allons passer en revue l’installation de la pile Elasticsearch ELK sur CentOS 7, c’est-à-dire Elasticsearch 2.2.x, Logstash 2.2.x et Kibana 4.4.x. Nous vous montrerons également comment le configurer pour rassembler et visualiser les syslogs de vos systèmes dans un emplacement centralisé, à l’aide de Filebeat 1.1.x. Logstash est un outil open source permettant de collecter, analyser et stocker des journaux pour une utilisation ultérieure. Kibana est une interface Web permettant de rechercher et d’afficher les journaux indexés par Logstash. Ces deux outils sont basés sur Elasticsearch, qui est utilisé pour stocker les journaux.

La journalisation centralisée peut s’avérer très utile lorsque vous tentez d’identifier des problèmes avec vos serveurs ou vos applications, car elle vous permet d’effectuer une recherche dans tous vos journaux à un seul endroit. Il est également utile car il vous permet d’identifier les problèmes qui concernent plusieurs serveurs en corrélant leurs journaux au cours d’une période donnée.

Il est possible d’utiliser Logstash pour rassembler des journaux de tous types, mais nous limiterons la portée de ce tutoriel à la collecte de syslog.

Notre objectif

L’objectif de ce didacticiel est de configurer Logstash pour rassembler les syslog de plusieurs serveurs, et de configurer Kibana pour visualiser les journaux rassemblés.

Notre configuration de pile ELK comprend quatre composants principaux:

  • * Logstash *: composant serveur de Logstash qui traite les journaux entrants

  • * Elasticsearch *: Stocke tous les journaux

  • * Kibana *: interface Web pour la recherche et la visualisation de journaux, qui seront mandatés par Nginx

  • * Filebeat *: Installé sur les serveurs clients qui enverront leurs journaux à Logstash, Filebeat sert d’agent d’envoi de journaux utilisant le protocole de réseau lumberjack pour communiquer avec Logstash.

image: https: //assets.digitalocean.com/articles/elk/elk-infrastructure.png [Infrastructure ELK]

Nous allons installer les trois premiers composants sur un seul serveur, que nous appellerons notre * Serveur ELK *. Filebeat sera installé sur tous les serveurs clients pour lesquels nous souhaitons collecter des journaux, que nous appellerons collectivement nos * serveurs clients *.

Conditions préalables

Pour compléter ce didacticiel, vous devez avoir un accès root à un VPS CentOS 7. Les instructions pour le configurer peuvent être trouvées ici (étapes 3 et 4): Installation du serveur initial avec CentOS 7.

Si vous préférez utiliser Ubuntu à la place, consultez ce tutoriel: https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu- 14-04 [Comment installer ELK sur Ubuntu 14.04].

La quantité de CPU, de RAM et de stockage dont votre serveur ELK aura besoin dépend du volume de journaux que vous souhaitez collecter. Pour ce tutoriel, nous utiliserons un SMV avec les spécifications suivantes pour notre serveur ELK:

  • OS: CentOS 7

  • RAM: 4 Go

  • CPU: 2

En plus de votre serveur ELK, vous souhaiterez disposer de quelques autres serveurs à partir desquels vous collecterez les journaux.

Commençons par configurer notre serveur ELK!

Installer Java 8

Elasticsearch et Logstash nécessitent Java, nous allons donc l’installer maintenant. Nous allons installer une version récente d’Oracle Java 8 car c’est ce que recommande Elasticsearch. Cela devrait cependant fonctionner correctement avec OpenJDK, si vous décidez de suivre cette voie. Suivre les étapes décrites dans cette section signifie que vous acceptez le contrat de licence binaire Oracle pour Java SE.

Accédez à votre répertoire personnel et téléchargez le fichier JPM RPM JDK Oracle Java 8 (mise à jour 73, la plus récente au moment de la rédaction de cet article) avec ces commandes:

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

Puis installez le RPM avec cette commande yum (si vous avez téléchargé une version différente, remplacez le nom du fichier ici):

sudo yum -y localinstall jdk-8u73-linux-x64.rpm

Maintenant, Java doit être installé dans + / usr / java / jdk1.8.0_73 / jre / bin / java +, et lié à partir de + / usr / bin / java +.

Vous pouvez supprimer le fichier archive que vous avez téléchargé précédemment:

rm ~/jdk-8u*-linux-x64.rpm

Maintenant que Java 8 est installé, installons ElasticSearch.

Installer Elasticsearch

Elasticsearch peut être installé avec un gestionnaire de packages en ajoutant le référentiel de packages Elastic.

Exécutez la commande suivante pour importer la clé GPG publique Elasticsearch dans rpm:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Créez un nouveau fichier de référentiel yum pour Elasticsearch. Notez qu’il s’agit d’une seule commande:

echo '[elasticsearch-2.x]
name=Elasticsearch repository for 2.x packages
baseurl=http://packages.elastic.co/elasticsearch/2.x/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
' | sudo tee /etc/yum.repos.d/elasticsearch.repo

Installez Elasticsearch avec cette commande:

sudo yum -y install elasticsearch

Elasticsearch est maintenant installé. Modifions la configuration:

sudo vi /etc/elasticsearch/elasticsearch.yml

Vous souhaiterez restreindre l’accès extérieur à votre instance Elasticsearch (port 9200) afin que les personnes extérieures ne puissent pas lire vos données ni arrêter votre cluster Elasticsearch via l’API HTTP. Recherchez la ligne qui spécifie + network.host +, décommentez-la et remplacez sa valeur par «localhost» afin qu’elle ressemble à ceci:

elasticsearch.yml extrait (mise à jour)

network.host: localhost

Enregistrez et quittez + elasticsearch.yml +.

Maintenant démarrez Elasticsearch:

sudo systemctl start elasticsearch

Exécutez ensuite la commande suivante pour démarrer Elasticsearch automatiquement au démarrage:

sudo systemctl enable elasticsearch

Maintenant que Elasticsearch est opérationnel, installons Kibana.

Installer Kibana

Le paquet Kibana partage la même clé GPG qu’Elasticsearch et nous avons déjà installé cette clé publique.

Créez et éditez un nouveau fichier de référentiel yum pour Kibana:

sudo vi /etc/yum.repos.d/kibana.repo

Ajoutez la configuration de référentiel suivante:

/etc/yum.repos.d/kibana.repo

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1

Sauvegarder et quitter.

Installez Kibana avec cette commande:

sudo yum -y install kibana

Ouvrez le fichier de configuration Kibana pour le modifier:

sudo vi /opt/kibana/config/kibana.yml

Dans le fichier de configuration Kibana, recherchez la ligne spécifiant + server.host + et remplacez l’adresse IP («0.0.0.0» par défaut) par «localhost»:

extrait de kibana.yml (mise à jour)

server.host: "localhost"

Sauvegarder et quitter. Grâce à ce paramètre, Kibana ne sera accessible qu’à l’hôte local. Cela convient car nous allons installer un proxy inverse Nginx sur le même serveur pour permettre un accès externe.

Maintenant démarrez le service Kibana et activez-le:

sudo systemctl start kibana
sudo chkconfig kibana on

Avant de pouvoir utiliser l’interface Web de Kibana, nous devons configurer un proxy inverse. Faisons-le maintenant, avec Nginx.

Installer Nginx

Comme nous avons configuré Kibana pour écouter sur + localhost +, nous devons configurer un proxy inverse pour lui permettre un accès externe. Nous utiliserons Nginx à cette fin.

  • Remarque: * Si vous avez déjà une instance de Nginx que vous souhaitez utiliser, n’hésitez pas à l’utiliser à la place. Assurez-vous simplement de configurer Kibana pour qu’il soit accessible par votre serveur Nginx (vous voudrez probablement changer la valeur + hôte +, dans + / opt / kibana / config / kibana.yml +, par l’adresse IP privée de votre serveur Kibana) . En outre, il est recommandé d’activer SSL / TLS.

Ajoutez le référentiel EPEL à yum:

sudo yum -y install epel-release

Maintenant, utilisez yum pour installer Nginx et httpd-tools:

sudo yum -y install nginx httpd-tools

Utilisez htpasswd pour créer un utilisateur admin, appelé «kibanaadmin» (vous devez utiliser un autre nom), pouvant accéder à l’interface Web de Kibana:

sudo htpasswd -c /etc/nginx/htpasswd.users

Entrez un mot de passe à l’invite. N’oubliez pas cette connexion, car vous en aurez besoin pour accéder à l’interface Web de Kibana.

Ouvrez maintenant le fichier de configuration Nginx dans votre éditeur favori. Nous allons utiliser vi:

sudo vi /etc/nginx/nginx.conf

Recherchez le bloc de serveur par défaut (commençant par + serveur {+), le dernier bloc de configuration du fichier, puis supprimez-le. Lorsque vous avez terminé, les deux dernières lignes du fichier doivent ressembler à ceci:

extrait de nginx.conf

   include /etc/nginx/conf.d/*.conf;
}

Sauvegarder et quitter.

Nous allons maintenant créer un bloc de serveur Nginx dans un nouveau fichier:

sudo vi /etc/nginx/conf.d/kibana.conf

Collez le bloc de code suivant dans le fichier. Assurez-vous de mettre à jour le + nom_serveur + pour qu’il corresponde au nom de votre serveur:

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

server {
   listen 80;

   server_name ;

   auth_basic "Restricted Access";
   auth_basic_user_file /etc/nginx/htpasswd.users;

   location / {
       proxy_pass http://localhost:5601;
       proxy_http_version 1.1;
       proxy_set_header Upgrade $http_upgrade;
       proxy_set_header Connection 'upgrade';
       proxy_set_header Host $host;
       proxy_cache_bypass $http_upgrade;
   }
}

Sauvegarder et quitter. Cela configure Nginx pour qu’il dirige le trafic HTTP de votre serveur vers l’application Kibana, qui écoute sur + localhost: 5601 +. De plus, Nginx utilisera le fichier + htpasswd.users +, créé précédemment, et nécessitant une authentification de base.

Maintenant, démarrez et activez Nginx pour appliquer nos modifications:

sudo systemctl start nginx
sudo systemctl enable nginx

Kibana est maintenant accessible via votre nom de domaine complet ou l’adresse IP publique de votre serveur ELK, c.-à-d. http: // elk% 5C_server% 5C_public% 5C_ip / [http: // elk \ _server \ _public \ _ip /]. Si vous y allez dans un navigateur Web, après avoir saisi les informations d’identification «kibanaadmin», vous devriez voir une page d’accueil Kibana qui vous demandera de configurer un motif d’index. Nous y reviendrons plus tard, après l’installation de tous les autres composants.

Installer Logstash

Le package Logstash partage la même clé GPG qu’Elasticsearch et nous avons déjà installé cette clé publique. Nous allons donc créer et éditer un nouveau fichier de référentiel Yum pour Logstash:

sudo vi /etc/yum.repos.d/logstash.repo

Ajoutez la configuration de référentiel suivante:

/etc/yum.repos.d/logstash.repo

[logstash-2.2]
name=logstash repository for 2.2 packages
baseurl=http://packages.elasticsearch.org/logstash/2.2/centos
gpgcheck=1
gpgkey=http://packages.elasticsearch.org/GPG-KEY-elasticsearch
enabled=1

Sauvegarder et quitter.

Installez Logstash avec cette commande:

sudo yum -y install logstash

Logstash est installé mais n’est pas encore configuré.

Générer des certificats SSL

Comme nous allons utiliser Filebeat pour envoyer les journaux de nos serveurs clients à notre serveur ELK, nous devons créer un certificat SSL et une paire de clés. Filebeat utilise le certificat pour vérifier l’identité du serveur ELK. Créez les répertoires qui stockeront le certificat et la clé privée avec les commandes suivantes:

Vous avez maintenant deux options pour générer vos certificats SSL. Si vous avez une configuration DNS qui permettra à vos serveurs clients de résoudre l’adresse IP du serveur ELK, utilisez * Option 2 *. Sinon, * Option 1 * vous permettra d’utiliser des adresses IP.

Option 1: adresse IP

Si vous ne disposez pas d’une configuration DNS autorisant vos serveurs, à partir de laquelle vous collecterez les journaux, pour résoudre l’adresse IP de votre serveur ELK, vous devrez ajouter l’adresse IP privée de votre serveur ELK à la commande + subjectAltName + (SAN) du certificat SSL que nous sommes sur le point de générer. Pour ce faire, ouvrez le fichier de configuration OpenSSL:

sudo vi /etc/pki/tls/openssl.cnf

Recherchez la section + [v3_ca] + dans le fichier et ajoutez cette ligne sous celle-ci (en la remplaçant par l’adresse IP privée du serveur ELK):

extrait openssl.cnf

subjectAltName = IP:

Sauvegarder et quitter.

Générez maintenant le certificat SSL et la clé privée aux emplacements appropriés (/ etc / pki / tls /), avec les commandes suivantes:

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

Le fichier logstash-forwarder.crt sera copié sur tous les serveurs qui enverront les journaux à Logstash, mais nous le ferons un peu plus tard. Terminons notre configuration Logstash. Si vous avez choisi cette option, ignorez l’option 2 et passez à * Configure Logstash *.

Option 2: nom de domaine complet (DNS)

Si vous avez une configuration DNS avec votre réseau privé, vous devez créer un enregistrement A contenant l’adresse IP privée du serveur ELK. Ce nom de domaine sera utilisé dans la commande suivante pour générer le certificat SSL. Vous pouvez également utiliser un enregistrement qui pointe vers l’adresse IP publique du serveur. Assurez-vous simplement que vos serveurs (ceux à partir desquels vous collecterez les journaux) seront en mesure de résoudre le nom de domaine sur votre serveur ELK.

Générez maintenant le certificat SSL et la clé privée, aux emplacements appropriés (/ etc / pki / tls /…), avec la commande suivante (remplacez dans le nom de domaine complet du serveur ELK):

cd /etc/pki/tls
sudo openssl req -subj '/CN=/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Le fichier logstash-forwarder.crt sera copié sur tous les serveurs qui enverront les journaux à Logstash, mais nous le ferons un peu plus tard. Terminons notre configuration Logstash.

Configurer Logstash

Les fichiers de configuration Logstash sont au format JSON et résident dans /etc/logstash/conf.d. La configuration comprend trois sections: les entrées, les filtres et les sorties.

Créons un fichier de configuration appelé + 02-beats-input.conf + et configurons notre entrée «filebeat»:

sudo vi /etc/logstash/conf.d/02-beats-input.conf

Insérez la configuration * input * suivante:

02-beats-input.conf

input {
 beats {
   port => 5044
   ssl => true
   ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
   ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
 }
}

Sauvegarder et quitter. Cela spécifie une entrée + beats + qui écoutera sur le port TCP + 5044 +, et utilisera le certificat SSL et la clé privée que nous avons créés précédemment.

Créons maintenant un fichier de configuration appelé + 10-syslog-filter.conf +, où nous allons ajouter un filtre pour les messages syslog:

sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

Insérez la configuration syslog * filter * suivante:

10-syslog-filter.conf

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}" ]
   }
   syslog_pri { }
   date {
     match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
   }
 }
}

Sauvegarder et quitter. Ce filtre recherche les journaux étiquetés comme type «syslog» (par Filebeat) et essaiera d’utiliser + grok + pour analyser les journaux syslog entrants afin de le structurer et de le rendre accessible aux requêtes.

Enfin, nous allons créer un fichier de configuration appelé + 30-elasticsearch-output.conf +:

sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

Insérez la configuration * output * suivante:

/etc/logstash/conf.d/30-elasticsearch-output.conf

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

Sauvegarder et quitter. Cette sortie configure fondamentalement Logstash pour stocker les données de battements dans Elasticsearch qui s’exécute à + ​​localhost: 9200 +, dans un index nommé d’après le battement utilisé (filebeat, dans notre cas).

Si vous souhaitez ajouter des filtres pour d’autres applications utilisant l’entrée Filebeat, veillez à nommer les fichiers de manière à ce qu’ils soient triés entre la configuration d’entrée et la configuration de sortie (c’est-à-dire entre 02- et 30-).

Testez votre configuration Logstash avec cette commande:

sudo service logstash configtest

Il devrait afficher + Configuration OK + s’il n’y a pas d’erreur de syntaxe. Sinon, essayez de lire la sortie d’erreur pour voir ce qui ne va pas avec votre configuration Logstash.

Redémarrez et activez Logstash pour appliquer les modifications apportées à la configuration:

sudo systemctl restart logstash
sudo chkconfig logstash on

Nous allons ensuite charger les exemples de tableaux de bord Kibana.

Charger des tableaux de bord Kibana

Elastic fournit plusieurs exemples de tableaux de bord Kibana et de modèles d’index Beats qui peuvent vous aider à démarrer avec Kibana. Bien que nous n’utilisions pas les tableaux de bord dans ce didacticiel, nous les chargerons quand même afin que nous puissions utiliser le modèle d’index Filebeat qu’il inclut.

Tout d’abord, téléchargez l’exemple d’archive de tableaux de bord dans votre répertoire personnel:

cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

Installez le paquetage + unzip + avec cette commande:

sudo yum -y install unzip

Ensuite, extrayez le contenu de l’archive:

unzip beats-dashboards-*.zip

Et chargez les exemples de tableaux de bord, visualisations et modèles d’indexation Beats dans Elasticsearch avec les commandes suivantes:

cd beats-dashboards-*
./load.sh

Voici les modèles d’index que nous venons de charger:

  • [packetbeat-] AAAA.MM.DD

  • [topbeat-] AAAA.MM.DD

  • [battement de fichier] AAAA.MM.DD

  • [winlogbeat-] AAAA.MM.DD

Lorsque nous commencerons à utiliser Kibana, nous choisirons le modèle d’index Filebeat comme modèle par défaut.

Charger le modèle d’index de battement de fichier dans Elasticsearch

Comme nous prévoyons d’utiliser Filebeat pour envoyer des journaux à Elasticsearch, nous devons charger un modèle d’index Filebeat. Le modèle d’index configurera Elasticsearch pour analyser les champs Filebeat entrants de manière intelligente.

Tout d’abord, téléchargez le modèle d’index Filebeat dans votre répertoire personnel:

cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

Puis chargez le template avec cette commande:

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' [email protected]

Si le modèle chargé correctement, vous devriez voir un message comme celui-ci:

Output:{
 "acknowledged" : true
}

Maintenant que notre serveur ELK est prêt à recevoir les données Filebeat, passons maintenant à la configuration de Filebeat sur chaque serveur client.

Configurer Filebeat (Ajouter des serveurs clients)

Suivez ces étapes pour chaque serveur * CentOS ou RHEL 7 * que vous souhaitez envoyer des journaux à votre serveur ELK. Pour obtenir des instructions sur l’installation de Filebeat sur des distributions Linux basées sur Debian (par exemple, Ubuntu, Debian, etc.), reportez-vous à la https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04 # set-up-filebeat (add-client-servers) [Section Configurer Filebeat (Ajouter des serveurs client)] de la variante Ubuntu de ce tutoriel.

Copier le certificat SSL

Sur votre * ELK Server *, copiez le certificat SSL créé dans le tutoriel préalable sur votre * Client Server * (remplacez l’adresse du serveur client et votre propre identifiant):

scp /etc/pki/tls/certs/logstash-forwarder.crt @:/tmp

Après avoir fourni vos identifiants de connexion, assurez-vous que la copie du certificat a réussi. Il est requis pour la communication entre les serveurs clients et le serveur ELK.

Maintenant, sur votre * Client Server *, copiez le certificat SSL du serveur ELK dans l’emplacement approprié (/ etc / pki / tls / certs):

sudo mkdir -p /etc/pki/tls/certs
sudo cp /tmp/logstash-forwarder.crt /etc/pki/tls/certs/

Nous allons maintenant installer le paquet Topbeat.

Installer le paquet Filebeat

Sur * Client Server *, créez la commande suivante pour importer la clé GPG publique Elasticsearch dans rpm:

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch

Créez et éditez un nouveau fichier de référentiel yum pour Filebeat:

sudo vi /etc/yum.repos.d/elastic-beats.repo

Ajoutez la configuration de référentiel suivante:

/etc/yum.repos.d/elastic-beats.repo

[beats]
name=Elastic Beats Repository
baseurl=https://packages.elastic.co/beats/yum/el/$basearch
enabled=1
gpgkey=https://packages.elastic.co/GPG-KEY-elasticsearch
gpgcheck=1

Sauvegarder et quitter.

Installez Filebeat avec cette commande:

sudo yum -y install filebeat

Filebeat est installé mais n’est pas encore configuré.

Configurer Filebeat

Nous allons maintenant configurer Filebeat pour se connecter à Logstash sur notre serveur ELK. Cette section vous guidera dans la modification du fichier de configuration fourni avec Filebeat. Une fois ces étapes terminées, vous devriez avoir un fichier qui ressemble à https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/de660ffdd3decacdcaf88109e5683e1eef75c01f/filebeat.yml-centosythth].

Sur * Client Server *, créez et modifiez le fichier de configuration Filebeat:

sudo vi /etc/filebeat/filebeat.yml

Près du haut du fichier, vous verrez la section + prospecteurs +, où vous pouvez définir des prospecteurs * qui spécifient les fichiers journaux à expédier et leur traitement. Chaque prospecteur est indiqué par le caractère + - +.

Nous allons modifier le prospecteur existant pour envoyer des journaux + secure + et + messages + à Logstash. Sous + chemins +, commentez le fichier + - / var / log / *. Log +. Cela empêchera Filebeat d’envoyer tous les + .log + de ce répertoire à Logstash. Ajoutez ensuite de nouvelles entrées pour + syslog et` + auth.log`. Cela devrait ressembler à quelque chose comme ça quand vous avez fini:

extrait filebeat.yml 1 sur 5

...
     paths:


       - /var/log/*.log
...

Recherchez ensuite la ligne qui spécifie + document_type: +, décommentez-la et remplacez sa valeur par «syslog». Cela devrait ressembler à ceci après la modification:

extrait 2 de 5 de filebeat.yml

...
     document_type:
...

Cela indique que les journaux de ce prospecteur sont du type * syslog * (qui est le type recherché par notre filtre Logstash).

Si vous souhaitez envoyer d’autres fichiers sur votre serveur ELK ou apporter des modifications à la façon dont Filebeat traite vos journaux, n’hésitez pas à modifier ou à ajouter des entrées de prospecteur.

Ensuite, sous la section + output +, trouvez la ligne ` + elasticsearch: + `, qui indique la section de sortie Elasticsearch (que nous n’allons pas utiliser). * Supprimer ou commenter toute la section de sortie Elasticsearch * (jusqu’à la ligne qui dit `+ logstash: +).

Recherchez la section de sortie Logstash commentée, indiquée par la ligne «+ # logstash: », et supprimez le commentaire en supprimant le précédent ` # `. Dans cette section, retirez les commentaires des hôtes `: [" localhost: 5044 "] `. Remplacez ` localhost +` par l’adresse IP privée (ou le nom d’hôte, si vous y êtes allé avec cette option) de votre serveur ELK:

extrait filebeat.yml 3 sur 5

 ### Logstash as output
 logstash:
   # The Logstash hosts
   hosts: [":5044"]

Ceci configure Filebeat pour se connecter à Logstash sur votre serveur ELK au port 5044 (le port pour lequel nous avons spécifié une entrée auparavant).

Directement sous l’entrée + hosts +, et avec la même indentation, ajoutez cette ligne:

extrait filebeat.yml 4 sur 5

   bulk_max_size: 1024

Ensuite, trouvez la section + tls + et décommentez-la. Puis décommentez la ligne spécifiant + certificate_authorities +, et remplacez sa valeur par + [" / etc / pki / tls / certs / logstash-forwarder.crt "] +. Ça devrait ressembler a quelque chose comme ca:

extrait filebeat.yml 5 sur 5

...

     # List of root certificates for HTTPS server verifications

Ceci configure Filebeat pour utiliser le certificat SSL que nous avons créé sur le serveur ELK.

Sauvegarder et quitter.

Maintenant, démarrez et activez Filebeat pour mettre nos modifications en place:

sudo systemctl start filebeat
sudo systemctl enable filebeat

Encore une fois, si vous n’êtes pas sûr que votre configuration Filebeat est correcte, comparez-la à cette https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/de660ffdd3decacdcaf88109e5683e1eef75c01f/filebeat.

Filebeat envoie maintenant vos fichiers syslog + messages + et + secure + à votre serveur ELK! Répétez cette section pour tous les autres serveurs pour lesquels vous souhaitez collecter des journaux.

Tester l’installation de Filebeat

Si votre pile ELK est correctement configurée, Filebeat (sur votre serveur client) devrait envoyer vos journaux à Logstash sur votre serveur ELK. Logstash devrait charger les données Filebeat dans Elasticsearch dans un index horodaté, + filebeat-YYYY.MM.DD +.

Sur votre * ELK Server *, vérifiez qu’Elasticsearch reçoit effectivement les données en interrogeant l’index Filebeat à l’aide de cette commande:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

Vous devriez voir un paquet de sortie qui ressemble à ceci:

Sample Output:...
{
     "_index" : "filebeat-2016.01.29",
     "_type" : "log",
     "_id" : "AVKO98yuaHvsHQLa53HE",
     "_score" : 1.0,
     "_source":{"message":"Feb  3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
   }
...

Si votre sortie affiche un total de 0 occurrences, Elasticsearch ne charge aucun journal sous l’index recherché et vous devez vérifier si votre configuration contient des erreurs. Si vous avez reçu le résultat attendu, passez à l’étape suivante.

Se connecter à Kibana

Lorsque vous avez terminé de configurer Filebeat sur tous les serveurs pour lesquels vous souhaitez collecter les journaux, examinons Kibana, l’interface Web que nous avons précédemment installée.

Dans un navigateur Web, accédez au nom de domaine complet ou à l’adresse IP publique de votre serveur ELK. Après avoir saisi les informations d’identification «kibanaadmin», une page vous invitant à configurer un modèle d’index par défaut devrait s’afficher:

image: https: //assets.digitalocean.com/articles/elk/1-filebeat-index.gif [Créer un index]

Allez-y et sélectionnez * [filebeat] -YYY.MM.DD * dans le menu Pattern Patterns (à gauche), puis cliquez sur le bouton * Star (Définir comme index par défaut) * pour définir l’index Filebeat comme valeur par défaut.

Cliquez maintenant sur le lien * Découvrir * dans la barre de navigation supérieure. Par défaut, toutes les données du journal s’affichent au cours des 15 dernières minutes. Vous devriez voir un histogramme avec les événements de journal, avec les messages de journal ci-dessous:

image: https: //assets.digitalocean.com/articles/elk/2-filebeat-discover.png [Page de découverte]

Pour le moment, il n’y aura pas grand-chose là-dedans, car vous ne collectez que les syslog de vos serveurs clients. Ici, vous pouvez rechercher et parcourir vos journaux. Vous pouvez également personnaliser votre tableau de bord.

Essayez les choses suivantes:

  • Recherchez «root» pour voir si quelqu’un tente de se connecter à vos serveurs en tant que root.

  • Rechercher un nom d’hôte particulier (recherche de + host:" "+)

  • Changez la période en sélectionnant une zone sur l’histogramme ou dans le menu ci-dessus

  • Cliquez sur les messages sous l’histogramme pour voir comment les données sont filtrées.

Kibana possède de nombreuses autres fonctionnalités, telles que la représentation graphique et le filtrage, alors n’hésitez pas à fouiller!

Conclusion

Maintenant que vos syslog sont centralisés via Elasticsearch et Logstash et que vous êtes en mesure de les visualiser avec Kibana, vous devriez commencer par centraliser tous vos journaux importants. N’oubliez pas que vous pouvez envoyer à peu près n’importe quel type de journal ou de données indexées à Logstash, mais les données deviennent encore plus utiles si elles sont analysées et structurées avec grok.

Pour améliorer votre nouvelle pile ELK, vous devriez vous renseigner sur la collecte et le filtrage de vos autres journaux avec Logstash et sur creating Tableaux de bord Kibana. Vous voudrez peut-être aussi cueillir des métriques système en utilisant Topbeat avec votre pile ELK. Tous ces sujets sont traités dans les autres tutoriels de cette série.

Bonne chance!

Related