Centreon: calcular el 95 percentil

Una de las medidas que usamos los operadores para medir el tráfico que generan los usuarios es mediante el 95 percentil.

Centreon es una magnífica herramienta de monitorización que además nos muestra las gráficas de lo que hacen nuestros servidores y routers, pero en algunas gráficas no se refleja toda la información que deseamos y tampoco aparecen en el formato que nos interesa.

Así que en éste post voy a explicar:
– Modificación del script check_centreon_snmp_traffic
– Modificación del command y creación del template del servicio (service template)
– Añadir metricas del total del tráfico
– Añadir curves para generar el gráfico del 95 percentil
– Modificar las gráficas que vienen por defecto del trafico…

fdupes: busca archivos duplicados en un directorio

Frase típica: ¿Cómo busco los ficheros duplicados en mi ordenador para conseguir liberar un poco de espacio en el disco?

Pues muy simple, con fdupes :) el programa busca duplicados a partir del tamaño, el nombre y el hash md5.

# apt-get install fdupes

Y para que trabaje

$ fdupes -r /home/laura/Escriptori

Empieza a salir una barra de progreso y a los segundos, te saca un output con los ficheros duplicados.
Si temes que vas a tener muchos, te recomiendo guardar el output a un fichero

$ fdupes -r /home/laura/Escriptori /home/laura/duplicats.txt

Post dedicado a todos aquellos que me habéis hecho la pregunta alguna vez :P…

Centreon: CRITICAL: Interface speed equal 0! Interface must be down.

Cuando estás monitorizando a veces te encuentras con éste error que te trae de cabeza, tu sabes de cierto que la interfaz está activa, además que estás monitorizando otras interfaces del mismo router (en este caso un router Mikrotik virtualizado) y aparecen.

Las interfaces de las que dispone el router/server las podemos encontrar en /var/lib/centreon/centplugins en el fichero traffic_cache_IPDELROUTER, en mi caso si hago un cat del fichero tengo algo similar a ésto:…

Centreon 2.7

El otro día me di cuenta que una versión super antigua de centreon (fully automated nagios, centreon 2.4.5), y buscando documentación me encontré con que Centreon2.7 ya lleva unos meses entre nosotros. Así que vamos a proceder a instalar centreon 2.7 y a cargar los datos del viejo centreon al nuevo :) y punto.
Traté de hacer la importación pero se queda la cosa a medias y no hay forma de avanzar :(

Lo primero será descargar la iso y ponerlo donde queramos, en mi caso en una maquina virtual con kvm.

Una vez instalado, entraremos como root e identificaremos la ip usando ifconfig, ponemos dicha ip en el navegador y procedemos a configurar centreon.…

Prometheus + Grafana

Siempre cuando tienes que montar un sistema de monitorización te preguntas ¿cuál? hay varios, nagios/centreon, zabbix, cacti, etc. pero hoy he terminado en una conferencia de debian y un tal tincho ha hecho una charla sobre un nuevo sistema de monitorización llamado Prometheus.
Como en La Mar de Bits tenemos pendiente montar uno y aún no nos hemos decidido por ninguno, pues antes de tirarnos a cualquiera de los otros, vamos a probar éste :)

Prometheus es el sistema de monitorización y tiene varias partes, grafana es un entorno externo que permite conectar con prometheus y mediante querys de prometheus, puedes crear un dashboard para ver los servicios que monitoriza prometheus a simple vista.
Así que vamos a ver la instalación de ambos y su integración.…

Tunelizar subredes a través de ssh

Quien me conozca sabe que soy la reina de los túneles ssh. Esto va de maravilla cuando quieres saltar host a host, pero si tienes que acceder a muchas ips empieza a ser un rollo el tener que abrir varios túneles y/o irlos cerrando y abriendo.

Así que he pensado… ¿habrá la posibilidad de enrutar un rango de red a través de ssh? ¡pues si! y se llama sshutle

# pip install sshuttle

Ahora lo que quiero hacer es enrutar todo el tráfico de 10.69.0.0/16 por éste tunel ssh:

# sshuttle -r usuario@servidor 10.69.0.0/16 -vv

Et voilà! :D…

Ver el progreso de un dd

¿Cuantas veces estás copiando una imagen o directamente un disco duro y no tienes la idea de cuanto tiempo va a durar la tarea? el dd es el “en la informática sabes cuando empiezan las cosas pero no cuando terminan” en toda regla.
Con esto, vas a seguir igual, pero al menos puedes hacer algunos cálculos para hacerte una idea de cuando va a terminar :P

Vamos a usar pv, pipe viewer, que es una herramienta para monitorizar el progreso de los datos a través de un pipe. Lo podemos insertar tal cual como un pipe o entre dos procesos para obtener un indicador visual de la velocidad con la que están pasando los datos y así realizar una estimación para que termine la tarea.

Primero lo instalamos

# apt-get install pv

Y ahora por ejemplo, queremos clonar un disco a otro disco

# dd if=/dev/sda | pv | dd of=/dev/sdb

La salida sería algo similar a esto

1,74MB 0:00:09 [ 198kB/s] [      <=>                               ]

También lo podríamos usar en la salida de un comando

root@carboni:/home/laura/isos# pv kali-linux-2016.1-amd64.iso |md5sum
12MiB 0:00:03 [ 217MiB/s] [=============================] 25% ETA 0:00:08

Fuente: askubuntu

Gracias Josep Vergés por el reto ;)…

Exportar consulta SQL a un fichero csv

select callrates.id, users.usr, callrates.extension, callrates.destination, callrates.calldate, callrates.duration, callrates.description, callrates.stablishment, callrates.rate INTO OUTFILE '/tmp/export_201603.csv' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\n' FROM callrates, users WHERE users.id=callrates.user and year(calldate) = 2016 AND month(calldate) = 03;

No hay opción de exportar la cabecera.…

Proxy apache con https

Cuando tienes pocas IPs y muchas maquinas una de las opciones que tienes para preservar IPs es usar proxy_http de apache, pero ¿qué ocurre cuando quieres proxyear conexiones https?

Lo lógico ha sido crear el certificado en la máquina que contiene el servicio bajo ssl, hasta aquí todo OK, pero se complicaba la cosa al tratar de hacerlo pasar por el servidor que hace de proxy apache.

Vamos a ver como lo he hecho, no es exactamente como quería, pero la cosa es que funciona :P

Para recopilar un poco y como ha habido cambios en la web startssl voy a poner el paso a paso, además que el post que tengo es un poco viejuno ya!…

Dump MySQL a través de PHP

Tengo un servidor al que sacarle una copia de la bbdd pero no me deja usar exec y como consecuencia mysqldump… así que un script para hacerlo de otra forma:

backup_tables('localhost','username','password','blog');

/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
	
	$link = mysql_connect($host,$user,$pass);
	mysql_select_db($name,$link);
	
	//get all of the tables
	if($tables == '*')
	{
		$tables = array();
		$result = mysql_query('SHOW TABLES');
		while($row = mysql_fetch_row($result))
		{
			$tables[] = $row[0];
		}
	}
	else
	{
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
	
	//cycle through
	foreach($tables as $table)
	{
		$result = mysql_query('SELECT * FROM '.$table);
		$num_fields = mysql_num_fields($result);
		
		$return.= 'DROP TABLE '.$table.';';
		$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
		$return.= "\n\n".$row2[1].";\n\n";
		
		for ($i = 0; $i < $num_fields; $i++) 
		{
			while($row = mysql_fetch_row($result))
			{
				$return.= 'INSERT INTO '.$table.' VALUES(';
				for($j=0; $j < $num_fields; $j++) 
				{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = ereg_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j < ($num_fields-1)) { $return.= ','; }
				}
				$return.= ");\n";
			}
		}
		$return.="\n\n\n";
	}
	
	//save file
	$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
	fwrite($handle,$return);
	fclose($handle);
}

Te guarda el dump en la raiz del script.…