Installation de xpack pour Logstash

Le xpack d’elastic permet d’apporter des fonctionnalités supplémentaires (Authentification, machine learning…) mais il est soumis à licence. Voici comment installer le xpack pour logstash.

cd /usr/share/logstash/bin
./logstash-plugin install x-pack
Voici le résultat de la commande
Downloading file: https://artifacts.elastic.co/downloads/logstash-plugins/x-pack/x-pack-5.5.1.zip
Downloading [=============================================================] 100%
Installing file: /tmp/studtmp-6bdfe41ce102862e861cf6ed48b02d47109b283ca12e7c1aff486da411a2/x-pack-5.5.1.zip
Install successful
Il faut ensuite redémarrer le service
 service logstash restart

Installation de xpack pour Kibana

Le xpack d’elastic permet d’apporter des fonctionnalités supplémentaires (Authentification, machine learning…) mais il est soumis à licence. Voici comment installer le xpack pour kibana. L’installation peut prendre un peu de temps.

cd /usr/share/kibana/bin 
./kibana-plugin install x-pack

Voici le résultat de la commande

Attempting to transfer from x-pack
Attempting to transfer from https://artifacts.elastic.co/downloads/kibana-plugins/x-pack/x-pack-5.5.1.zip
Transferring 119276972 bytes....................
Transfer complete
Retrieving metadata from plugin archive
Extracting plugin archive
Extraction complete
Optimizing and caching browser bundles...
Plugin installation complete
Il faut ensuite redémarrer le service
 service kibana restart
Il faut enfin installer des paquets nécessaire pour le module reporting
apt-get install fontconfig freetype2-demos

Installation du plugin logstash-input-jdbc

L’installation du plugin logstash-input-jdbc permet d’indexer des tables de base de données avec l’aide de logstash. Il faut préalablement avoir installer la stack elastic, le tuto se trouve sur mon blog.

Le serveur utilisé est un Ubuntu 16.04 64bits LTS.

Il faut se rendre dans ce répertoire

cd /usr/share/logstash/bin/
Et taper la commande ci-dessous
./logstash-plugin install logstash-input-jdbc
Une fois le plugin installé vous pourrez ensuite suivre les procédures pour la configuration de la connexion avec les différentes base de données
Mysql
Mssql Server
Oracle

Installation de xpack pour elasticsearch

Le xpack d’elastic permet d’apporter des fonctionnalités supplémentaires (Authentification, machine learning…) mais il est soumis à licence. Voici comment installer le xpack pour elasticsearch.

cd /usr/share/elasticsearch/bin
./elasticsearch-plugin install x-pack
Voici le résultat de la commande
-> Downloading x-pack from elastic

[=================================================] 100%
Le plugin demande des permissions supplémentaires pour que le Watcher puisse envoyer des mails, il faudra accepter (Y).
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@     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
Le plugin veut l’autorisation de lancer le moteur d’analyse avec du Machine Learning, , il faudra accepter (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
Il faut ensuite redémarrer le service
service elasticsearch restart

Installation de la stack elastic

La stack elastic permet d’indexer des informations à partir de différentes sources comme fichiers log, base de données mysql, mssql, oracle… Et de les présenter sous forme de graphique.

L’installation a été réalisé sur un serveur Ubuntu 16.04 64bits LTS. Les commandes ci-après ont été exécuté avec l’utilisateur root.

Récupération des mises à jour et outils utiles

su root
apt udpate && apt -y upgrade
apt install apt-transport-https software-properties-common wget

Installation de java 8

add-apt-repository ppa:webupd8team/java
apt update
apt install oracle-java8-installer

Vérification de la version de java

java -version
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)

Installation d’elastic search

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
apt update
apt install elasticsearch

Configuration d’elastic search

Modifiez le fichier de configuration

nano /etc/elasticsearch/elasticsearch.yml

et ajoutez la ligne ci-dessous

network.host: localhost

Redémarrez le service

systemctl restart elasticsearch

Démarrage du service au boot de la machine

systemctl enable elasticsearch

Installation de kibana

apt install kibana

Configuration de kibana

Modifiez le fichier de configuration

nano /etc/kibana/kibana.yml

et ajoutez la ligne ci-dessous

server.host: "localhost"

Redémarrez le service

systemctl restart kibana

Démarrage du service au boot de la machine

systemctl enable kibana

Installation et configuration du reverse proxy

apt-get install apache2

Configuration du virtual host pour l’accès à kibana

Créez le fichier

nano /etc/apache2/sites-available/kibana.mondomaine.fr.conf

Ajoutez les lignes ci-dessous en modifiant les informations selon votre nom de domaine

<VirtualHost *:80>
    ServerName kibana.mondomaine.fr
    ProxyPass / http://localhost:5601/
    ProxyPassReverse / http://localhost:5601/
    ErrorLog /var/log/apache2/kibana.mondomaine.fr_error.log
    CustomLog /var/log/apache2/kibana.mondomaine.fr_access.log combined
</VirtualHost>

Exécutez les commandes suivantes

a2dissite 000-default.conf
a2ensite kibana.mondomaine.fr.conf
a2enmod ssl
a2enmod proxy
a2enmod proxy_http
service apache2 restart

Installation de logstash 

apt install logstash

Configuration de logstash

systemctl enable logstash
systemctl start logstash

A ce stage votre plateforme est opérationnelle, vous pouvez ajouter des plugins pour logstash qui vont vous permettre de récupérer des informations dans des bases de données. (à voir dans les autres tutos)

Vous pouvez aussi ajouter une authentification basic à l’aide d’apache pour limiter l’accés à kibana.

Configuration de logstash et mssql server

Pour pouvoir récupérer les données d’une base de données mssql server via logstash, il faut avoir installer le plugin logstash-input-jdbc (voir le tuto). Puis récupérer le connecteur java et le copier.

Installation du connecteur

L’opération n’est à faire qu’une seule fois.

Tout d’abord, il faut créer le dossier qui accueillera le connecteur

 mkdir -p /usr/share/logstash/vendor/jdbc-mssql

Ensuite, il faut télécharger le connecteur via le site ci-dessous et copier le fichier  mssql-jdbc-6.2.1.jre8.jar (le nom du fichier peut changer selon la version téléchargée) dans le dossier créé ci-dessus.

https://docs.microsoft.com/en-us/sql/connect/jdbc/download-microsoft-jdbc-driver-for-sql-server

Une fois le fichier dans son répertoire, il faut ensuite modifier les droits

 chown logstash:logstash /usr/share/logstash/vendor/jdbc-mssql -Rvf

A partir de ce moment vous pouvez créer un fichier de configuration pour connecter une table mssql server à logstash.

Création d’un fichier de configuration

 nano /etc/logstash/conf.d/config_mssql_nomdematable.config

Et y mettre le contenu ci-dessous

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/vendor/jdbc-mssql/mssql-jdbc-6.2.1.jre8.jar"
    jdbc_driver_class => "com.microsoft.sqlserver.jdbc.SQLServerDriver"
    jdbc_connection_string => "jdbc:sqlserver://ipduserver:1433;databasename=nomdelabase"
    jdbc_user => "utilisateurquipeutseconnecter"
    jdbc_password => "motdepasse"     
    statement => "SELECT * FROM nomdelatable"
  }
}
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "nomdelatable"
    document_type => "nomdelatable"
    document_id => "%{id}"
  }
}
Il faut penser à modifier les informations de connexion à la base de données.
Le champ document_id => « %{id} » est à adapter en fonction de votre table dans mon cas la clef primaire est id.
Une fois le fichier créé, il faut ensuite exécuter la commande ci-dessous pour lancer l’indexation.
cd /usr/share/logstash/bin
./logstash -f /etc/logstash/conf.d/config_mssql_nomdelatable.config
Une fois les commandes lancées, selon la taille de la table, il faudra peut être attendre un peu.

Configuration de logstash et oracle

Pour pouvoir récupérer les données d’une base de données oracle via logstash, il faut avoir installer le plugin logstash-input-jdbc (voir le tuto). Puis récupérer le connecteur java et le copier.

Installation du connecteur

L’opération n’est à faire qu’une seule fois.

Tout d’abord, il faut créer le dossier qui accueillera le connecteur

 mkdir -p /usr/share/logstash/vendor/jdbc-oracle

Ensuite, il faut télécharger le connecteur via le site ci-dessous et copier le fichier  ojdbc8.jar (le nom du fichier peut changer selon la version téléchargée, il faut utiliser le connecteur pour java8) dans le dossier créé ci-dessus.

http://www.oracle.com/technetwork/database/features/jdbc/jdbc-ucp-122-3110062.html

Une fois le fichier dans son répertoire, il faut ensuite modifier les droits

/usr/share/logstash/vendor/jdbc-oracle
chown logstash:logstash /usr/share/logstash/vendor/jdbc-oracle -Rvf

A partir de ce moment vous pouvez créer un fichier de configuration pour connecter une table oracle à logstash.

Création d’un fichier de configuration

nano /etc/logstash/conf.d/config_oracle_nomdematable.config

Et y mettre le contenu ci-dessous

input {
  jdbc {
    jdbc_driver_library => "/usr/share/logstash/vendor/jdbc-oracle/ojdbc8.jar"
    jdbc_driver_class => "Java::oracle.jdbc.driver.OracleDriver"
    jdbc_connection_string => "jdbc:oracle:thin:@ipduserveur:port/nomdelabase"
    jdbc_user => "utilisateurquipeutseconnecter"
    jdbc_password => "motdepasse"
    statement => "SELECT * FROM nomdelatable"
  }
}
output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "nomdelatable"
    document_type => "nomdelatable"
    document_id => "%{id}"
  }
}
Il faut penser à modifier les informations de connexion à la base de données.
Le champ document_id => « %{id} » est à adapter en fonction de votre table dans mon cas la clef primaire est id.
Une fois le fichier créé, il faut ensuite exécuter la commande ci-dessous pour lancer l’indexation.
cd /usr/share/logstash/bin
./logstash -f /etc/logstash/conf.d/config_oracle_nomdelatable.config
Une fois les commandes lancées, selon la taille de la table, il faudra peut être attendre un peu.