Ce chapitre contient des procédures et des aides pour des manipuler la pile Elastic.
Pour plus de détails sur la pile Elastic elle-même, cette dernière est décrite au chapitre §2.7.2.
Pour télécharger et installer les binaires associés à la pile Elastic, il suffit d’exécuter la commande . ./elastic.sh INSTALLATION.
Ceci va :
Pour démarrer tous les processus, il suffit d’exécuter la commande . ./elastic.sh DEMARRER_TOUT.
Ceci va :
Pour tout arrêter, la commande . ./elastic.sh ARRETER_TOUT est disponible.
En cas de problème, de modification profonde ou de modification de l’import des données depuis Filebeat, il est possible de supprimer toutes les données avec la commande . ./elastic.sh PURGE.
Concernant ElasticSearch et Filebeat, toutes les configurations sont dans des fichiers présents dans le répertoire socle\services-cloud\service-elastic. Ces fichiers sont utilisés dans les scripts de démarrage de ces applicatifs. Concernant Kibana, outre les fichiers de configuration disponible au même endroit que ceux de ElasticSearch et Filebeat, existe un fichier configuration.ndjson. Ce fichier est un export des saved objects de Kibana.
A chaque création d’un objet (configuration globale, requête sauvegardée, visualisation, tableau de bord, …), il est nécessaire de faire un export de tous les objets personnalisés depuis la création de l’instance. Ceci comprend les objets précédemment importés.
Le fichier exporté doit sauvegardé en tant que nouveau configuration.ndjson. Avant de commiter ce fichier, il est impératif de s’assurer que rien n’a été perdu durant l’export ou modifié dans l’instance avant l’export.
Dans les versions récentes de Kibana, il est possible de définir, depuis kibana, des champs dont la valeur est calculée à partir de celle des autres champs. Ceci se nomme runtime field (documentation).
Pour créer (ou modifier) un tel champ, il faut accéder à la page stackmanagement > data views > logs-* > Fields. Depuis cette page, les champs calculés sont marqués d’une icone supplémentaire à côté de leur nom et sont nommés psl.runtime.xxx.
Voici un exemple de script :
name=psl.runtime.nomApplication
type=keyword
setValue=
//
// Crée un champ "nomFichierLog" à partir du chemin du fichier de log
//
// toujours vérifié la présence du champs
def nomAttributFichierLog = 'log.file.path';
if (doc.containsKey(nomAttributFichierLog)) {
// lecture des valeurs
def fichierLog = doc[nomAttributFichierLog].value;
// extraction via une regex
def m = /^.*[\\\/]log_([^\\\/]*)\-[0-9]*\.log/.matcher(fichierLog);
if (m.matches()){
// Publication de la valeur
emit(m.group(1));
}
}
ou
name=psl.runtime.codeException
type=keyword
setValue=
// toujours vérifié la présence du champs
def nomAttributSeverite = 'psl.severite';
def nomAttributMessage = 'psl.message';
// Si c'est bien une erreur (sinon, on passe pour les performances)
if (doc.containsKey(nomAttributSeverite) && ""+doc[nomAttributSeverite] == "[ERROR]" && doc.containsKey(nomAttributMessage)){
// lecture du message
def message = doc[nomAttributMessage];
if (message.contains('java.lang.RuntimeException: boum')) {
emit("NOTIFICATION_01_boum");
}
}
D’autres exemples sont disponible (ici)[https://elastic-content-share.eu/elastic-runtime-field-example-repository/].
La montée de version passe par les étapes suivantes (les commandes s’exécutent depuis le répertoire 2-code/socle) :
echo "purger les logs"
. ./outils.sh PURGE LOG
echo "désinstaller complètement la pile Elastic"
. ./elastic.sh DESINSTALLATION
gpg -dq variablesPourScripts.properties.gpggpg -c variablesPourScripts.propertiesecho "installer"
. ./elastic.sh INSTALLATION
echo "démarrer la pile"
. ./elastic.sh DEMARRER_TOUT
mvn clean install -T 1C -DskipTests
. ./demarrerTout.sh
now-1w/d signifiant maintenant moins une semaine arrondi à la journée.