Je sais pertinemment que les tableaux de bord Kibana enregistrés (c'est-à-dire le fichier JSON du tableau de bord) sont enregistrés dans OR associé à une instance particulière de ElasticSearch. Si je sauvegardais mon instance Kibana lorsqu’il était connecté à un serveur hébergeant ElasticSearch et si je changeais de serveur ElasticSearch pour une autre adresse, je perdrais mon tableau de bord enregistré. Mais si je devais revenir à l'adresse du serveur d'origine, je récupérerais le tableau de bord enregistré.
Ma question est donc de savoir où exactement dans le répertoire d'installation elasticsearch se trouvent les tableaux de bord enregistrés. Je préférerais pouvoir exécuter un script pour charger automatiquement mes tableaux de bord Kibana pré-créés plutôt que de devoir copier/coller JSON via la console Web chaque fois que je démarre une nouvelle instance ElasticSearch.
Merci pour l'aide.
Selon ce messages Google Groupes , les tableaux de bord sont enregistrés dans le kibana-int
_index avec un _type de dashboard
et un _id de ce que j'ai nommé le. Donc, pour enregistrer mes tableaux de bord dans de nouvelles instances ElasticSearch, dois-je simplement exécuter un PUT dans cet index via CURL? Y a-t-il une meilleure manière de faire cela?
Oui, les tableaux de bord Kibana sont enregistrés dans Elasticsearch sous l'index kibana-int
(par défaut, vous pouvez le remplacer dans le fichier config.js
). Si vous souhaitez déplacer vos tableaux de bord Kibana vers un autre cluster ES, vous avez deux options:
EDIT: Pour la deuxième option, vous pouvez utiliser la bibliothèque python elasticsearch et son aide reindex
, si vous vous sentez plus à l'aise avec Python: https://elasticsearch-py.readthedocs.org/en/latest/helpers .html # elasticsearch.helpers.reindex
En fait, très facile, Copiez deux dossiers:
1) .\elasticsearch\data\nodes\0\indices\.kibana
2) .\elasticsearch\data\nodes\0\indices\kibana-int
coller dans le nouvel elasticsearch.
Dans la version 1.0.0+ de ElasticSearch, les API de capture instantanée et de restauration sont disponibles:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-snapshots.html
http://chrissimpson.co.uk/elasticsearch-snapshot-restore-api.html
Cela vous permet de sauvegarder rapidement (instantané) et de restaurer tous les index, ou tous les index, appartenant à un cluster donné. Ainsi, vous voudrez peut-être envisager de mettre à niveau cette version, car cela vous donnera un simple appel d'API pour prendre un instantané de l'index "kibana-int" et restaurer cet index sur un autre cluster.
Voici un script Python autonome permettant de copier des tableaux de bord Kibana d'elasticsearch Host vers un autre.
#!/bin/env python
"""Migrate all the kibana dashboard from SOURCE_Host to DEST_Host.
This script may be run repeatedly, but any dashboard changes on
DEST_Host will be overwritten if so.
"""
import urllib2, urllib, json
SOURCE_Host = "your-old-es-Host"
DEST_Host = "your-new-es-Host"
def http_post(url, data):
request = urllib2.Request(url, data)
return urllib2.urlopen(request).read()
def http_put(url, data):
opener = urllib2.build_opener(urllib2.HTTPHandler)
request = urllib2.Request(url, data)
request.get_method = lambda: 'PUT'
return opener.open(request).read()
if __== '__main__':
old_dashboards_url = "http://%s:9200/kibana-int/_search" % SOURCE_Host
# All the dashboards (assuming we have less than 9999) from
# kibana, ignoring those with _type: temp.
old_dashboards_query = """{
size: 9999,
query: { filtered: { filter: { type: { value: "dashboard" } } } } }
}"""
old_dashboards_results = json.loads(http_post(old_dashboards_url, old_dashboards_query))
old_dashboards_raw = old_dashboards_results['hits']['hits']
old_dashboards = {}
for doc in old_dashboards_raw:
old_dashboards[doc['_id']] = doc['_source']
for id, dashboard in old_dashboards.iteritems():
put_url = "http://%s:9200/kibana-int/dashboard/%s" % (DEST_Host, urllib.quote(id))
print http_put(put_url, json.dumps(dashboard))
Pour kibana 4, j'ai trouvé la valeur d'index par défaut dans le fichier config/kibana.yml et il s'agissait de ".kibana"
Voici la ligne du fichier de configuration kibana.
kibana_index: ".kibana"
Et voici la requête qui m'a affiché les résultats requis
curl -XGET http://localhost:9200/.kibana/_search?type=dashboard&pretty=1
Comme d'autres l'ont déjà dit, tous les objets sauvegardés par Kibana sont répertoriés dans l'index .kibana dans elasticsearch.
Les versions les plus récentes de Kibana 4 incluent une fonction d'exportation et d'importation qui facilite le déplacement d'objets d'une installation à une autre. Vous pouvez trouver cette fonctionnalité en cliquant sur les onglets "paramètres", puis "objets".
Un script Ruby autonome capable de copier un tableau de bord unique, ses visualisations et leurs recherches stockées d'un cluster à l'autre se trouve à https://github.com/jim-davis/kibana-helper-scripts . C'est un peu trop gros pour être collé dans cette case.