Profundizando nagios.pdf

Vista previa de texto
my $log = Nagios::StatusLog->new(
Filename => "/dev/shm/status.dat",
Version => 3.0
);
print("Content-type: text/xml\n\n");
print("<?xml version='1.0'?>");
print("<status>\n");
foreach my $host ($log->list_hosts()) {
print("<host>\n<name>$host</name>\n<services>");
foreach my $serv ($log->list_services_on_host($host)) {
print ("<service>\n");
print (ref $serv);
my $st = $log->service($host, $serv);
foreach $tag ($st->list_tags()) {
print("<$tag>$$st{$tag}</$tag>\n");
}
print ("</service>\n");
}
print("</services>\n</host>\n")
}
print("</status>");
Recordemos que para instalar modulo de CPAN deberemos ejecutar
# perl -MCPAN -e shell
cpan> install MODULO::NOMBRE
Ejemplo para este caso
cpan> install Nagios::StatusLog
Ejemplo de mk_livestatus
#!/usr/bin/python
#
# Sample program for accessing the Livestatus Module
# from a python program
socket_path = "/var/lib/nagios/rw/live"
import socket
s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
s.connect(socket_path)
# Write command to socket
s.send("GET hosts\n")
# Important: Close sending direction. That way
# the other side knows, we are finished.
s.shutdown(socket.SHUT_WR)
# Now read the answer
answer = s.recv(100000000)
# Parse the answer into a table (a list of lists)
table = [ line.split(';') for line in answer.split('\n')[:-1] ]
print table
Ejemplo de como obtener la lista de equipos y su estado desde php y
exportarlo a formato CSV
$lista_servidores = shell_exec("/bin/echo -e \"GET hosts\nColumns: name address
alias state\n\" | /usr/local/bin/unixcat /usr/local/nagios/var/rw/live");
$lista_hosts = str_getcsv($lista_servidores, "\n");
