Explotando la visualización de Elasticsearch en Grafana con Sankey

En este post veremos un Panel muy interesante para Grafana, un panel de tipo Sankey, una manera de visualizar (con los ojos) datos que tengamos en texto y al tener una relación entre ellos, los explotaremos (registros en Elasticsearch).

El ejemplo que haremos en este post, será visualizar datos que recopilamos en nuestro Elasticsearch, en este caso logs de un Apache, un IIS, un firewall… o en particular de mi IDS & IPS favorito, Suricata, donde veremos las conexiones de nuestra red. Quién conecta con quién de manera visual (orígenes & destinos), contra qué puerto, el top de conexiones… y así conoceremos de una manera gráfica el comportamiento de nuestra red.

Bueno, veréis que esto está chupado, primero instalaremos el maravilloso Panel de tipo Sankey en Grafana:

cd /var/lib/grafana/plugins/
git clone https://github.com/kumaravel29/sankey-panel.git

 

Editamos este fichero de Grafana ‘/usr/share/grafana/public/views/index.html’ y en la línea 18 o por ahí ahí en un huequito, añadimos:

<script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script>

 

Y reiniciamos Grafana:

systemctl restart grafana-server

 

Y ya podremos añadir un Panel de tipo Shankey, tendremos en cuenta que al menos agruparemos al menos 2 dos Términos, en este ejemplo de análisis de LOG de red usaremos: Direcciones IP Origen (source.ip) e IPs Destino (destination.ip). Como vemos tendremos 1 Métrica que puede ser “Count” (en el caso que queramos ver número de conexiones) o podemos poner otra, por ejemplo “Sum” y elegir un campo con bytes como puede ser ‘destination.bytes’ y así vemos el sumatorio del consumo y no conexiones. Al gusto del consumidor, si queremos ver datos o conexiones (entre otras).

 

O lo dicho, podremos agrupar por más Términos, y si agregamos como en el ejemplo anterior los Puertos de Destino (destination.port) podremos ver no sólo qué dirección IP conecta con quién, si no además contra qué puerto.

 

Y luego ya cuando lo tengamos, podremos explotar estos datos como más nos gusten, visualizar las últimas 24 horas, o semana, conocer cómo se comporta nuestra red… o directamente visualizar el último minuto y que la visualización se auto-refresque cada X segundos, así en tiempo real también podemos ver qué pasa.

Como siempre, esperando que os parezca interesante y podáis aplicarlo en vuestros entornos para conocerlos mejor, ¡abrazos a tod@s!