The KIBANA-AWS objects backup.

Bueno, hoy les traigo un proyecto que arme en base a unas lecciones aprendidas (lease, "metimos la pata").


Este proyecto es basicamente un script en python que les permitira hacer backup de sus objetos dentro de KIBANA, cuando digo objetos me refiero a:


  • configs

  • searchs

  • dashboards

  • visualizations

  • index-patterns


Basicamente, el script toma de kibana los objetos por medio de la api, los agrupa por distintos objetos, arma un zip con toda la info y lo guarda (en este caso en un bucket de S3). Este script nos resulto muy importante, ya que si ustedes trabajan con un SIEM que funciona con el stack de ELK y por algun motivo deben reinstalar todo (o tienen la brillante idea de actualizar su cluster por completo) hace que no pierdan sus preciados dashboards, searchs, etc, etc.



(es necesario que index-patterns y searchs sean importados para que conserven sus ID de referencia, de lo contrario van a tener que cambiar a mano los ID en cada dashboard/visualizacion).


Como funciona?, muy simple (el script fue pensado para usarlo en una lambda, por lo que algunas cosas estan muy AWS"isadas"):


  1. Necesitan las dependencias del script, basicamente recorran el import y descargen las mismas (o creen un env para poder meterlo en la lambda).

  2. Deben setear unas variables de entorno para que el script "sepa" en que backet guardar la info. (BUCKET' y BUCKET_KEY)

  3. Ejecutar el script con los siguientes parametros: "python3 kibackup.py -k http://localhost:5601"

  4. si su ELK tiene "auth" con USUARIO y PASSWORD pueden pasar tambien las expresiones "-p" y "-u" para autenticarse.


El script esta en esta publicado aqui: https://github.com/Stuxend/kibana_backup. y el tambien se encuentra un archivo zip con la lambda para que sea importada y con un evento de cloudwatch puedan cronear la ejecucion y backup. El evento debe ser algo asi:


{ "kibana_url": "http://kibanaURL.bla.bla", "bucket": "backups", "bucket_prefix": "/kibana/backups", "region": "us-monte-1" }