Pour pouvoir récupérer les données d’une base de données mysql 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 /usr/share/logstash/vendor/jdbc-mysql -p
Ensuite, il faut télécharger le connecteur via le site ci-dessous et copier le fichier mysql-connector-java-5.1.44-bin.jar (le nom du fichier peut changer selon la version téléchargée) dans le dossier créé ci-dessus.
https://dev.mysql.com/downloads/connector/j/
Une fois le fichier dans son répertoire, il faut ensuite modifier les droits
chown logstash:logstash /usr/share/logstash/vendor/jdbc-mysql -Rvf
A partir de ce moment vous pouvez créer un fichier de configuration pour connecter une table mysql à logstash.
Création d’un fichier de configuration
nano /etc/logstash/conf.d/config_mysql_nomdematable.config
Et y mettre le contenu ci-dessous
input {
jdbc {
jdbc_driver_library => "/usr/share/logstash/vendor/jdbc-mysql/mysql-connector-java-5.1.44-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
jdbc_connection_string => "jdbc:mysql://ipserveur:3306/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_mysql_nomdelatable.config
Une fois les commandes lancées, selon la taille de la table, il faudra peut être attendre un peu.