From ead1051f85d2767d1ab696d63a71e593c77f8ed8 Mon Sep 17 00:00:00 2001 From: ac2550 Date: Fri, 5 Oct 2018 13:50:23 +0200 Subject: New kibana config load/restore Change-Id: I9c26e891c171d8f84bb9f4e03319f63599e00298 Issue-ID: CLAMP-226 Signed-off-by: ac2550 --- src/main/docker/kibana/Dockerfile.kibana | 58 +++++++++++ src/main/docker/kibana/README.md | 0 src/main/docker/kibana/backup.py | 89 ++++++++++++++++ src/main/docker/kibana/restore.py | 112 +++++++++++++++++++++ .../saved-objects/default/config/config-6.1.3.json | 1 + ...board-e6a82230-c190-11e8-a550-27f2e3138fee.json | 1 + ...ttern-3ecb1c70-c190-11e8-a550-27f2e3138fee.json | 1 + ...earch-abdd0440-c190-11e8-a550-27f2e3138fee.json | 1 + ...ation-cb896270-c190-11e8-a550-27f2e3138fee.json | 1 + ...ation-d837b120-c190-11e8-a550-27f2e3138fee.json | 1 + src/main/docker/kibana/startup.sh | 81 +++++++++++++++ 11 files changed, 346 insertions(+) create mode 100644 src/main/docker/kibana/Dockerfile.kibana create mode 100644 src/main/docker/kibana/README.md create mode 100755 src/main/docker/kibana/backup.py create mode 100755 src/main/docker/kibana/restore.py create mode 100644 src/main/docker/kibana/saved-objects/default/config/config-6.1.3.json create mode 100644 src/main/docker/kibana/saved-objects/default/dashboard/dashboard-e6a82230-c190-11e8-a550-27f2e3138fee.json create mode 100644 src/main/docker/kibana/saved-objects/default/index-pattern/index-pattern-3ecb1c70-c190-11e8-a550-27f2e3138fee.json create mode 100644 src/main/docker/kibana/saved-objects/default/search/search-abdd0440-c190-11e8-a550-27f2e3138fee.json create mode 100644 src/main/docker/kibana/saved-objects/default/visualization/visualization-cb896270-c190-11e8-a550-27f2e3138fee.json create mode 100644 src/main/docker/kibana/saved-objects/default/visualization/visualization-d837b120-c190-11e8-a550-27f2e3138fee.json create mode 100755 src/main/docker/kibana/startup.sh (limited to 'src/main/docker') diff --git a/src/main/docker/kibana/Dockerfile.kibana b/src/main/docker/kibana/Dockerfile.kibana new file mode 100644 index 00000000..993edd4a --- /dev/null +++ b/src/main/docker/kibana/Dockerfile.kibana @@ -0,0 +1,58 @@ +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2018 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END============================================ +# =================================================================== +# +### + +FROM docker.elastic.co/kibana/kibana-oss:6.1.3 + +MAINTAINER "The Onap Team" +LABEL Description="Kibana image with saved objects loading" +USER root +RUN yum install -y python-requests && yum clean all + +# You can share volume on this folder to restore +# a default kibana configuration. Each subfolder will +# be considered as a saved-object folder generated by, +# the backup.py script bundled with the image. +# Structure example : +# saved-objects/ +# └── default +# ├── config +# │   └── config-6.1.3.json +# ├── dashboard +# │   └── dashboard-e6a82230-c190-11e8-a550-27f2e3138fee.json +# ├── index-pattern +# │   └── index-pattern-3ecb1c70-c190-11e8-a550-27f2e3138fee.json +# ├── search +# │   └── search-abdd0440-c190-11e8-a550-27f2e3138fee.json +# └── visualization +# ├── visualization-cb896270-c190-11e8-a550-27f2e3138fee.json +# └── visualization-d837b120-c190-11e8-a550-27f2e3138fee.json + +RUN mkdir /saved-objects/ + +USER kibana + +ADD saved-objects /saved-objects +ADD startup.sh /usr/local/bin/startup.sh +ADD restore.py /usr/local/bin/restore.py +ADD backup.py /usr/local/bin/backup.py +CMD /usr/local/bin/startup.sh diff --git a/src/main/docker/kibana/README.md b/src/main/docker/kibana/README.md new file mode 100644 index 00000000..e69de29b diff --git a/src/main/docker/kibana/backup.py b/src/main/docker/kibana/backup.py new file mode 100755 index 00000000..4127eb23 --- /dev/null +++ b/src/main/docker/kibana/backup.py @@ -0,0 +1,89 @@ +#!/usr/bin/env python +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2018 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END============================================ +# =================================================================== +# +### + +import json +import logging +import os +import sys + +import requests + +PER_PAGE = 1000 + +def parse_args(args): + """ Parse arguments given to this script""" + import argparse + parser = argparse.ArgumentParser( + description=('Description of the script')) + parser.add_argument('-v', '--verbose', dest='log_level', action='store_const', + const=logging.DEBUG, default=logging.INFO, + help='Use verbose logging') + parser.add_argument('-C', '--configuration_path', + default='./default', + help='Path of the configuration to be backed up.') + parser.add_argument('-f', '--force', action='store_const', + const=True, default=False, + help=('If the save folder already exists, overwrite files' + ' matching a configuration item that should be written.' + ' Files already in the folder that do not match are' + ' left as-is.')) + parser.add_argument('-H', '--kibana-host', default='http://localhost:5601', + help='Kibana endpoint.') + + return parser.parse_args(args) + +def get_logger(args): + """Creates the logger based on the provided arguments""" + logging.basicConfig() + logger = logging.getLogger(__name__) + logger.setLevel(args.log_level) + return logger + +def main(): + """ This script dumps the kibana configuration from Kibana""" + args = parse_args(sys.argv[1:]) + + base_config_path = args.configuration_path + + # get list of all objects available + url = "%s/api/saved_objects/" % (args.kibana_host.rstrip("/"),) + saved_objects_req = requests.get(url, + params={'per_page': PER_PAGE}) + + saved_objects = saved_objects_req.json()['saved_objects'] + + for obj in saved_objects: + + obj_folder = os.path.sep.join((base_config_path, obj['type'])) + + if not os.path.exists(obj_folder): + os.makedirs(obj_folder) + + filename = "%s/%s-%s.json" % (obj_folder, obj['type'], obj['id']) + with open(filename, 'w') as file: + json.dump(obj, fp=file) + + +if __name__ == "__main__": + main() diff --git a/src/main/docker/kibana/restore.py b/src/main/docker/kibana/restore.py new file mode 100755 index 00000000..f58701bb --- /dev/null +++ b/src/main/docker/kibana/restore.py @@ -0,0 +1,112 @@ +#!/usr/bin/env python +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2018 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END============================================ +# =================================================================== +# +### +import json +import logging +import os +import sys + +import requests + +if sys.version_info < (3,): + # for HTTPStatus.OK only + import httplib as HTTPStatus +else: + from http import HTTPStatus + + + +OBJECT_TYPES = ['index-pattern', 'config', 'search', 'visualization', 'dashboard'] + +def parse_args(args): + """ Parse arguments given to this script""" + import argparse + parser = argparse.ArgumentParser( + description=('Restores the kibana configuration.')) + parser.add_argument('-v', '--verbose', dest='log_level', action='store_const', + const=logging.DEBUG, default=logging.INFO, + help='Use verbose logging') + parser.add_argument('-C', '--configuration_path', + default='./default', + help=('Path of the configuration to be restored.' + 'Should contain at least one folder named %s or %s' % + (','.join(OBJECT_TYPES[:-1]), OBJECT_TYPES[-1]) + ) + ) + parser.add_argument('-H', '--kibana-host', default='http://localhost:5601', + help='Kibana endpoint.') + parser.add_argument('-f', '--force', action='store_const', + const=True, default=False, + help='Overwrite configuration if needed.') + + return parser.parse_args(args) + +def get_logger(args): + """Creates the logger based on the provided arguments""" + logging.basicConfig() + logger = logging.getLogger(__name__) + logger.setLevel(args.log_level) + return logger + +def main(): + ''' Main script function''' + args = parse_args(sys.argv[1:]) + logger = get_logger(args) + base_config_path = args.configuration_path + + # order to ensure dependency order is ok + for obj_type in OBJECT_TYPES: + obj_dir = os.path.sep.join((base_config_path, obj_type)) + + if not os.path.exists(obj_dir): + logger.info('No %s to restore, skipping.', obj_type) + continue + + for obj_filename in os.listdir(obj_dir): + with open(os.path.sep.join((obj_dir, obj_filename))) as obj_file: + payload = obj_file.read() + + obj = json.loads(payload) + + obj_id = obj['id'] + for key in ('id', 'version', 'type', 'updated_at'): + del obj[key] + + logger.info('Restoring %s id:%s (overwrite:%s)', obj_type, obj_id, args.force) + url = "%s/api/saved_objects/%s/%s" % (args.kibana_host.rstrip("/"), obj_type, obj_id) + params = {'overwrite': True} if args.force else {} + post_object_req = requests.post(url, + headers={'content-type': 'application/json', + 'kbn-xsrf': 'True'}, + params=params, + data=json.dumps(obj)) + if post_object_req.status_code == HTTPStatus.OK: + logger.info('%s id:%s restored.', obj_type, obj_id) + else: + logger.warning(('Something bad happend while restoring %s id:%s. ' + ' Received status code: %s'), + obj_type, obj_id, post_object_req.status_code) + logger.warning('Body: %s', post_object_req.content) + +if __name__ == "__main__": + main() diff --git a/src/main/docker/kibana/saved-objects/default/config/config-6.1.3.json b/src/main/docker/kibana/saved-objects/default/config/config-6.1.3.json new file mode 100644 index 00000000..196e147b --- /dev/null +++ b/src/main/docker/kibana/saved-objects/default/config/config-6.1.3.json @@ -0,0 +1 @@ +{"attributes": {"buildNum": 16371, "defaultIndex": "3ecb1c70-c190-11e8-a550-27f2e3138fee"}, "type": "config", "id": "6.1.3", "version": 2, "updated_at": "2018-09-26T13:29:53.056Z"} \ No newline at end of file diff --git a/src/main/docker/kibana/saved-objects/default/dashboard/dashboard-e6a82230-c190-11e8-a550-27f2e3138fee.json b/src/main/docker/kibana/saved-objects/default/dashboard/dashboard-e6a82230-c190-11e8-a550-27f2e3138fee.json new file mode 100644 index 00000000..65afdf78 --- /dev/null +++ b/src/main/docker/kibana/saved-objects/default/dashboard/dashboard-e6a82230-c190-11e8-a550-27f2e3138fee.json @@ -0,0 +1 @@ +{"attributes": {"panelsJSON": "[{\"gridData\":{\"w\":6,\"h\":3,\"x\":0,\"y\":0,\"i\":\"1\"},\"version\":\"6.1.3\",\"panelIndex\":\"1\",\"type\":\"visualization\",\"id\":\"d837b120-c190-11e8-a550-27f2e3138fee\"},{\"gridData\":{\"w\":6,\"h\":3,\"x\":6,\"y\":0,\"i\":\"2\"},\"version\":\"6.1.3\",\"panelIndex\":\"2\",\"type\":\"visualization\",\"id\":\"cb896270-c190-11e8-a550-27f2e3138fee\"}]", "uiStateJSON": "{}", "version": 1, "optionsJSON": "{\"darkTheme\":false,\"useMargins\":true,\"hidePanelTitles\":false}", "title": "Counts", "hits": 0, "description": "", "kibanaSavedObjectMeta": {"searchSourceJSON": "{\"query\":{\"query\":\"\",\"language\":\"lucene\"},\"filter\":[],\"highlightAll\":true,\"version\":true}"}, "timeRestore": false}, "type": "dashboard", "id": "e6a82230-c190-11e8-a550-27f2e3138fee", "version": 1, "updated_at": "2018-09-26T13:34:32.403Z"} \ No newline at end of file diff --git a/src/main/docker/kibana/saved-objects/default/index-pattern/index-pattern-3ecb1c70-c190-11e8-a550-27f2e3138fee.json b/src/main/docker/kibana/saved-objects/default/index-pattern/index-pattern-3ecb1c70-c190-11e8-a550-27f2e3138fee.json new file mode 100644 index 00000000..19041ec1 --- /dev/null +++ b/src/main/docker/kibana/saved-objects/default/index-pattern/index-pattern-3ecb1c70-c190-11e8-a550-27f2e3138fee.json @@ -0,0 +1 @@ +{"attributes": {"title": "events-*", "fields": "[{\"name\":\"@timestamp\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"@version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"@version.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.cloud-region.identity-url\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.cloud-region.identity-url.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.complex.city\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.complex.city.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.complex.physical-location-id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.complex.physical-location-id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.complex.state\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.complex.state.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.generic-vnf.service-id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.generic-vnf.service-id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.generic-vnf.vnf-id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.generic-vnf.vnf-id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.generic-vnf.vnf-name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.generic-vnf.vnf-name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.generic-vnf.vnf-type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.generic-vnf.vnf-type.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.tenant.tenant-id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.tenant.tenant-id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.in-maint\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.in-maint.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.is-closed-loop-disabled\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.is-closed-loop-disabled.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.l-interface.interface-name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.l-interface.interface-name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.l-interface.l3-interface-ipv4-address-list.l3-inteface-ipv4-address.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.l-interface.network-name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.l-interface.network-name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.prov-status\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.prov-status.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.selflink\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.selflink.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.vserver-id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.vserver-id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"AAI.vserver.vserver-name\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"AAI.vserver.vserver-name.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_index\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"_score\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"searchable\":false,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false},{\"name\":\"action\",\"type\":\"string\",\"count\":1,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"action.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"closedLoopAlarmEnd\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"closedLoopAlarmStart\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"closedLoopControlName\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"closedLoopControlName.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"closedLoopEventClient\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"closedLoopEventClient.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"closedLoopEventStatus\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"closedLoopEventStatus.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eNodeB.cell_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eNodeB.cell_id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eNodeB.common_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eNodeB.common_id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eNodeB.datetime\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eNodeB.datetime.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eNodeB.ems_id\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eNodeB.ems_id.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eNodeB.oam_ip\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eNodeB.oam_ip.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eNodeB.software_version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eNodeB.software_version.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eNodeB.vendor\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eNodeB.vendor.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"eventDetails\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"eventDetails.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"from\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"from.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.actor\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"history.actor.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.end\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"history.message.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.operation\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"history.operation.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.outcome\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"history.outcome.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.start\",\"type\":\"number\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.subRequestId\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"history.subRequestId.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"history.target\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"history.target.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"host\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"host.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"message\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"message.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"notification\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"notification.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"notificationTime\",\"type\":\"date\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"path\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"path.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"policyName\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"policyName.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"policyScope\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"policyScope.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"policyVersion\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"policyVersion.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"requestID\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"requestID.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"resourceInstance.resourceInstanceName\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"resourceInstance.resourceInstanceName.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"resourceInstance.resourceName\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"resourceInstance.resourceName.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"serviceInstance.serviceInstanceName\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"serviceInstance.serviceInstanceName.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"serviceInstance.serviceName\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"serviceInstance.serviceName.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"status.code\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"status.code.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"status.description\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"status.description.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"subRequestID\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"subRequestID.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"target\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"target.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"target_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"target_type.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"triggerID\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"triggerID.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"triggerSourceName\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"triggerSourceName.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"type.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"version\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":false,\"readFromDocValues\":false},{\"name\":\"version.keyword\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":true},{\"name\":\"isReset\",\"type\":\"boolean\",\"count\":0,\"scripted\":true,\"script\":\"doc['action.keyword'].value == 'Reset'\",\"lang\":\"painless\",\"searchable\":true,\"aggregatable\":true,\"readFromDocValues\":false}]", "fieldFormatMap": "{\"isReset\":{\"id\":\"boolean\"}}", "timeFieldName": "@timestamp"}, "type": "index-pattern", "id": "3ecb1c70-c190-11e8-a550-27f2e3138fee", "version": 14, "updated_at": "2018-09-26T13:46:43.472Z"} \ No newline at end of file diff --git a/src/main/docker/kibana/saved-objects/default/search/search-abdd0440-c190-11e8-a550-27f2e3138fee.json b/src/main/docker/kibana/saved-objects/default/search/search-abdd0440-c190-11e8-a550-27f2e3138fee.json new file mode 100644 index 00000000..1ebc06c6 --- /dev/null +++ b/src/main/docker/kibana/saved-objects/default/search/search-abdd0440-c190-11e8-a550-27f2e3138fee.json @@ -0,0 +1 @@ +{"attributes": {"sort": ["@timestamp", "desc"], "kibanaSavedObjectMeta": {"searchSourceJSON": "{\"index\":\"3ecb1c70-c190-11e8-a550-27f2e3138fee\",\"highlightAll\":true,\"version\":true,\"query\":{\"language\":\"lucene\",\"query\":\"\"},\"filter\":[{\"$state\":{\"store\":\"appState\"},\"meta\":{\"alias\":null,\"disabled\":false,\"index\":\"3ecb1c70-c190-11e8-a550-27f2e3138fee\",\"key\":\"action.keyword\",\"negate\":false,\"params\":{\"query\":\"Reset\",\"type\":\"phrase\"},\"type\":\"phrase\",\"value\":\"Reset\"},\"query\":{\"match\":{\"action.keyword\":{\"query\":\"Reset\",\"type\":\"phrase\"}}}}]}"}, "version": 1, "title": "Resets", "hits": 0, "description": "", "columns": ["action"]}, "type": "search", "id": "abdd0440-c190-11e8-a550-27f2e3138fee", "version": 2, "updated_at": "2018-09-26T13:33:28.694Z"} \ No newline at end of file diff --git a/src/main/docker/kibana/saved-objects/default/visualization/visualization-cb896270-c190-11e8-a550-27f2e3138fee.json b/src/main/docker/kibana/saved-objects/default/visualization/visualization-cb896270-c190-11e8-a550-27f2e3138fee.json new file mode 100644 index 00000000..de2c037d --- /dev/null +++ b/src/main/docker/kibana/saved-objects/default/visualization/visualization-cb896270-c190-11e8-a550-27f2e3138fee.json @@ -0,0 +1 @@ +{"attributes": {"uiStateJSON": "{}", "kibanaSavedObjectMeta": {"searchSourceJSON": "{\"index\":\"3ecb1c70-c190-11e8-a550-27f2e3138fee\",\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"}, "visState": "{\"title\":\"Counts\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}", "title": "Counts", "version": 1, "description": ""}, "type": "visualization", "id": "cb896270-c190-11e8-a550-27f2e3138fee", "version": 1, "updated_at": "2018-09-26T13:33:46.903Z"} \ No newline at end of file diff --git a/src/main/docker/kibana/saved-objects/default/visualization/visualization-d837b120-c190-11e8-a550-27f2e3138fee.json b/src/main/docker/kibana/saved-objects/default/visualization/visualization-d837b120-c190-11e8-a550-27f2e3138fee.json new file mode 100644 index 00000000..65a35576 --- /dev/null +++ b/src/main/docker/kibana/saved-objects/default/visualization/visualization-d837b120-c190-11e8-a550-27f2e3138fee.json @@ -0,0 +1 @@ +{"attributes": {"savedSearchId": "abdd0440-c190-11e8-a550-27f2e3138fee", "uiStateJSON": "{}", "kibanaSavedObjectMeta": {"searchSourceJSON": "{\"filter\":[],\"query\":{\"query\":\"\",\"language\":\"lucene\"}}"}, "visState": "{\"title\":\"ResetsCount\",\"type\":\"metric\",\"params\":{\"addTooltip\":true,\"addLegend\":false,\"type\":\"metric\",\"metric\":{\"percentageMode\":false,\"useRanges\":false,\"colorSchema\":\"Green to Red\",\"metricColorMode\":\"None\",\"colorsRange\":[{\"from\":0,\"to\":10000}],\"labels\":{\"show\":true},\"invertColors\":false,\"style\":{\"bgFill\":\"#000\",\"bgColor\":false,\"labelColor\":false,\"subText\":\"\",\"fontSize\":60}}},\"aggs\":[{\"id\":\"1\",\"enabled\":true,\"type\":\"count\",\"schema\":\"metric\",\"params\":{}}]}", "title": "ResetsCount", "version": 1, "description": ""}, "type": "visualization", "id": "d837b120-c190-11e8-a550-27f2e3138fee", "version": 1, "updated_at": "2018-09-26T13:34:08.178Z"} \ No newline at end of file diff --git a/src/main/docker/kibana/startup.sh b/src/main/docker/kibana/startup.sh new file mode 100755 index 00000000..bbd9d45d --- /dev/null +++ b/src/main/docker/kibana/startup.sh @@ -0,0 +1,81 @@ +#!/bin/bash -x +### +# ============LICENSE_START======================================================= +# ONAP CLAMP +# ================================================================================ +# Copyright (C) 2018 AT&T Intellectual Property. All rights +# reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END============================================ +# =================================================================== +# +### +KIBANA_CONF_FILE="/usr/share/kibana/config/kibana.yml" +SAVED_OBJECTS_ROOT="/saved-objects/" +RESTORE_CMD="/usr/local/bin/restore.py -H http://127.0.0.1:5601/ -f" +BACKUP_BIN="/usr/local/bin/backup.py" +KIBANA_START_CMD="/usr/local/bin/kibana-docker" +LOG_FILE="/tmp/load.kibana.log" +KIBANA_LOAD_CMD="/usr/local/bin/kibana-docker -H 127.0.0.1 -l $LOG_FILE" +TIMEOUT=60 +WAIT_TIME=2 + +if [ -n "$(ls -A ${SAVED_OBJECTS_PATH})" ]; +then + echo "---- Saved objects found, restoring files." + + $KIBANA_LOAD_CMD & + KIB_PID=$! + + # Wait for log file to be avaiable + LOG_TIMEOUT=60 + while [ ! -f $LOG_FILE ] && [ "$LOG_TIMEOUT" -gt "0" ]; + do + echo "Waiting for $LOG_FILE to be available..." + sleep $WAIT_TIME + let LOG_TIMEOUT=$LOG_TIMEOUT-$WAIT_TIME + done + + tail -f $LOG_FILE & + LOG_PID=$! + + # Wait for kibana to be listening + while [ -z "$(grep "Server running at" $LOG_FILE)" ] && [ "$TIMEOUT" -gt "0" ]; + do + echo "Waiting for kibana to start..." + sleep $WAIT_TIME + let TIMEOUT=$TIMEOUT-$WAIT_TIME + done + sleep 1 + + # restore files + for saved_objects_path in $SAVED_OBJECTS_ROOT/* + do + echo "Restoring content of $saved_objects_path" + $RESTORE_CMD -C $saved_objects_path + sleep 1 + done + + # cleanup + kill $KIB_PID + kill $LOG_PID +else + echo "---- No saved object found" + ls -A ${SAVED_OBJECTS_PATH} +fi + +echo "---- Starting kibana" + +$KIBANA_START_CMD + -- cgit 1.2.3-korg