Añadir DS a RRD – Problema PNP4Nagios – No DS called …

Me he encontrado varias veces problemas con los ficheros rrd que usa pnp para graficar en Nagios.
Indicando que faltan uno o varios (DS)-DataSource… esto sucede normalmente, porque se ha cambiado el plugin de un servicio y el nuevo plugin genera una salida diferente, lo cual genera un nuevo XML, pero el RRD que teníamos sigue con la definición anterior y faltan los (DS) indicados.

NOTA:
Para cada servicio, tenemos dos ficheros….
XML –> Estructura de BBDD rrd.
RRD –> BBDD

Como proceder… tenemos dos alternativas….

1.- Mas rápida… pero con perdida de histórico del servicio.

Borramos el rrd y el xml, y en el siguiente check se generaran de nuevo, pero habremos perdido el histórico para ese servicio.

2.- Creamos los DS que faltan.

De este modo mantendremos el historico del servicio para el resto de DS’s

NOTA: El script usado “rrd_add_datasource.pl” se puede descargar o copiarlo directamente.-
– Caso Practico –

1.- Verificar los DS que tenemos en el XML:

#cat /var/lib/pnp4nagios/XXXXXXX/DISK-linux.xml |grep "<DS>"
 <DS>1</DS>
 <DS>2</DS>
 <DS>3</DS>
 <DS>4</DS>
 <DS>5</DS>

2.- Verificar los DS que tenemos en el rrd:

#rrdtool info /var/lib/pnp4nagios/XXXXXXX/DISK-linux.rrd |grep type
 ds[1].type = "GAUGE"
 ds[2].type = "GAUGE"
 ds[3].type = "GAUGE"

3.- Debemos añadir el DS 4 y 5

# /root/rrd_add_datasource.pl /var/lib/pnp4nagios/XXXXXXX/DISK-linux.rrd 4 GAUGE
Processing /var/lib/pnp4nagios/XXXXXXX/DISK-linux.rrd... ok.
# /root/rrd_add_datasource.pl /var/lib/pnp4nagios/XXXXXXX/DISK-linux.rrd 5 GAUGE
Processing /var/lib/pnp4nagios/XXXXXXX/DISK-linux.rrd... ok.

4.- Verificamos que el RRD ya tiene los DS correctos

[root@s2-argos ~]# rrdtool info /var/lib/pnp4nagios/XXXXXXX/DISK-linux.rrd |grep type
ds[1].type = "GAUGE"
ds[2].type = "GAUGE"
ds[3].type = "GAUGE"
ds[4].type = "GAUGE"
ds[5].type = "GAUGE"

Tras esto el mapa se mostrara correctamente.
– Script “rrd_add_datasource.pl” –

#!/usr/bin/perl

use strict;
use warnings;
use RRD::Simple();

my $rrd_file = shift @ARGV;
my $DS_name = shift @ARGV;
my $DS_type = shift @ARGV;

my $rrd = RRD::Simple->new();

print "Processing $rrd_file...";
$rrd->add_source($rrd_file, $DS_name => $DS_type);
print " ok.\n";

e.j.

./rrd_add_datasource.pl $RRD_FILE $DS_NAME $TYPE
./rrd_add_datasource.pl /var/lib/pnp4nagios/XXXXXXX/DISK-linux.rrd 5 GAUGE
Esta entrada fue publicada en Nagios. Guarda el enlace permanente.

Deja un comentario

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