Bonjour,
Je cherche à générer des urls de connexion pour aller d'une application maison vers des requêtes spécifiques dans notre Kibana.
Pour ce faire, j'ai déjà posé la question suivante sur le forum ce matin : question précédente.
J'ai un peu évolué depuis mais je suis maintenant dans une situation que je ne comprends pas.
Si je passe mon url en l'écrivant directement dans une chaîne de caractère la redirection se fait vers le bon index et sur la bonne session dans le kibana.
Mais si je crée la même chaîne de caractère mais dynamiquement pour associer chaque id de mes logs dans mon app à la bonne session kibana, alors kibana me redirige vers l'index de base sans aucune donnée spécifiée dans la partie requête de l'url.
URL codée en dur dans le code :
const URL_ROOT_KIBANA_DISCOVER_TEST = "http://HOST_NAME:5601/app/kibana#/discover?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-15M,to:now))&_a=(columns:!(_source),index:ab4ed2e0-fe84-11eb-8151-69b4ba83c682,interval:auto,query:(language:kuery,query:'FIELD_AGGREGATE_NAME:FIELD_VALUE%20and%20_id:" +'"ID_TO_RESEARCH"' + "'),sort:!(!('@timestamp',desc)))";
function createKibanaUrl(): string {
//Cette méthode où j'hard-code l'URL me fait la bonne redirection
let testKibana = URL_ROOT_KIBANA_DISCOVER_TEST;
return testKibana;
}
L'URL est assignée au href d'une balise d'ancrage contenue dans un bouton et en appuyant sur le bouton, je suis renvoyé à la bonne session.
Code avec l'URL générée dynamiquement:
const TEMPORARY_INDEX = "ab4ed2e0-fe84-11eb-8151-69b4ba83c682";
const URL_ROOT_KIBANA_DISCOVER = "http://HOST_NAME:5601/app/kibana#/discover?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-";
const diffDays = (selectedDate: Date) => Math.ceil(Math.abs(new Date().getTime() - new Date(selectedDate).getTime()) / (1000 * 60 * 60 * 24));
const diffMonths = (selectedDate: Date) => new Date(selectedDate).getMonth() - new Date().getMonth() + 12 * (new Date(selectedDate).getFullYear() - new Date().getFullYear());
const diffYears = (selectedDate: Date) => new Date(selectedDate).getFullYear() - new Date().getFullYear();
function createKibanaUrl(timestamp: Date, idSession: string): string {
let kibanaUrl: string = URL_ROOT_KIBANA_DISCOVER;
const timeSlotInDays = diffDays(timestamp);
const timeSlotInMonths = diffMonths(timestamp);
const timeSlotInYears = diffYears(timestamp);
if (timeSlotInDays <= 30) {
kibanaUrl = kibanaUrl + timeSlotInDays.toString() + "d,to:now))";
} else if ( timeSlotInDays > 30 && timeSlotInDays < 365) {
kibanaUrl = kibanaUrl + timeSlotInMonths.toString() + "M,to:now))";
} else if (timeSlotInDays >= 365) {
kibanaUrl = kibanaUrl + timeSlotInYears.toString() + "y,to:now))";
}
kibanaUrl = kibanaUrl + "&_a=(columns:!(_source),index:" + TEMPORARY_INDEX + ",interval:auto,query:(language:kuery,query:'FIELD_AGGREGATE_NAME:" + "FIELD_VALUE" + "%20and%20_id:" + '"' + idSession + '"' + "'),sort:!(!('@timestamp',desc))"
return kibanaUrl;
}
Avec cette méthode je suis renvoyé sur la page de base de l'application Kibana Discover de mon entreprise, l'url que j'ai assigné est supprimé puis remplacé au début de la connexion kibana.
Qu'est-ce qui peut expliquer ce comportement s'il vous plaît.