Comment rediriger une application vers une session d'un index spécifique sur Kibana

Bonjour,

Je suis en train de développer une application javascript qui viendra compléter mon utilisation de Kibana.

Dans mon application, j'affiche un tableau qui présente toutes les sessions qui ont été demandées par l'utilisateur.
Je voudrais ajouter un bouton dans le tableau pour chaque session qui redirigerait ensuite vers la session Kibana correspondante.

J'ai d'abord essayé de construire l'url vers laquelle rediriger mon application à la main en "copiant" la syntaxe de l'url de mon kibana. Je la crée donc comme ceci :

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 = "http://HOST_NAME:5601/app/kibana#/discover?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-"
        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:" + "ab4ed2e0-fe..." + ",interval:auto,query:(language:kuery,query:'some_field:%22some_value%22%20and%20_id:%22" + encodeURIComponent(idSession) + "%22'),sort:!(!('@timestamp',desc))"

        return kibanaUrl;
    }

J'obtiens l'url suivante qui devrait fonctionner :

http://SOME_SERVER_NAME:5601/app/kibana#/discover?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-12d,to:now))&_a=(columns:!(_source),index:661de5d...e26699,interval:auto,query:(language:kuery,query:'some_field:%22some_value%22%20and%20_id:%22an_id_encoded%22'),sort:!(!('@timestamp',desc))

Mais lorsque mon application est redirigée vers cette URL, Kibana transforme automatiquement l'url et me renvoie vers un index de base avec les valeurs par défaut affichées et non pas celles que j'ai spécifiée dans l'url que j'ai générée.

La nouvelle URL créée par Kibana ressemble à ceci :

http://SOME_SERVER_NAME:5601/app/kibana#/discover?_g=(refreshInterval:(pause:!t,value:0),time:(from:now-12d,to:now))&_a=(columns:!(_source),index:'BASIC_INDEX',interval:auto,query:(language:kuery,query:''),sort:!(!('@timestamp',desc)))

Ce que j'ai appelé BASIC_INDEX dans l'url ci-dessus correspond à un index qui existe dans mon organisation mais ne correspond pas à l'index que j'ai demandé avant la redirection. Et comme vous pouvez le voir, la section requête de l'url est totalement vide.

Qu'est-ce qui explique ce comportement de Kibana et y a-t-il un moyen de l'éviter s'il vous plaît.

En poursuivant mes recherches, j'ai trouvé cette page Github qui semble montrer un moyen de rediriger son application vers l'application Discover de Kibana.

J'ai donc essayé ce qui suit pour rediriger mon application vers l'index que je veux, sans spécifier d'id (je veux juste voir si je peux atteindre l'index que j'ai demandé) :

function createKibanaUrl(): string {
        let testKibana = "http://HOST_NAME:5601/app/r?l=DISCOVER_APP_LOCATOR&v=7.6.0&p={%22indexPatternId%22:%22661de5...e26699%22}";
        return testKibana;
    }

Mais avec cette méthode, la page vers laquelle je suis redirigé m'indique que l'application demandée n'a pas été trouvée :

Quelqu'un sait-il comment faire une redirection comme celle-ci vers un index spécifique dans Kibana ?

En regardant la console web dans Kibana juste après la redirection, j'ai les deux messages suivants qui apparaissent :

Refused to execute inline script because it violates the following Content Security Policy directive: "script-src 'unsafe-eval' 'self'". Either the 'unsafe-inline' keyword, a hash ('sha256-P5polb1UreUSOe5V/Pv7tc+yeZuJXiOi/3fqhGsU7BE='), or a nonce ('nonce-...') is required to enable inline execution.

Ce message est marqué comme apparaissant dans le fichier : kibana#/discover?_g=…mestamp',desc)):351

A single error about an inline script not firing due to content security policy is expected!

Ce message est marqué comme apparaissant dans le fichier : bootstrap.js:9

J'ai trouvé ce post qui semble indiqué qu'il faut faire un changement dans la configuration pour faire marcher la redirection, mais comme ce post est assez ancien je me demandai s'il n'y avait pas une autre solution pour résoudre mon problème.

Merci d'avance si vous prenez le temps de m'aider.

Désolé pour le dérangement, je viens de réaliser que j'avais oublié une parenthèse à la fin de mon url générée dynamiquement :man_facepalming:

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.