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/logstashapt-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
OUecho 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 kibanaapt 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 kibanaservice kibana {start|stop|restart}