GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Installation de Filebeat, Logstash, ElasticSearch et Kibana dans Ubuntu 14.04

PRÉPARATIONS

#Ref :https://www.elastic.co/guide/en/logstash/current/installing-logstash.html
Installez d'abord Java 8 dans Ubuntu 14.04

# Ref :https://www.liquidweb.com/kb/how-to-install-oracle-java-8-on-ubuntu-14-04-lts/
apt-get install python-software-properties software-properties-common
apt-add-repository ppa:webupd8team/java
apt-get update
apt-get install oracle-java8-installer
java -version

Résultat :
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)

Faciliter la mise à jour de tous les packages via les référentiels APT

apt-get install apt-transport-https
Enregistrez la définition du référentiel dans /etc/apt/sources.list.d/elastic-5.x.list :
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
apt-get update

FILEBEAT

Installation de filebeat

Filebeat lit les lignes des journaux définis, les formate correctement et les transmet à logstash tout en maintenant un flux de pipeline non obstrué
Réf :https://github.com/elastic/beats/tree/master/filebeat
Réf :https://www.elastic.co/guide/en/beats/filebeat/5.5/filebeat-getting-started.html
Réf :https://www.elastic.co/products/beats/filebeat

apt-get install filebeat
mv /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.orig
touch /etc/filebeat/filebeat.yml
mcedit /etc/filebeat/filebeat.yml

(contenu)
————————

filebeat.prospectors:
- input_type: log
paths:
- /var/log/apache2/access.log
output.logstash:
hosts: ["localhost:5044"]

————————
service filebeat restart

LOGSTASH

Téléchargez le package d'installation logstash debian et configurez-le

# Réf :https://www.elastic.co/downloads/logstash
apt-get install logstash

# Résultat :
.......
Using provided startup.options file: /etc/logstash/startup.options
Successfully created system startup script for Logstash

Préparation de Logstash

mcedit /etc/logstash/startup.options
(ajouter la ligne suivante au début)
LS_CONFIGS_DIR=/etc/logstash/conf.d/

(Ensuite, ajustez la ligne suivante comme suit)
à partir de :
LS_OPTS="--path.settings ${LS_SETTINGS_DIR}"
à :
LS_OPTS="--path.settings ${LS_SETTINGS_DIR} --path.config ${LS_CONFIGS_DIR}"

Démarrer/Arrêter/Redémarrer logstash
service logstash {start|stop|restart}

Tester le logstash

cd /etc/logstash/ ; /usr/share/logstash/bin/logstash -e 'input { stdin { } } output { stdout {} }'

Tapez :hello world
et appuyez sur CTRL-D

(Logstash ajoute des informations d'horodatage et d'adresse IP au message. Quittez Logstash en exécutant une commande CTRL-D dans le shell où Logstash est en cours d'exécution.)

Résultats :

ERREUR StatusLogger Aucun fichier de configuration log4j2 n'a été trouvé. Utilisation de la configuration par défaut :consigner uniquement les erreurs dans la console.
AVERTISSEMENT :impossible de trouver logstash.yml qui se trouve généralement dans $LS_HOME/config ou /etc/logstash. Vous pouvez spécifier le chemin à l'aide de –path.settings. Continuer à utiliser les valeurs par défaut
Impossible de trouver la configuration log4j2 au chemin //usr/share/logstash/config/log4j2.properties. Utilisation de la configuration par défaut qui se connecte à la console
11:22:59.822 [[main]-pipeline-manager] INFO logstash.pipeline - Démarrage du pipeline {"id"=>"main", "pipeline.workers"=>2 , "pipeline.batch.size"=>125, "pipeline.batch.delay"=>5, "pipeline.max_inflight"=>250}
11:22:59.847 [[main]-pipeline-manager] INFO logstash.pipeline - Pipeline principal démarré
Le plugin stdin attend maintenant une entrée :
2017-08-23T09:22:59.878Z h270746.stratoserver.net test 1
11:22 :59.946 [Api Webserver] INFO logstash.agent - Démarrage réussi du point de terminaison de l'API Logstash {:port=>9601}
11:23:02.861 [LogStash::Runner] WARN logstash.agent - arrêt du pipeline {:id=>" principal”}

Les erreurs et les avertissements sont corrects pour l'instant. La principale ligne de résultat ci-dessus qui est significative est :
2017-08-23T09:22:59.878Z h270746.stratoserver.net test 1
qui ajoute un horodatage et un nom de serveur à la chaîne d'entrée (test 1)

Configuration de logstash
# Remarque :cette configuration de test obtiendra une entrée de filebeat et une sortie dans un fichier journal qui peut être surveillé avec tail -f …..
mcedit /etc/logstash/conf.d/apache2.conf
(contenu)
input {
beats {
port => 5044
type => "apache"
}
}
filter {
if [type] == "apache" {
grok {
match => { "message" => "%{COMBINEDAPACHELOG}"}
}
geoip {
source => "clientip"
}
}
}
output {
file {
path => "/var/log/logstash_output.log"
}
}

Pour que la sortie appropriée soit envoyée à elasticsearch, utilisez plutôt cette configuration de sortie :
———————————-
output {
elasticsearch {
hosts => "localhost:9200"
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}

Sécuriser Filebeat => Logstash avec SSL

Réf :https://www.elastic.co/guide/en/beats/filebeat/current/configuring-ssl-logstash.html#configuring-ssl-logstash
Remarque :la saisie manuelle ci-dessous est indiquée en gras.

Préparez les répertoires des certificats :

mkdir -p /etc/logstash/certs/Logstash/ /etc/logstash/certs/Beats/
Créer des certificats client pour FileBeat :
/usr/share/elasticsearch/bin/x-pack/certgen

........
Let's get started...

Please enter the desired output file [/etc/elasticsearch/x-pack/certificate-bundle.zip]: /etc/logstash/certs/Beats/certificate-bundle_Beats.zip
Enter instance name: Beats
Enter name for directories and files : Beats
Enter IP Addresses for instance (comma-separated if more than one) []:
Enter DNS names for instance (comma-separated if more than one) []: localhost
Certificates written to /etc/logstash/certs/Beats/certificate-bundle_Beats.zip

Créer des certificats client pour Logstash :
/usr/share/elasticsearch/bin/x-pack/certgen

........
Let's get started...

Please enter the desired output file [/etc/elasticsearch/x-pack/certificate-bundle.zip]: /etc/logstash/certs/Logstash/certificate-bundle_Logstash.zip
Enter instance name: Logstash
Enter name for directories and files : Logstash
Enter IP Addresses for instance (comma-separated if more than one) []:
Enter DNS names for instance (comma-separated if more than one) []: localhost
Certificates written to /etc/logstash/certs/Logstash/certificate-bundle_Logstash.zip

Ce fichier doit être correctement sécurisé car il contient les clés privées de toutes
instances et de l'autorité de certification.

Après avoir décompressé le fichier, il y aura un répertoire pour chaque instance contenant
le certificat et la clé privée. Copiez le certificat, la clé et le certificat CA
dans le répertoire de configuration du produit Elastic pour lequel ils seront utilisés
et suivez les instructions de configuration SSL dans le guide du produit.

Pour les applications clientes, il se peut que vous n'ayez qu'à copier le certificat CA et
configurer le client pour qu'il fasse confiance à ce certificat.

Extraire les certificats :
unzip /etc/logstash/certs/Beats/certificate-bundle_Beats.zip -d /etc/logstash/certs/Beats/
unzip /etc/logstash/certs/Logstash/certificate-bundle_Logstash.zip -d /etc/logstash/certs/Logstash/

Convertissez la clé Logstash Logstash.key du format PKCS#1 au format PKCS#8 :
Raison :le message d'erreur suivant dans le logstash.log s'est produit lors de l'utilisation du format PKCS1 :
[ERROR][logstash.inputs.beats ] Il semble que vous ayez une clé non valide ou que votre clé privée n'était pas au format PKCS8. {:exception=>java.lang.IllegalArgumentException :le fichier ne contient pas de clé privée valide :/etc/logstash/certs/Logstash/Logstash/Logstash.key}

Voir :https://github.com/spujadas/elk-docker/issues/112

Commande :
openssl pkcs8 -in /etc/logstash/certs/Logstash/Logstash/Logstash.key -topk8 -nocrypt -out /etc/logstash/certs/Logstash/Logstash/Logstash.key.PKCS8

Configurer Beats pour SSL

Contenu de /etc/filebeat/filebeat.yml
filebeat.prospectors:
- input_type: log
paths:
- /var/log/apache2/access.log
output.logstash:
hosts: ["localhost:5044"]
ssl.certificate_authorities: ["/etc/logstash/certs/Logstash/ca/ca.crt"]
ssl.certificate: "/etc/logstash/certs/Beats/Beats/Beats.crt"
ssl.key: "/etc/logstash/certs/Beats/Beats/Beats.key"

Contenu de /etc/logstash/conf.d/apache.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate_authorities => ["/etc/logstash/certs/Logstash/ca/ca.crt"]
ssl_certificate => "/etc/logstash/certs/Logstash/Logstash/Logstash.crt"
ssl_key => "/etc/logstash/certs/Logstash/Logstash/Logstash.key.PKCS8"
ssl_verify_mode => "force_peer"
}
}

Redémarrer à la fois Logstash et Filebeat
service logstash restart
service filebeat restart

REMARQUE : J'ai toujours des problèmes avec la connexion SSL de Filebeat à Logstash où Filebeat génère cette erreur dans (/var/log/logstash/logstash-plain.log) :
Erreur interne TLS.
L'URL suivante semble avoir trouvé des problèmes similaires, mais par manque de temps, je ne l'ai pas encore compris.
https://discuss.elastic.co/t/mutual-tls-filebeat-to-logstash-fails- with-remote-error-tls-internal-error/85271/3

X-Pack pour Logstash

INSTALLER X-Pack pour logstash

X-Pack est une extension Elastic Stack qui regroupe des fonctionnalités de sécurité, d'alerte, de surveillance, de création de rapports, d'apprentissage automatique et de graphique dans un package facile à installer.
X-Pack fournit également une interface utilisateur de surveillance pour Logstash.

/usr/share/logstash/bin/logstash-plugin install x-pack

Résultat :

Fichier de téléchargement :https://artifacts.elastic.co/downloads/logstash-plugins/x-pack/x-pack-5.5.2.zip
Téléchargement [=============================================================] 100 %
Installation du fichier :/tmp/studtmp-bc1c884de6d90f1aaa462364e5895b6b08b050f0b64587b4f5e0a8ec5300/x-pack-5.5.2.zip
Installation réussie

Configuration de X-Pack dans Logstash :

Les paramètres par défaut créés lors de l'installation fonctionnent mieux dans la plupart des cas. Pour plus d'informations, consultez :
https://www.elastic.co/guide/en/logstash/5.5/settings-xpack.html

Pour empêcher la génération de messages d'erreur de surveillance dans logstash.log, modifiez /etc/logstash/logstash.yml et ajoutez la ligne suivante à la fin :
(Réf :https://discuss.elastic.co/t/logstash- pauses-lors-de-la-désactivation-de-certaines-fonctionnalités-x-pack/89511)

xpack.monitoring.enabled: false

ElasticSearch

Installation :
apt-get install elasticsearch

Démarrer/Arrêter/Redémarrer la recherche élastique :
/etc/init.d/elasticsearch {start|stop|restart}

Pour vérifier si elasticsearch a été lancé :
ps aux | grep $(cat /var/run/elasticsearch/elasticsearch.pid)

Exemple de résultat(tronqué) :
elastic+ 10978 3.2 55.2 4622152 2319168 pts/3 Sl 15:44 0:10 /usr/lib/jvm/java-8-oracle/bin/java ........

Vérifiez le fichier journal Elasticsearch :
tail -f /var/log/elasticsearch/elasticsearch.log

REMARQUE 1 :
Si vous voyez la ligne :
[WARN ][o.e.b.BootstrapChecks ] [wJdCtOd] max virtual memory areas vm.max_map_count [65530] est trop faible, augmentez jusqu'à au moins [262144]
et le résultat de la commande suivante est vide,

grep vm.max_map_count /etc/sysctl.conf

Solution :
Augmentez le nombre maximal de zones de mémoire virtuelle vm.max_map_count à 262144 comme suit :
Ajoutez la ligne suivante dans le fichier /etc/sysctl.conf

vm.max_map_count=262144

Et exécutez la commande :
sysctl -w vm.max_map_count=262144
OU
echo 262144 > /proc/sys/vm/max_map_count

Assurez-vous également que le fichier de configuration elasticsearch (/etc/elasticsearch/jvm.options ) contient les entrées suivantes :
-Xms2g
-Xmx2g

IMPORTANT :
si les commandes suivantes échouent, cela peut être dû au fait que certains serveurs virtuels n'autorisent pas de telles modifications dans le noyau :
par exemple.
sysctl -w vm.max_map_count=262144
sysctl :autorisation refusée sur la clé 'vm.max_map_count'
echo 262144 > /proc/sys/vm/max_map_count
-bash :/proc/sys/vm/max_map_count :autorisation refusée

La recherche élastique devrait pouvoir s'exécuter de toute façon, mais ses performances pourraient être limitées et présenter d'autres problèmes en raison de ces limitations.
Il n'existe aucun remède connu à ce problème pour les serveurs Strato VM.

REMARQUE 2 :
Si vous voyez la ligne :
[WARN ][i.n.u.i.MacAddressUtil ] Impossible de trouver une adresse matérielle utilisable à partir des interfaces réseau ; en utilisant des octets aléatoires :……..

Solution :
Pas besoin de s'inquiéter, la précision de l'adresse MAC n'est pas si importante dans cette installation.

REMARQUE 3 :
Si vous voyez la ligne :
[WARN ][o.e.b.BootstrapChecks ] [wJdCtOd] les filtres d'appel système n'ont pas pu être installés ; vérifiez les journaux et corrigez votre configuration ou désactivez les filtres d'appels système à vos risques et périls
Si ce problème se produit, elasticsearch démarrera mais ne sera pas initialisé correctement et ne fonctionnera probablement pas correctement.

Solution :
Si elasticsearch est accessible uniquement dans un environnement protégé, la désactivation de cette installation de filtres d'appels système ne devrait poser aucun problème
en éditant le fichier /etc/elasticsearch/elasticsearch.yml et en ajoutant la ligne suivante :
bootstrap.system_call_filter: false
Redémarrez elasticsearch :
service elasticsearch restart

—————————————————————————

X-Pack pour elasticsearch

X-Pack est une extension Elastic Stack qui regroupe des fonctionnalités de sécurité, d'alerte, de surveillance, de création de rapports, d'apprentissage automatique et de graphes dans un package facile à installer.

Installation :
/usr/share/elasticsearch/bin/elasticsearch-plugin install x-pack

Résultats :
-> Downloading x-pack from elastic
[=================================================] 100%
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin requires additional permissions @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
* java.io.FilePermission \\.\pipe\* read,write
* java.lang.RuntimePermission accessClassInPackage.com.sun.activation.registries
* java.lang.RuntimePermission getClassLoader
* java.lang.RuntimePermission setContextClassLoader
* java.lang.RuntimePermission setFactory
* java.security.SecurityPermission createPolicy.JavaPolicy
* java.security.SecurityPermission getPolicy
* java.security.SecurityPermission putProviderProperty.BC
* java.security.SecurityPermission setPolicy
* java.util.PropertyPermission * read,write
* java.util.PropertyPermission sun.nio.ch.bugLevel write
* javax.net.ssl.SSLPermission setHostnameVerifier
See http://docs.oracle.com/javase/8/docs/technotes/guides/security/permissions.html
for descriptions of what these permissions allow and the associated risks.

Continue with installation? [y/N]y
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: plugin forks a native controller @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
This plugin launches a native controller that is not subject to the Java
security manager nor to system call filters.

Continue with installation? [y/N]y
-> Installed x-pack

KIBANA

Installer le package kibana
apt install kibana
Installez X-Pack pour logstash
X-Pack est une extension Elastic Stack qui regroupe des fonctionnalités de sécurité, d'alerte, de surveillance, de création de rapports, d'apprentissage automatique et de graphes dans un package facile à installer.
/usr/share/kibana/bin/kibana-plugin install x-pack
Modifier le mot de passe des utilisateurs intégrés
Réf :https://www.elastic.co/guide/en/x-pack/5.5/setting-up-authentication.html#reset-built-in- user-passwords
modifier les mots de passe

curl -XPUT 'localhost:9200/_xpack/security/user/elastic/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "elasticpassword"
}
'

curl -XPUT 'localhost:9200/_xpack/security/user/kibana/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "kibanapassword"
}
'

curl -XPUT 'localhost:9200/_xpack/security/user/logstash_system/_password?pretty' -H 'Content-Type: application/json' -d'
{
"password": "logstashpassword"
}
'

Mettez à jour le serveur Kibana avec le nouveau mot de passe /etc/kibana/kibana.yml
elasticsearch.password: kibanapassword
Mettez à jour la configuration de Logstash avec le nouveau mot de passe /etc/logstash/logstash.yml
xpack.monitoring.elasticsearch.password: logstashpassword
Désactiver la fonctionnalité de mot de passe par défaut /etc/elasticsearch/elasticsearch.yml
xpack.security.authc.accept_default_password: false

Démarrer/Arrêter/Redémarrer kibana
service kibana {start|stop|restart}


Ubuntu
  1. Comment installer Elasticsearch, Logstash et Kibana 4 sur Ubuntu 14.04 / 15.04

  2. Installation et configuration de Php et Nginx sur Ubuntu 20.04

  3. Comment installer et configurer Elasticsearch sur Ubuntu 20.04

  4. Construire et installer Ibus-typing-booster sur Ubuntu ?

  5. Installez Elasticsearch, Logstash et Kibana sur Ubuntu 20.04

Configurer ELK Stack sur Ubuntu 16.04 - Installer ElasticSearch, Logstash et Kibana sur Ubuntu 16.04

Comment installer Elasticsearch, Logstash et Kibana (ELK Stack) sur Ubuntu 18.04 / Ubuntu 16.04

Installation d'Ubuntu 18.04 LTS [bureau et serveur]

Comment installer ELK Stack (Elasticsearch, Logstash et Kibana) sur Ubuntu 20.04

23 meilleures choses à faire après l'installation d'Ubuntu 18.04 et 18.10

Comment installer Elasticsearch Logstash Kibana (Elastic Stack) sur Ubuntu 18.04