Проект GitHub elastic/beats-dashboards содержит Python script для сброса определений Kibana (в JSON, один файл на определение) и shell script для загрузки этих определений экспортированных в экземпляр Elasticsearch.
Сценарий Python сбрасывает все определения Kibana, что в моем случае больше, чем я хочу.
Я хочу распространять только некоторые определения: в частности, определения для нескольких панелей мониторинга (и их визуализации и поиска), а не все панели мониторинга в моем экземпляре Elasticsearch.
Я рассмотрел различные варианты, в том числе сценарии написания, чтобы получить конкретное определение панели мониторинга, а затем проанализировать это определение и получить приведенные определения визуализации и поиска, но на данный момент я пошел со следующим решением (неэлегантным, но прагматичным).
В Kibana я редактировал каждое определение и вставлял строку в поле «Описание», которое идентифицирует определение как одно, которое я хочу экспортировать. Например, «#exportme».
В сценарии Python (из бит-панелей), который сбрасывает определения, я ввел параметр запроса в вызов функции поиска, ограничив его определениями с помощью этой идентифицирующей строки. Например:
res = es.search(
index='.kibana',
doc_type=doc_type,
size=1000,
q='description:"#exportme"')
(На практике, а не жесткое кодирование «хэштег», это лучшая практика, чтобы указать его с помощью аргумента командной строки.)
Одним из аспектов сценариев dump'n'load которые мне особенно нравятся, это их гранулярность: один файл JSON для каждого определения. Я считаю это полезным для контроля версий.