Dans cet article, nous verrons comment installer Elasticsearch, Logstash et Kibana 4 sur Ubuntu 14.04 / 15.04. Cette pile ELK nous aide à stocker et à gérer les journaux dans un emplacement centralisé. La pile ELK se compose de quatre composants essentiels qui constituent une merveilleuse pile pour analyser les problèmes en corrélant les événements à un moment donné.
La centralisation des journaux facilitera la vie d'un administrateur système pour analyser les problèmes et les problèmes sans avoir à se rendre sur chaque machine pour les journaux, et visualiser ces journaux à la direction pour les besoins de l'entreprise.
Composants :
Logstash - Il effectue le traitement (collecte, analyse et l'envoie à Elasticsearch) des journaux entrants.
Elasticsearch - Stocke les journaux provenant de Logstash.
Kibana 4 - Interface Web pour visualiser les journaux (a sa propre interface). Les trois ci-dessus sont installés sur le serveur.
Logstash-forwarder – Installé sur les machines clientes, envoie le journal à Logstash via le protocole bûcheron.
Versions d'application :
Cet article utilise la version ci-dessous des logiciels pour la pile ELK.
Elastisearch 1.7.0
logstash-1.5.3
Kibana 4.1.1
logstash-forwarder-0.4.0
Prérequis :
1. Nous aurions besoin d'installer openJDK ou Oracle JDK, il est recommandé d'installer Oracle JDK. Vérifiez la version Java à l'aide de la commande suivante.
$ java -versionjava version "1.8.0_11"Java(TM) SE Runtime Environment (build 1.8.0_11-b12)Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode)
2. Installez wget.
$ sudo su -# apt-get update# apt-get install wget
Installez Elasticsearch :
Elasticsearch est un serveur de recherche open source, il offre une recherche et une analyse distribuées en temps réel avec une interface Web RESTful. Elasticsearch stocke tous les journaux envoyés par le serveur logstash et affiche les messages lorsque le kibana4 demande un remplissage complet de la demande de l'utilisateur via l'interface Web.
Cette rubrique couvre les paramètres de configuration requis pour ELK, vous pouvez également consulter Installer Elasticsearch sur CentOS 7 / Ubuntu 14.10 / Linux Mint 17.1 pour des instructions détaillées.
Installons Elasticsearch, il peut être téléchargé à partir du site officiel. Configurez le référentiel et installez la dernière version d'Elasticsearch.
# wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -# echo "deb http://packages.elastic.co/elasticsearch/1.7/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-1.7.list# apt-get update &&apt-get install elasticsearch
Configurez Elasticsearch pour qu'il démarre au démarrage du système.
# systemctl daemon-reload# systemctl enable elasticsearch.service# systemctl start elasticsearch.service
Attendez au moins une minute pour permettre à Elasticsearch de redémarrer complètement, sinon les tests échoueront. Elastisearch devrait maintenant écouter sur 9200 pour traiter la requête HTTP, nous pouvons utiliser CURL pour obtenir la réponse.
# curl -X GET http://localhost:9200{ "status" :200, "name" :"Thermo", "cluster_name" :"elasticsearch", "version" :{ "number" :"1.7. 0", "build_hash" :"929b9739cae115e73c346cb5f9a6f24ba735a743", "build_timestamp" :"2015-07-16T14:31:07Z", "build_snapshot" : false, "lucene_version" :"4.10.4" }, Vous "tagline" :" Savoir, pour la recherche"}
Installer Logstash :
Logstash est un outil open source, utilisé pour collecter les journaux, les analyser et les stocker en les recherchant. Oui, logstash est livré avec une interface Web (kibana3 est intégré) pour visualiser les journaux dont nous n'allons pas discuter ici à la place, nous utilisons kibana4. Le traitement de différents types d'événements peut être étendu en y ajoutant des plugins, plus de 160 plugins sont disponibles à ce jour. Passons directement à l'installation.
# echo "deb http://packages.elasticsearch.org/logstash/1.5/debian stable main" | sudo tee -a /etc/apt/sources.list# apt-get update &&apt-get install logstash
Une fois le serveur logstash installé, passons à la section suivante
Créer un certificat SSL :
Logstash-forwarder qui sera installé sur le client-serveur pour expédier les journaux nécessite un certificat SSL pour valider l'identité du serveur logstash. Nous avons deux options pour créer un certificat SSL et cela dépend de la configuration de logstash-forwarder ; si vous utilisez le nom d'hôte ("servers":[ "server.itzgeek.local:5050" ]), le nom du sujet de SSL doit correspondre à "server.itzgeek.local". Si vous utilisez ( "serveurs":[ "192.168.12.10:5050" ]) une adresse IP, vous devez créer un certificat SSL avec IP SAN avec la valeur 192.168.12.10.
Suivez l'une des méthodes pour créer un certificat SSL.
Option 1 :(nom de domaine complet du nom d'hôte)
Avant de créer un certificat, assurez-vous d'avoir un enregistrement A pour le serveur logstash ; assurez-vous que les serveurs clients sont capables de résoudre le nom d'hôte du serveur logstash. Si vous n'avez pas de DNS, veuillez ajouter l'entrée d'hôte pour le serveur logstash ; où 192.168.12.10 est l'adresse IP du serveur logstash et itzgeek est le nom d'hôte de votre serveur logstash.
# vi /etc/hosts192.168.12.10 serveur.itzgeek.local
Créons un certificat SSL. Accédez au répertoire OpenSSL.
# cd /etc/ssl/
Exécutez la commande suivante pour créer un certificat SSL, remplacez le "rouge" par votre vrai serveur logstash.
# openssl req -x509 -nodes -newkey rsa:2048 -days 365 -keyout logstash-forwarder.key -out logstash-forwarder.crt -subj /CN=server.itzgeek.local
Option 2 :(Adresse IP)
Avant de créer un certificat SSL, nous aurions besoin d'ajouter une adresse IP du serveur logstash à SubjectAltName dans le fichier de configuration OpenSSL.
# vi /etc/pki/tls/openssl.cnf
Accédez à la section "[ v3_ca ]" et remplacez la "rouge" par l'adresse IP de votre serveur logstash.
subjectAltName =IP:192.168.12.10
Allez dans le répertoire OpenSSL.
# cd /etc/ssl/
Exécutez la commande suivante pour créer un certificat SSL.
# openssl req -x509 -days 365 -batch -nodes -newkey rsa:2048 -keyout logstash-forwarder.key -out logstash-forwarder.crt
Ce logstash-forwarder.crt doit être copié sur tous les serveurs clients ceux qui envoient des journaux au serveur logstash.
Configurer Logstash :
Les fichiers de configuration Logstash se trouvent dans /etc/logstash/conf.d/, juste un dossier vide. Nous aurions besoin de créer un fichier, les fichiers de configuration de logstash se composent de trois sections d'entrée, de filtre et de sortie ; les trois sections peuvent être trouvées soit dans un seul fichier, soit chaque section aura des extrémités de fichier séparées avec .conf.
Ici, nous utiliserons un seul fichier pour placer une section d'entrée, de filtre et de sortie.
# vi /etc/logstash/conf.d/logstash.conf
Dans la première section, nous mettrons une entrée pour la configuration des entrées. La configuration suivante définit le bûcheron pour qu'il écoute sur le port 5050 les journaux entrants du logstash-forwarder qui se trouve dans les serveurs clients, il utilisera également le certificat SSL que nous avons créé précédemment.
entrée {bûcheron {port => 5050type => "logs"ssl_certificate => "/etc/ssl/logstash-forwarder.crt"ssl_key => "/etc/ssl/logstash-forwarder.key"}}Dans la deuxième section, nous mettrons une entrée pour la configuration du filtre. Grok est un filtre dans logstash, qui analyse les journaux avant de les envoyer à Elasticsearch pour stockage. Le filtre grok suivant recherchera les journaux étiquetés comme "syslog" et essaiera de les analyser pour créer un index structuré.
filter {if [type] =="syslog" { grok { match => { "message" => "%{SYSLOGLINE}" } } date {match => [ "timestamp", "MMM d HH:mm :ss", "MMM jj HH:mm:ss" ]} }}Envisagez de visiter grokdebugger pour les modèles de filtre.
Dans la troisième section, nous mettrons une entrée de configuration de sortie. Cette section définit l'emplacement où les journaux sont stockés ; il devrait évidemment s'agir d'Elasticsearch.
sortie {elasticsearch { host => localhost index => "logstash-%{+YYYY.MM.dd}" }stdout { codec => rubydebug }}Démarrez maintenant le service logstash.
# systemctl démarre logstash.serviceLes journaux du serveur Logstash sont stockés dans le fichier suivant, cela nous aidera à résoudre les problèmes.
# cat /var/log/logstash/logstash.logEnsuite, nous allons configurer un logstash-forwarder pour expédier les journaux au serveur logstash.
Configurer Logstash-forwarder.
Logstash-forwarder est un logiciel client qui envoie les journaux à un serveur logstash, il doit être installé sur tous les serveurs clients. Logstash-forwarder peut être téléchargé depuis le site officiel ou vous pouvez utiliser la commande suivante pour le télécharger dans le terminal et l'installer.
# wget https://download.elastic.co/logstash-forwarder/binaries/logstash-forwarder_0.4.0_amd64.deb# dpkg -i logstash-forwarder_0.4.0_amd64.debLogstash-forwader utilise un certificat SSL pour valider l'identité du serveur logstash, donc copiez le fichier logstash-forwarder.crt que nous avons créé précédemment du serveur logstash vers le client.
# scp -pr [email protected]://etc/ssl/logstash-forwarder.crt /etc/sslOuvrez le fichier de configuration.
# vi /etc/logstash-forwarder.confDans la section "réseau", mentionnez le serveur logstash avec le numéro de port et le chemin d'accès au certificat logstash-forwarder que vous avez copié depuis le serveur logstash.
Cette section définit le logstash-forwarder pour envoyer un journal au serveur logstash "server.itzgeek.local" sur le port 5050 et le client valide l'identité du serveur à l'aide d'un certificat SSL. Remarque :Remplacez "server.itzgeek.local" par l'adresse IP au cas où vous utilisez un SAN IP.
"servers":[ "server.itzgeek.local:5050" ],"ssl ca":"/etc/ssl/logstash-forwarder.crt","timeout":15Dans la section "fichiers", configure ce que sont tous les fichiers à expédier. Dans cet article, nous allons configurer un logstash-forwarder pour envoyer un logs (/var/log/syslog) au serveur logstash avec "syslog" comme type.
{"paths":["/var/log/syslog"],"fields":{ "type":"syslog" }}Redémarrez le service.
# systemctl démarre logstash-forwarder.serviceVous pouvez consulter un fichier journal en cas de problème.
# cat /var/log/logstash-forwarder/logstash-forwarder.errConfigurer Kibana 4 :
Kidbana fournit une visualisation des journaux, téléchargez-le sur le site officiel. Utilisez la commande suivante pour le télécharger dans le terminal.
# wget https://download.elastic.co/kibana/kibana/kibana-4.1.1-linux-x64.tar.gzExtrayez-le et déplacez-le vers /opt/
# tar -zxvf kibana-4.1.1-linux-x64.tar.gz# mv kibana-4.1.1-linux-x64 /opt/kibana4Activer le fichier PID pour Kibana, ceci est nécessaire pour créer un fichier init systemd.
# sed -i 's/#pid_file/pid_file/g' /opt/kibana4/config/kibana.ymlKibana peut être démarré en exécutant /opt/kibana4/bin/kibana, pour exécuter kibana en tant que serveur, nous allons créer un fichier systemd.
# vi /etc/systemd/system/kibana4.service[Unit]Description=Kibana 4 Web InterfaceAfter=elasticsearch.serviceAfter=logstash.service[Service]ExecStartPre=/bin/rm -rf /var/run/kibana. pidExecStart=/opt/kibana4/bin/kibanaExecReload=/bin/kill -9 $(cat /var/run/kibana.pid) &&/bin/rm -rf /var/run/kibana.pid &&/opt/kibana4/ bin/kibanaExecStop=/bin/kill -9 $(cat /var/run/kibana.pid)[Install]WantedBy=multi-user.targetDémarrez et activez kibana pour qu'il démarre automatiquement au démarrage du système.
# systemctl start kibana4.service# systemctl enable kibana4.serviceAccédez à votre portail kibana en visitant le lien suivant
http://votre-adresse-ip:5601/Vous obtiendrez une page suivante où vous devrez mapper l'index logstash pour utiliser kibana. Faites défiler vers le bas le nom du champ d'heure et sélectionnez
@horodatageUne fois que vous avez sélectionné, il vous redirigera vers la page principale de kibana.
Kibana n'est fourni avec aucun type d'accès protégé par mot de passe au portail. Avec Nginx, nous pouvons configurer de manière à ce que l'utilisateur remplisse le mécanisme d'authentification avant d'entrer sur le portail.
C'est tout, vous avez configuré avec succès la pile ELK pour la gestion centralisée des journaux.