16 abr

Splunk Storm ( API )

Vamos a comentar la solución Splunk Storm, básicamente nos ofrece la posibilidad de tener un visor centralizado para poder ver los logs de nuestro sistema de forma más amigable, os pego la imagen que sale en su pagina principal ya que es muy descriptiva.

splunkstrom

Como veis en la imagen, la idea es enviar los datos al servidor splunk de tal manera que después desde su pagina web podamos verlos.

Tenemos diferentes formas de enviar los logs:

1.- A través de los Forwarders, que básicamente lo que hacemos es instalar un cliente en nuestro servidor y configurarlo para que envíe los  logs al servidor de splunk.

2.- Network data, esta alternativa lo que hacemos es configurar el syslog de nuestro servidor para que envié los logs al servidor de splunk.

3.- File upload, pues eso, subimos el fichero directamente.

4.- A través de la API, podemos enviar el fichero/s a través de una llamadas curl.

Es este post voy a explicar como montarlo a través de la API.

Pues vamos al lio.

Primero de todo nos tenemos que dar de alta en www.splunkstorm.com, como veremos tenemos una cuota de 1GB gratis, una vez sobrepasada no podremos enviar mas logs, a no ser que vaciemos el storage o saquemos la cartera.

Bueno una vez dados de alta, debemos ir a la pagina principal y seleccionamos Inputs

ss1

Nos aparecerá algo tal que

ss2

Aquí tenemos las 4 formas de enviar que comete antes, como veréis tenéis en cada una un Learn more, que os permitirá saber como realizara.

Bueno nosotros seguimos con la API, le damos sobre el apartado de API y nos mostrar la siguiente imagen.

ss3

Nos quedaremos con los datos del Access token y Project ID.

Pues con todo esto ahora vamos hacer la llamada a la API con curl.

curl -u x:$ACCESS_TOKEN "https://api.splunkstorm.com/1/inputs/http?index=$PROJECT_ID&sourcetype=$SOURCETYPE"  -H "Content-Type: text/plain"  --data-binary @$FILE`

En la linea tenemos 4 variables.

$ACCESS_TOKEN = Debemos poner el numero que nos mostró en la ultima imagen

$PROJECT_ID = La identificación del proyecto (podemos tener mas de un proyecto)

$SOURCETYPE = Esta es la etiqueta con la que se marcara el “tipo” de fichero que vamos a subir, por ejemplo si queremos subir los logs de apache, el sourcetype podría ser “apache”

$FILE = La ruta hacia el fichero.

Como podéis ver es muy sencillo, y más sencillo es hacerse un pequeño scrprit que se vaya ejecutando cada x tiempo y nos envíe los logs a nuestro splunkstorm.

Una posible solución puede ser el siguiente script.

#!/bin/bash
 ACCESS_TOKEN=nnHQo1EJB8b3
 PROJECT_ID=d18c24f49dd
 function send_log {

echo Enviando $1

res=`curl -u x:$ACCESS_TOKEN 
 "https://api.splunkstorm.com/1/inputs/http?index=$PROJECT_ID&sourcetype=$2" 
 -H "Content-Type: text/plain" 
 --data-binary @$1`

if [[ $res == *ERROR* ]]; then

echo Mal
 else
 cat /dev/null > $1;
 /etc/init.d/$3 $4
 fi
 }

# Envio del messages
 send_log /var/log/messages messages

#Envio del syslog
 send_log /var/log/syslog syslog rsyslog rotate

# Envio log php
 send_log /mnt/usb/fpm-log/php5-fpm.log php-fpm php5-fpm reload

# Envio log nginx
 send_log /mnt/usb/nginx/error.log nginx

# Envio log nginx access
 send_log /mnt/usb/nginx/access.log nginxaccess nginx reload

# Envio de log rsync.log
 send_log /mnt/usb/rsync.log rsync rsync reload

# Envio del log de envio de splunk
 send_log /mnt/usb/splunk.log splunk

#Envio Accesos owncloud
 send_log /mnt/descargas/owncloud/owncloud.log owncloud

Bueno lo que hace el script es lo siguiente.

Añadimos nuestros datos de ACCESS_TOKEN y PROJECT_ID, al final del fichero iremos colocando los datos que queremos enviar a splunk, de la siguiente forma:, por ejemplo

# Envio log nginx access
send_log /mnt/usb/nginx/access.log nginxaccess nginx reload

Donde:

Send_log = Nombre de la funcion

/mnt/usb/nginx/access.log = ruta donde esta el log que queremos enviar

nginxaccess = sourcetype

nginx = servicio

reload = opcion

Como veis se realiza un reload de servicio del cual estamos enviando el log, ya que en el caso que el envío haya ido bien, el fichero se vacía, si en ese momento el servicio esta escribiendo en el log, es probable que deje de hacerlo, por ello hacemos en reload.

Es necesario en este caso, vaciar los ficheros que enviamos ya que sino siempre enviaremos datos repetidos.

Por ultimo una vez enviado los datos nos podemos ir a la opción de explore data, donde empezaremos a ver los datos enviados de una forma muy bontia.

A disfrutarlo!!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>