15 novembre 2018 Technique

Comment migrer vers Kibana Spaces

Par Brandon Kobel

Migrer vers Spaces

Avec Kibana 6.5, vous pouvez désormais utiliser Spaces pour organiser vos tableaux de bord, visualisations et autres objets enregistrés, et les classer par catégorie. De plus, les fonctionnalités de sécurité vous permettent de contrôler les rôles autorisés à accéder aux différents espaces. Résultat, un plus grand nombre de collaborateurs peuvent exploiter la même instance de Kibana, chacun utilisant son propre sous-ensemble d’objets enregistrés.

Lorsque vous passez à une version de Kibana compatible avec Spaces, tous vos objets enregistrés existants apparaissent dans l’espace “Default” (Par défaut). Vous pouvez ensuite déplacer ces objets d’un espace à un autre grâce à l’une des méthodes présentées ci-dessous.

Déplacer des objets enregistrés d’un espace à un autre

Pour déplacer un objet enregistré d’un espace à un autre, vous pouvez utiliser l’interface utilisateur “Import/Export” (Importation/Exportation) de Kibana. Soulignons que lorsque vous déplacez un objet enregistré via l’IU d’importation et d’exportation, cela n’entraîne pas le déplacement automatique des objets enregistrés qui lui sont associés. Pour savoir comment déplacer un tableau de bord et toutes ses dépendances d’un espace à un autre, reportez-vous au paragraphe intitulé “Déplacer des tableaux de bord d’un espace à un autre”.

Par exemple, pour déplacer un modèle d’indexation d’un espace à un autre, accédez à Management > Saved Objects (Gestion > Objets enregistrés), puis sélectionnez l’objet enregistré à déplacer. Lorsque vous cliquez sur “Export” (Exporter), vous pouvez choisir l’emplacement où vous voulez enregistrer le fichier JSON exporté.

Export Saved ObjectI

Utilisez ensuite le sélecteur d’espaces pour choisir un autre espace :

Change Space

Une fois votre espace sélectionné, revenez à Management > Saved Objects (Gestion > Objets enregistrés). Les objets enregistrés dans chaque espace étant totalement distincts, le modèle d’indexation que vous venez d’exporter ne s’affiche pas. Pour l’importer, cliquez sur “Import” (Importer), puis recherchez l’emplacement dans lequel vous avez enregistré votre fichier JSON à l’étape précédente.

Import Saved Object

Le modèle d’indexation que vous venez d’importer s’affiche. Bien que nous ayons deux modèles d’indexation différents, ils sont tous deux associés aux mêmes index sous-jacents d’Elasticsearch. Les objets enregistrés dans chaque espace étant totalement distincts, les modifications que vous apportez à l’un des modèles d’indexation n’auront aucun impact sur le modèle d’indexation de l’autre espace. Si vous n’avez plus besoin de conserver le modèle d’indexation dans l’espace d’origine, vous pouvez maintenant le supprimer en toute sécurité : il restera disponible dans l’espace vers lequel vous l’avez copié.

Regrouper plusieurs entités dans Spaces

Si vous utilisez plusieurs entités de Kibana disposant de leurs propres index Elasticsearch afin d’isoler vos utilisateurs Kibana, l’IU “Import/Export” (Importation/Exportation) vous permet de les regrouper en une seule entité Spaces. Pour exporter tous vos objets enregistrés depuis une entité, accédez à Management > Saved Objects (Gestion > Objets enregistrés), cochez la case située dans l’en-tête pour sélectionner tous les objets, puis cliquez sur “Export” (Exporter).

Export all Saved Objects

Vous êtes alors invité à choisir l’emplacement où vous voulez enregistrer le fichier JSON.

Une fois que vous avez exporté les objets enregistrés, accédez à l’instance cible de Kibana, créez l’espace cible si ce n’est déjà fait, puis sélectionnez-le. Accédez à Management > Saved Objects (Gestion > Objets enregistrés), sélectionnez “Import” (Importer) et recherchez le fichier JSON que vous venez d’enregistrer. Cela permet d’importer vers un espace tous les objets enregistrés que vous avez sélectionnés.

Déplacer des tableaux de bord d’un espace à un autre

L’IU “Import and Export” (Importation et exportation) de Kibana est efficace pour le déplacement d’objets enregistrés individuels. Mais c’est loin d’être l’outil idéal si vous devez déplacer un tableau de bord et l’ensemble des visualisations, des recherches enregistrées et des modèles d’indexation qui y sont associés. Pour déplacer un tableau de bord vers un autre espace, le plus simple est d’utiliser les API d’importation et d’exportation de tableaux de bord.

Exporter le tableau de bord

Pour exporter un tableau de bord, commencez par identifier son ID. Ouvrez le tableau de bord à exporter et examinez son URL. Le long identifiant qui apparaît entre /app/kibana#/dashboard/ et ? correspond à son ID. L’URL suivante illustre l’identifiant du tableau de bord :

http://localhost:5601/s/marketing/app/kibana#/dashboard/<b>d203dd90-deac-11e8-869e-d73106bbd5ad</b>?_g=()

De même, l’URL du tableau de bord nous indique l’identifiant de l’espace associé au tableau de bord. Cet identifiant apparaît au tout début de l’URL, entre /s/ et /app/kibana#dashboard. Si l’URL ne contient pas de /s/, cela signifie que vous êtes dans l’espace par défaut. Dans Kibana, toutes les URL, y compris celles des API, comprennent un préfixe d’espace au format /s/{spaceID}, qui permet de différencier les espaces. Seule exception à cette règle : l’espace par défaut, dont l’URL ne contient aucun préfixe. L’URL suivante illustre l’identifiant d’espace :

http://localhost:5601/s/<b>marketing</b>/app/kibana#/dashboard/d203dd90-deac-11e8-869e-d73106bbd5ad?_g=()

Une fois que nous avons repéré l’ID du tableau de bord, nous pouvons exécuter une requête GET sur {spacePrefix}/api/kibana/dashboards/export?dashboard={dashboardID}. via une commande CURL similaire à celle présentée ci-dessous. Celle-ci permet d’exporter depuis l’espace marketing un tableau de bord dont l’ID est d203dd90-deac-11e8-869e-d73106bbd5ad, et de l’enregistrer avec toutes ses dépendances dans un fichier export.json :

curl -u elastic:changeme http://localhost:5601/s/marketing/api/kibana/dashboards/export?dashboard=d203dd90-deac-11e8-869e-d73106bbd5ad > export.json

De la même manière, la commande CURL ci-dessous permet d’exporter depuis l’espace par défaut un tableau de bord dont l’ID est d203dd90-deac-11e8-869e-d73106bbd5ad, et de l’enregistrer dans un fichier export.json.

curl -u elastic:changeme http://localhost:5601/api/kibana/dashboards/export?dashboard=d203dd90-deac-11e8-869e-d73106bbd5ad > export.json

Importer le tableau de bord

Maintenant que nous avons fait le gros du travail, nous pouvons importer le tableau de bord dans son nouvel espace. Pour ce faire, nous devons de nouveau rechercher l’identifiant d’espace cible, afin de créer le préfixe d’espace apparaissant dans l’URL. À l’aide du sélecteur d’espaces, sélectionnez l’espace cible vers lequel vous devez déplacer le tableau de bord et examinez l’URL comme nous l’avons fait pour identifier l’espace associé au tableau de bord à exporter.

Nous pouvons maintenant envoyer une requête POST à <{spacePrefix}/api/kibana/dashboards/import au moyen du fichier export.json précédemment enregistré. La commande CURL ci-dessous permet d’importer le tableau de bord vers l’espace “sales” :

curl -H “Content-Type: application/json” -H “kbn-xsrf: true” -u elastic:changeme http://localhost:5601/s/sales/api/kibana/dashboards/import --data-binary @export.json

De même, la commande CURL ci-dessous permet d’importer le tableau de bord vers l’espace par défaut :

curl -H “Content-Type: application/json” -H “kbn-xsrf: true” -u elastic:changeme http://localhost:5601/api/kibana/dashboards/import --data-binary @export.json

Une fois votre tableau de bord importé, si vous ne souhaitez pas le conserver dans son espace d’origine, vous pouvez le supprimer.

Jugez-en par vous-même

Kibana Spaces peut s’avérer très utile pour désencombrer et regrouper vos tableaux de bord et visualisations. Qu’il permette à un plus grand nombre de collaborateurs d’utiliser la même instance de Kibana ou que vous l’exploitiez pour implémenter un workflow, lancez-vous, jugez-en par vous-même et dites-nous ce que vous en pensez et comment vous exploitez Spaces.