Comment installer Elasticsearch, Logstash et Kibana (pile ELK) sur Ubuntu 14.04

introduction

Dans ce didacticiel, nous allons passer en revue l'installation de la pile Elasticsearch ELK sur Ubuntu 14.04, c'est-à-dire Elasticsearch 2.2.x, Logstash 2.2.x et Kibana 4.5.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: le composant serveur de Logstash qui traite les journaux entrants

  • Elasticsearch: stocke tous les journaux

  • Kibana: interface Web de recherche et de visualisation des journaux, qui seront proxy via Nginx

  • Filebeat: installé sur des serveurs clients qui enverront leurs journaux à Logstash, Filebeat sert d'agent d'expédition de journaux qui utilise le protocole réseau delumberjack pour communiquer avec Logstash

ELK Infrastructure

Nous installerons les trois premiers composants sur un seul serveur, que nous appellerons nosELK Server. Filebeat sera installé sur tous les serveurs clients pour lesquels nous voulons collecter des journaux, que nous appellerons collectivement nosClient Servers.

Conditions préalables

Pour compléter ce didacticiel, vous devez avoir un accès root à un serveur virtuel Ubuntu 14.04. Les instructions pour configurer cela peuvent être trouvées ici (étapes 3 et 4):Initial Server Setup with Ubuntu 14.04.

Si vous préférez utiliser CentOS à la place, consultez ce tutoriel:How To Install ELK on CentOS 7.

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: Ubuntu 14.04

  • 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.

Ajoutez le Oracle Java PPA à apt:

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

Mettez à jour votre base de données de paquets apt:

sudo apt-get update

Installez la dernière version stable d'Oracle Java 8 avec cette commande (et acceptez le contrat de licence qui apparaît):

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

Maintenant que Java 8 est installé, installons ElasticSearch.

Installer Elasticsearch

Elasticsearch peut être installé avec un gestionnaire de paquets en ajoutant la liste des sources de paquets d’Elastic.

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

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

Si votre invite est juste suspendue là-bas, elle attend probablement le mot de passe de votre utilisateur (pour autoriser la commandesudo). Si c'est le cas, entrez votre mot de passe.

Créez la liste de sources Elasticsearch:

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list

Mettez à jour votre base de données de paquets apt:

sudo apt-get update

Installez Elasticsearch avec cette commande:

sudo apt-get -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. Trouvez la ligne qui spécifienetwork.host, décommentez-la et remplacez sa valeur par «localhost» pour qu'elle ressemble à ceci:

elasticsearch.yml excerpt (updated)

network.host: localhost

Enregistrez et quittezelasticsearch.yml.

Maintenant démarrez Elasticsearch:

sudo service elasticsearch restart

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

sudo update-rc.d elasticsearch defaults 95 10

Maintenant que Elasticsearch est opérationnel, installons Kibana.

Installer Kibana

Kibana peut être installé avec un gestionnaire de paquets en ajoutant la liste des sources de paquets d’Elastic.

Créez la liste de sources Kibana:

echo "deb http://packages.elastic.co/kibana/4.5/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.5.x.list

Mettez à jour votre base de données de paquets apt:

sudo apt-get update

Installez Kibana avec cette commande:

sudo apt-get -y install kibana

Kibana est maintenant installé.

Ouvrez le fichier de configuration Kibana pour le modifier:

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

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

kibana.yml excerpt (updated)

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 utiliser un proxy inverse Nginx pour autoriser les accès externes.

Activez maintenant le service Kibana et lancez-le:

sudo update-rc.d kibana defaults 96 9
sudo service kibana start

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

Installer Nginx

Parce que nous avons configuré Kibana pour écouter surlocalhost, nous devons configurer un proxy inverse pour lui permettre un accès externe. Nous utiliserons Nginx à cette fin.

Note: Si vous avez déjà une instance 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 dehost, en/opt/kibana/config/kibana.yml, en adresse IP privée ou nom d'hôte de votre serveur Kibana). En outre, il est recommandé d'activer SSL / TLS.

Utilisez apt pour installer Nginx et Apache2-utils:

sudo apt-get install nginx apache2-utils

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 kibanaadmin

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 bloc de serveur par défaut Nginx dans votre éditeur favori. Nous allons utiliser vi:

sudo vi /etc/nginx/sites-available/default

Supprimez le contenu du fichier et collez le bloc de code suivant dans le fichier. Assurez-vous de mettre à jour lesserver_name pour qu'ils correspondent au nom de votre serveur:

/etc/nginx/sites-available/default

server {
    listen 80;

    server_name example.com;

    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 diriger le trafic HTTP de votre serveur vers l’application Kibana, qui écoute surlocalhost:5601. De plus, Nginx utilisera le fichierhtpasswd.users, que nous avons créé précédemment, et exigera une authentification de base.

Redémarrez maintenant Nginx pour que nos modifications prennent effet:

sudo service nginx restart

Kibana est maintenant accessible via votre nom de domaine complet ou l'adresse IP publique de votre serveur ELK, c.-à-d. 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 est disponible à partir du même référentiel qu'Elasticsearch et nous avons déjà installé cette clé publique. Créons donc la liste des sources Logstash:

echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list

Mettez à jour votre base de données de paquets apt:

sudo apt-get update

Installez Logstash avec cette commande:

sudo apt-get 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:

sudo mkdir -p /etc/pki/tls/certs
sudo mkdir /etc/pki/tls/private

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

Option 1: adresse IP

Si vous n'avez pas de configuration DNS - cela permettrait à vos serveurs, dont vous collecterez les journaux, de résoudre l'adresse IP de votre serveur ELK - vous devrez ajouter l'adresse IP privée de votre serveur ELK ausubjectAltName (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/ssl/openssl.cnf

Recherchez la section[ v3_ca ] dans le fichier et ajoutez cette ligne en dessous (en remplaçant l'adresse IP privée du serveur ELK):

openssl.cnf excerpt (updated)

subjectAltName = IP: ELK_server_private_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/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

Le fichierlogstash-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 opté pour 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 qui contient 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 (substituez dans le nom de domaine complet du serveur ELK):

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

Le fichierlogstash-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 configurationinput 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éebeats qui écoutera sur le port tcp5044 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, dans lequel nous ajouterons un filtre pour les messages syslog:

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

Insérez la configuration syslogfilteruivante:

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 de type «syslog» (par Filebeat), et il essaiera d'utilisergrok pour analyser les journaux syslog entrants afin de les rendre structurés et interrogeables.

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 configurationoutput 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 essentiellement 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 afin qu’ils soient triés entre la configuration d’entrée et la configuration de sortie (c.-à-d. entre 02- et 30-).

Testez votre configuration Logstash avec cette commande:

sudo service logstash configtest

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

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

sudo service logstash restart
sudo update-rc.d logstash defaults 96 9

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 packageunzip avec cette commande:

sudo apt-get -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 est correctement chargé, 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 Ubuntu ou Debian pour lequel vous souhaitez envoyer des journaux à Logstash sur votre serveur ELK. Pour obtenir des instructions sur l’installation de Filebeat sur des distributions Linux basées sur Red Hat (par exemple, RHEL, CentOS, etc.), reportez-vous auxSet Up Filebeat (Add Client Servers) section de la variante CentOS de ce tutoriel.

Copier le certificat SSL

Sur vosELK Server, copiez le certificat SSL - créé dans le didacticiel des prérequis - sur vosClient Server (remplacez l'adresse du serveur client et votre propre login):

scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/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 vosClient Server, copiez le certificat SSL du serveur ELK à 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

SurClient Server, créez la liste des sources Beats:

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

Il utilise également la même clé GPG que Elasticsearch, qui peut être installée avec cette commande:

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

Puis installez le paquet Filebeat:

sudo apt-get update
sudo apt-get 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. Lorsque vous avez terminé les étapes, vous devriez avoir un fichier qui ressemble à quelque chose commethis.

SurClient Server, créez et modifiez le fichier de configuration Filebeat:

sudo vi /etc/filebeat/filebeat.yml

[.note] #Note: Le fichier de configuration de Filebeat est au format YAML, ce qui signifie que l’indentation est très importante! Veillez à utiliser le même nombre d'espaces que ceux indiqués dans ces instructions.
#

En haut du fichier, vous verrez la sectionprospectors, où vous pouvez définir lesprospectors qui spécifient quels fichiers journaux doivent être expédiés et comment ils doivent être traités. Chaque prospecteur est indiqué par le caractère-.

Nous allons modifier le prospecteur existant pour envoyersyslog etauth.log à Logstash. Souspaths, 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 poursyslog etauth.log. Cela devrait ressembler à quelque chose comme ça quand vous avez fini:

filebeat.yml excerpt 1 of 5

...
      paths:
        - /var/log/auth.log
        - /var/log/syslog
#        - /var/log/*.log
...

Recherchez ensuite la ligne qui spécifiedocument_type:, décommentez-la et changez sa valeur en «syslog». Cela devrait ressembler à ceci après la modification:

filebeat.yml excerpt 2 of 5

...
      document_type: syslog
...

Cela spécifie que les logs de ce prospecteur sont de typesyslog (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 manière dont Filebeat traite vos journaux, n'hésitez pas à modifier ou à ajouter des entrées de prospecteur.

Ensuite, sous la sectionoutput, trouvez la ligne qui ditelasticsearch:, qui indique la section de sortie Elasticsearch (que nous n'allons pas utiliser). Delete or comment out the entire Elasticsearch output section (jusqu'à la ligne indiquant#logstash:).

Trouvez la section de sortie de Logstash commentée, indiquée par la ligne qui dit#logstash:, et supprimez-la en supprimant les# précédents. Dans cette section, supprimez les commentaires de la lignehosts: ["localhost:5044"]. Remplacezlocalhost par l'adresse IP privée (ou le nom d'hôte, si vous avez choisi cette option) de votre serveur ELK:

filebeat.yml excerpt 3 of 5

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

Cela configure Filebeat pour se connecter à Logstash sur votre serveur ELK au port5044 (le port pour lequel nous avons spécifié une entrée Logstash pour plus tôt).

Directement sous l'entréehosts, et avec la même indentation, ajoutez cette ligne:

filebeat.yml excerpt 4 of 5

    bulk_max_size: 1024

Ensuite, recherchez la sectiontls et supprimez-la de commentaire. Décommentez ensuite la ligne qui spécifiecertificate_authorities et changez sa valeur en["/etc/pki/tls/certs/logstash-forwarder.crt"]. Ça devrait ressembler a quelque chose comme ca:

filebeat.yml excerpt 5 of 5

...
    tls:
      # List of root certificates for HTTPS server verifications
      certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

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

Sauvegarder et quitter.

Maintenant, redémarrez Filebeat pour mettre nos modifications en place:

sudo service filebeat restart
sudo update-rc.d filebeat defaults 95 10

Encore une fois, si vous n'êtes pas sûr que votre configuration Filebeat soit correcte, comparez-la à ceexample Filebeat configuration.

Filebeat envoie maintenantsyslog etauth.log à Logstash sur 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 doit charger les données Filebeat dans Elasticsearch dans un index horodaté,filebeat-YYYY.MM.DD.

Sur vosELK Server, vérifiez qu'Elasticsearch reçoit bien les données en interrogeant l'index Filebeat avec 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:

Create index

Allez-y et sélectionnez[filebeat]-YYY.MM.DD dans le menu Index Patterns (côté gauche), puis cliquez sur le boutonStar (Set as default index) pour définir l'index Filebeat comme valeur par défaut.

Cliquez maintenant sur le lienDiscover 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:

Discover page

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 (rechercherhost: "hostname")

  • 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 devez vous pencher sur la collecte et le filtrage de vos autres journaux avec Logstash etcreating Kibana dashboards. Vous pouvez également vouloirgather system metrics by using Topbeat avec votre pile ELK. Tous ces sujets sont traités dans les autres tutoriels de cette série.

Bonne chance!

Related