#!/usr/bin/env import json import logging import logging.handlers import glob import os from elasticsearch import Elasticsearch def insert_kibana_objects_to_elasticsearch(kibana_objects): for kibana_object in kibana_objects: #Delete object if it exists exists = es.exists(index='.kibana', doc_type=kibana_object['_type'],id=kibana_object['_id']) if exists: es.delete(index='.kibana', doc_type=kibana_object['_type'],id=kibana_object['_id']) #Insert object to .kibana index in ES es.create(index='.kibana', doc_type=kibana_object['_type'], id=kibana_object['_id'], body=kibana_object['_source'] ) es = Elasticsearch() LOG_FILENAME = os.environ['LOG_DIR'] + 'insert_all_kibana_objects.log.out' # Set up a specific logger with our desired output level es_logger = logging.getLogger('elasticsearch') es_logger.setLevel(logging.INFO) es_logger.filename = LOG_FILENAME log_handler = logging.FileHandler(LOG_FILENAME) es_logger.addHandler(log_handler) TRACER_FILENAME = os.environ['LOG_DIR'] + 'insert_all_kibana_objects.log.trace.out' # Set up a specific tracer logger with our desired output level es_tracer = logging.getLogger('elasticsearch.trace') es_tracer.setLevel(logging.DEBUG) es_tracer.filename = TRACER_FILENAME trace_handler = logging.FileHandler(TRACER_FILENAME) es_tracer.addHandler(trace_handler) #Load all json files in directory visualization_json_files = glob.glob(os.environ['APP_DIR'] + 'kibana/Visualizations/*.json') dashboard_json_files = glob.glob(os.environ['APP_DIR'] + 'kibana/Dashboards/*.json') all_json_files = visualization_json_files + dashboard_json_files for json_file in all_json_files: es_logger.info('Processing file: ' + json_file) json_objects = open(json_file) kibana_objects = json.load(json_objects) insert_kibana_objects_to_elasticsearch(kibana_objects)