Herramientas de usuario

Herramientas del sitio


manuales:nagios:thruk

¡Esta es una revisión vieja del documento!


Thruk

Introducción

Thruk Monitoring - Es una interfaz web de monitoreo para Nagios, Icinga, Shinken y Naemon. Utiliza como backend MK Livestatus. Está diseñado para ser un reemplazo 'completo' y cubre casi el 100% de los elementos originales. Además añade mejoras adicionales para grandes instalaciones y una mayor facilidad de uso.

Características principales / Ventajas

  • Múltiples backends
  • Más rápido, sin necesidad de analizar status.dat para cada petición
  • Menos uso de la CPU
  • Mostrar los datos en vivo, no hay retraso entre el núcleo y la interfaz gráfica de usuario
  • Independiente del núcleo de monitoreo, se puede instalar en un host remoto
  • Clusterizable, se pueden agrupar hosts
  • Cambiar el filtro status.cgi línea
  • Búsqueda extendida archivo de registro
  • Mejor registro, utiliza Log4perl
  • Código HTML válido
  • No hay marcos HTML
  • Fácil de ampliar con plugins
  • 100% Perl (usando catalizador marco)
  • Paginación
  • Múltiples temas incluidos
  • Exportación a Excel para el estado y los archivos de registro
  • Menú lateral ajustable
  • CLI plugins para testeo
  • Guardar búsquedas en marcadores personales
  • Herramienta de configuración incluido
  • Interfaz móvil incluido
  • SLA informes/reportes en formato PDF
  • Tiempos de parada Recurrente
  • Dashboard completo
  • Business Process Addon

Como trabaja

Thruk está escrito en Perl usando el Framework Catalyst. Como Backend se conecta por medio del módulo Perl Monitoring::Livestatus. Thruk se ejecuta como un proceso fastcgi. La Disponibilidad se calcula con el módulo Monitoring::Availability. La autenticación es proporcionada por el servidor web Apache (ejemplo mod_auth_basic, mod_auth_ldap, mod_auth_mysql, …​).

Arquitectura

Soporte multisitio

Thruk conecta con tantos sistemas de monitoreo como quiera (pueden ser múltiples instancias de Nagios etc). Incluso se puede combinar instancias Naemon, Nagios, Icinga y Shinken en una vista combinada grande. De esta manera se obtiene la ventaja de varios lugares independientes y todavía tiene una visión general acerca de todas sus instalaciones. Los sitios pueden ser puestos en grupos para una mejor disposición.

Dashboard

El plugin Panorama ofrece una solución flexible para generar un tablero/dashboard. Cada usuario puede crear sus propios cuadros de mando con unos pocos clics y compartirlos con sus colegas. Varios elementos y fondos e imágenes se pueden posicionar libre sin ningún tipo de restricciones. Múltiples Dashboards pueden ser unidos entre sí y conectados a las acciones. Esto permite crear un centro de control propio.

Reportes SLA

El plug-in 'reportes' crea informes SLA completos en formato HTML y PDF que se pueden enviar por correo electrónico a intervalos regulares. Además de que puede convertir cualquier página Thruk en un informe periódico vía E-Mail.

Integración de procesos de negocio BP

El complemento de procesos de negocio permite modelar sus aplicaciones y procesos de negocio. Editor y notificaciones en línea incluidos.

Exportación Excel

La función Favoritos le permite guardar sus búsquedas y añadirlos como su elemento de menú personal. Además de los marcadores, se puede ajustar el menú fácilmente por medio de la configuración en menu_local.conf para todos los usuarios. La exportación de Excel crea archivos reales de Excel que se pueden enviar por correo o utilizarlos para extraer los nombres de host ú otra información.

Herramienta de configuración

La herramienta de configuración hace que sea muy fácil de cambiar la configuración de objetos de monitoreo. También permite realizar cambios rápidos en la configuración de Thruk, así como la gestión de acceso de los usuarios a través de archivos htpasswd o ajustar el archivo cgi.cfg.

Envío de múltiples comandos

Se pueden enviar varios comandos a la vez. Incluso es posible enviar comandos de host y de servicio al mismo tiempo. Cuando se reprogramen los chequeos de hosts y servicios, Thruk esperará hasta que su chequeo sea terminado y mostrará el resultado tan pronto como el chequeo vuelva.

Filtrado simple

Con Thruk es posible cambiar rápidamente su filtro de visualización. Se pueden combinar los filtros múltiples para crear tipos de vistas. También se soporta una búsqueda en Ajax, por lo que no es necesario adivinar los nombres de host o de servicio, además de utilizar el poder de las expresiones regulares.

PNP4Nagios

Cuando su action_url contiene /pnp4nagios/, habrá automáticamente un gráfico en pantalla. Esto otorga una vista rápida sobre el historial de rendimiento. La imagen se vincula a pnp4nagios para obtener información detallada.

Múltiples líneas en la salida del plugin

Cuando su chequeo devuelve varias líneas de salida. Thruk marca la salida en color azul y con un clic sobre ella muestra la salida completa. Esto es especialmente útil para los controles check_multi. Además de eso, los comentarios y los tiempos de parada también tienen una pequeña ventana emergente con sus datos. Así no es necesario abrir la página de host / servicio sólo para ver quien estableció un comentario y cuando hay un tiempo de inactividad o caída.

Mine Map

El Mine Map es la herramienta perfecta para obtener una visión general rápida. Es especialmente útil si se tiene una gran cantidad de servicios comunes a través de los hosts. De lo contrario usar se pueden utilizar hostgroups o servicegroups para obtener buenos resultados. Un filtrado normal es posible también.

Interfaz Móvil

La interfaz móvil da acceso a las cosas más importantes y permite una vista rápida para reconocer problemas.

Instalacion

Hay diferentes formas de instalar Thruk

Por medio de paquetes

Se puede realizar una instalación desde paquetes binarios, es la forma más simple de instalar Thruk.

Hay que descargar los paquetes desde la página de descargas.

Todos los paquetes tienen esta estructura de directorios :

/etc/thrukThruks config
/etc/httpd/conf.d/thruk.confApache config
/usr/share/thrukshared files
/usr/lib/thruk/perl5Perl libraries
/var/cache/thruktemporary files
/var/lib/thrukstored user settings

Luego de la instalación, Thruk estará disponible en http://your_host/thruk/ y tiene un usuario predeterminado 'thrukadmin' con la contraseña 'thrukadmin' configurada. Puede que tenga que cambiar la configuración del servidor. Esto se debe hacer desde el archivo de configuración thruk_local.conf donde todos los ajustes se pueden modificar.

Debian / Ubuntu

#> dpkg -i thruk_1.84_debian6_amd64.deb

En caso de errores de dependencia, ejecutar 'apt-get -f install' y reintentar la orden 'dpkg -i …'.

Centos / Redhat

#> yum install --nogpgcheck thruk-1.84-1.rhel6.x86_64.rpm

Puede que haya que incluir un repositorio externo para el módulo mod_fastcgi. Epel o rpmforge deberían tenerlo.

SLES

#> zypper install thruk-1.84-1.sles11.x86_64.rpm

Es posible que necesite el DVD SDK SLES para incluir dependencias adicionales.

Por medio de código fuente

Una instalación desde el código fuente, a veces puede ser útil si tenemos requisitos especiales de los usuarios.

Requerimientos

Para instalar Thruk desde el código fuente, necesitaremos cumplir las siguientes dependencias en nuestro sistema :

  • Perl
  • Cliente GIT
  • Herramientas de compilación: automake, make, g++, gcc
  • Apache Webserver (opcional solo para fastcgi)

Creación de un usuario de ejecución

Deberemos crear los siguientes usuarios y grupos

  • Usuario: thruk
  • Grupo: thruk

Instalar librerías de Thruk

Todos los módulos Perl requeridos están disponibles desde el repositorio thruk_libs.

%> su - thruk
%> cd /tmp
%> git clone git://github.com/sni/thruk_libs.git
%> cd /tmp/thruk_libs
%> make

Ahora todos los módulos requeridos se encuentran en /tmp/thruk_libs/local-lib/dest.

Git Clone Thruk

%> cd /tmp
%> git clone https://github.com/sni/Thruk.git
%> cd /tmp/Thruk
%> ./configure
%> make

Mover las librerías de Perl

Deberemos mover las librerías al directorio principal de Thruk

%> mv /tmp/thruk_libs/local-lib/dest/lib/perl5 perl5 ~/Thruk/

Deremos agregar lo siguiente al perfil de usuario, generalmente dentro del archivo .profile.

PERL5LIB=lib:~/Thruk/perl5

Luego deremos reiniciar la sesión de usuario y verificar que la variable $PERL5LIB contiene la ruta correcta.

Finalmente podemo verificar si thruk correra correctamente por medio del siguiente comando :

%> cd ~/Thruk && ./script/thruk

O corriendo el servidor de desarrollo :

%> cd ~/Thruk && ./script/thruk_server.pl

Deberemos abrir el navegador y acceder a http://your_host:3000

Configuración

Deberemos copiar el archivo thruk.conf a thruk_local.conf y ajustar las opciones de livestatus que necesitemos.

%> cp thruk.conf thruk_local.conf

El archivo thruk.conf a menudo sera re-escrito cuando se apliquen actualizaciones. En cambio el archivo thruk_local.conf contiene las configuraciones locales que están por sobre la demás y nunca será sobre-escrito.

Luego habrá que editar el archivo cgi.conf y ajustar las configuraciones que se crean necesarias.

Configuracion

Configuración de Thruk

La configuración de Thruk es principalmente administrada en estos archivos de configuración :

thruk.confConfiguración default principal de Thruk
thruk_local.confConfiguración local principal, sobreescribe la default
cgi.cfgNaemon/Nagios cgi.cfg
log4perl.confConfiguración de logging
menu.confConfiguración default de menú de navegación de Thruk
menu_local.confConfiguración local de menú de navegación, sobreescribe la default

thruk.conf

El achivos thruk.conf contiene los valores predeterminados. No debería editar este archivo directamente. Se debe sobrescribir la configuración dentro del archivo thruk_local.conf en su lugar.

thruk_local.conf

El archivo thruk_local.conf es una copia del archivo thruk.conf. Ambos archivos son utilizados por thruk. La idea es que el archivo thruk.conf proporcione los valores predeterminados y el archivo thruk_local.conf reemplace dichos ajustes cuando sea necesario.

Opciones generales

ValorDescripciónEjemplo
title_prefixEstablecer el prefijo de título para todas las urls, esta parte del texto se antepondrá a todos los títulos de las páginastitle_prefix = Prod
use_bookmark_titlesEstablece el título de la página con el nombre de un marcadoruse_bookmark_titles = 1
use_dynamic_titlesUtiliza títulos de las páginas más descriptivosuse_dynamic_titles = 1
url_prefixCambia la ruta URL habitual para Thrukurl_prefix = /
use_timezoneCambia la zona horaria respecto de la predeterminada. Sólo usar esta opción si hay problemas con la visualización de timestampsuse_timezone = CET
mobile_agentEspecifica los user-agent que se redireccionarán al plugin móvil (si está activado)mobile_agent=iPhone,Android,IEMobile
default_themeTema predeterminado para todos los usuariosdefault_theme = Thruk
first_day_of_weekPrimer día de la semana. Se utiliza en los reportes
Sunday: 0 Monday: 1
first_day_of_week = 0
report_use_temp_filesReportes grandes usarán archivos temporales para evitar el uso de memoria. Con report_use_temp_files se puede ajustar la duración en días del reporte que hará uso de archivos temporales. El valor predeterminado es 14 días, así que por ejemplo el informe last31days utilizará archivos temporales, el thisweek no. Se puede desactivar ajustando a 0.report_use_temp_files = 14
report_max_objectsNo crear informes con más equipos/servicios que este número. El propósito es no sobrecargar el servidor debido a uso de memoria. Aumente este número si es necesarioreport_max_objects = 1000
start_pageEste enlace se utilizará como página de iniciostart_page = /thruk/main.html
home_linkEste enlace se utiliza cada vez que se hace clic en uno de los principales logotipos. Predeterminadamente los logotipos son de Thruk y el enlace le llevará a la página de Thrukhome_link = http://www.thruk.org
documentation_linkEste enlace es utilizado para acceder a los datos de Documentacióndocumentation_link = /thruk/docs/
all_problems_linkEnlace donde se muestran los problemas detectadosall_problems_link = /thruk/cgi-bin/status.cgi?…
allowed_frame_linksPatrones de enlaces permitidos a mostrar en el marco de Thrukallowed_frame_links = http://intranet.my-company.com
allowed_frame_links = https://wiki.my-company.com

Opciones de autorización

ValorDescripciónEjemplo
can_submit_commandsPermitir que enviar comandos por defecto para todos los contactoscan_submit_commands = 1
command_disabledDeshabilitar comandos específicos. Se puede utilizar múltiples veces para deshabilitar varios comandos.
El número se puede encontrar en el parámetro CGI 'cmd_typ' en los enlaces de la página de comandos.
Se pueden utilizar rangos.
command_disabled = 14
command_disabled = 35
command_disabled = 17-34,50-65
make_auth_user_lowercaseConvertir nombre de usuario autenticado a minúsculasmake_auth_user_lowercase = 1
make_auth_user_uppercaseConvertir nombre de usuario autenticado a mayúsculasmake_auth_user_uppercase = 1
make_auth_replace_regexConvertir nombre de usuario autenticado, utilizando expresiones regulares.Eliminar el @ y todo lo que viene despúes dentro de un nombre de usuario
make_auth_replace_regex = s/^(.*?)@.*/$1/gmx
use_strict_host_authorizationConfigurar para que los usuarios solo vean los hosts/servicios donde estan definidos como contactouse_strict_host_authorization = 1
csrf_allowed_hosts
max_process_memory

Configuración de CGI

FAQ

Plugins

Themas

Avanzado

Business Process

Dashboard

Reportes de SLA

Como trabajan

La generación de los reportes SLA consisten en :

  • Configuración del reporte
  • Plantilla del reporte
  • Convertir el reporte HTML en PDF
  • Opcionalmente ser envíados por email

Configuración del reporte

Se pueden crear y ajustar las opciones del reporte en la sección de Reportes. El plugin de reportes debe estar habilitado. Luego se debe seleccionar una plantilla para el reporte. Luego de seleccionar la plantilla hay opciones específicas.

Plantillas de reporte

Todas las plantillas usadas para los reportes se almacenan en la siguiente ubicación 'plugins/plugins-enabled/reports2/templates/reports'. Se pueden ajustar o sobreescribir todas las plantillas que sean necesarias dentro del subdirectorio 'reports' o se puede establecer por medio de la opción 'user_template_path'.

Nomenclatura de directorios del agregado de reportes
reportsContiene los reportes seleccionables
compContiene los componentes utilizados por los reportes
localeContiene las opciones de localización
styleContiene las hojas de estilo CSS

Las plantillas fueron desarrolladas utilizando Template::Toolkit documentado en : http://template-toolkit.org/docs/manual/index.html

Conversión

El reporte generado en HTML, puede ser convertido a PDF utilizando wkhtml2pdf con xvfb. Ambas herramientas deben ser instaladas en el mismo equipo que Thruk. Hay una descarga en formato binario de wkhtml2pdf disponible en : http://code.google.com/p/wkhtmltopdf/. Utilizar una version igual o mayor a 0.11.

Envío de reportes por email

Se puede enviar fácilmente reportes de disponibilidad SLA por email. Lo único que se necesita es establecer las opciones de envío en la configuración. También es posible enviar un mismo reporte múltiples veces.

Customized Reports

Los reportes pueden ser personalizados por medio de HTML y CSS. Los reportes en general tiene bloques específicos que detallan los pasos para su producción.

  • styles
  • edit
  • prepare
  • render
  • mail

Hojas de estilo

Personalizar las hojas de estilos CSS es realmente simple. Para ellos es necesario crear un un archivo 'reports/style/custom.tt' dentro de 'user_template_path'.

Ejemplo :

<style type="text/css">
/* override css styles */
BODY {
    font-family: arial, sans-serif;
    font-size: 11px;
    line-height: 18px;
    font-size: 16px;
}
</style>
 
<script language="javascript" type="text/javascript">
/* add complete new elements by javascript */
  jQuery(document).ready(function() {
    jQuery('<img src="' + url_prefix + 'themes/Thruk/images/logo_thruk.png">').insertBefore('DIV.page.cover DIV.titletext');
  });
</script>

Si eso no es suficiente, además se puede cambiar cada plantilla utilizada para crear los reportes.

Bloque de edición

El bloque de edición contiene elementos de configuración utilizados para la generación del reporte. El bloque es el encargado de definir la página de configuración que se presenta cuando alguien elige crear o editar un reporte de este tipo. Básicamente este bloque contiene todos los campos obligatorios y opcionales utilizados para el reporte.

Ejemplo :

[% IF block == 'edit' %]
  [%
    required_fields = [
        { 'host'       => [ 'Host',        'hosts',         ''              , '', 1 ] },
        { 'timeperiod' => [ 'Timeperiod',  'rptimeperiod',  'last12months'          ] },
    ];
  %]
[% END %]

La clave en hash define el parámetro que definirá dicho valor. Cada campo tiene que apuntar a una matriz con al menos 3 valores. La opción de requerido es opcional.

  • Nombre
  • Tipo
  • Valor por defecto
  • Opción de requerido

Bloque de preparación

El bloque de preparación se utiliza para recopilar datos utilizados en el reporte. Por lo general, se ha utilizado para obtener datos sobre la disponibilidad a través livestatus o recuperar eventos de los archivos de registro.

Ejemplo :

[% IF block == 'prepare' %]
  [%
    set_unavailable_states(param.unavailable);
    calculate_availability();
  %]
[% END %]

Se pueden utilizar las funciones disponibles en http://www.thruk.org/api/Thruk/Utils/Reports/Render.html

Bloque de renderizado

El bloque de renderizado define la disposición del reporte.

Ejemplo :

[% IF block == 'render' %]
  [% PROCESS 'reports/locale/en.tt' %]
  [%
    title        = 'Hello World Report'
    subtitle     = r.name
    coverdetails = [ 'Report Timeperiod:', get_report_timeperiod(start, end, reportDateFormat),
                     'Host:', param.host,
                   ]
  %]
 
  [% WRAPPER 'reports/comp/report.tt' %]
    [% WRAPPER 'reports/comp/page_cover.tt' %][% END %]
    [% WRAPPER 'reports/comp/page_standard.tt' %]
      <b>hello world</b>
    [% END %]
  [% END %]
[% END %]

Este reporte contendrá dos páginas. En primero lugar dentro de report.tt definirá el diseño básico del reporte y contendrá las hojas de estilo. Entonces se deberá definir algunos parámetros utilizados por la portada. 'r' es una referencia al objeto del informe, en este ejemplo solo se utiliza como título secundario. 'converdetails' es una lista de nombres/valores, que se utiliza en los detalles a mostrar en la portada. Finalmente tenemos 'Hello World Report' en una página standard. El contenido puede tener etiquetas HTML estándar, como tablas e imágenes también.

Bloque de email

Este bloque define la imagén visual que tendrá el email en el cual se adjuntará el reporte a enviar.

Ejemplo :

[% IF block == 'mail' +%]
SUBJECT: Report: [% r.name %]
 
Your report is attached.
 
[% IF r.desc %]Description: [%+ r.desc %][% END %]
[%+ END %]

Utilizamos el nombre del reporte 'r.name' como asunto y ponemos la descripción del reporte 'r.desc' en el cuerpo del mensaje.

Renderizado personalizado

Es posible crear un módulo en Perl llamado 'Thruk::Utils::Reports::CustomRender', que estará disponibile automáticamente, por lo que las funciones de dicho módulo se podrán utilizar en las plantillas de reportes.

Action Menu

JSON Exporting

Logfile Cache

Logfiles

Server Side Includes

CLI & Scripting

thruk - Utilidad de línea de comandos para la GUI de Monitoreo Thruk

Este script da acceso a diversas partes de la GUI Thruk y permite generar informes de Excel, exportación CSV o cualquier otra URL usando la línea de comandos y sin pasar por el servidor web. Con esta herramienta se hace que sea fácil la forma de enviar reportes periódicos por cron/mail.

Lista de backends disponibles:

%> thruk -l

Exportar el log de evento a un archivo excel:

%> thruk -A thrukadmin -a 'url=/thruk/cgi-bin/showlog.cgi?view_mode=xls' > eventlog.xls

Las urls pueden ser acortadas. Exportar toda la información de servicios de un archivo Excel:

%> thruk 'status.cgi?view_mode=xls&host=all' > allservices.xls

Exportar datos de disponibilidad de servicio a un archivo CSV:

%> thruk -A thrukadmin -a 'url=avail.cgi?host=all&timeperiod=last7days&csvoutput=1' > all_host_availability.csv

Generar reporte pdf:

%> thruk -a 'report=1' > report.pdf

Generar reporte pdf y enviarlo por email:

%> thruk -a 'reportmail=1'

Re-programar el próximo chequeo para el host localhost para ahora:

%> thruk 'cmd.cgi?cmd_mod=2&cmd_typ=96&host=localhost&start_time=now'

CGI Parameter

Modified Attributes

Benchmarks

API

Thruk::Utils::CLI - Utilidades Colección de secuencias de comandos CLI. Permiten acceder a las estructuras internas y cambiar la información de configuración.

Rutas de búsqueda de librerias para el paquete Thruk :

/usr/share/thruk/lib
/usr/share/thruk/plugins/plugins-available/conf/lib
/usr/lib/thruk/perl5

Ruta de la configuración del Framework Catalyst :

/etc/thruk

Inclusión de los valores de configuración :

use lib qw(/usr/share/thruk/lib /usr/share/thruk/plugins/plugins-available/conf/lib /usr/lib/thruk/perl5);
$ENV{ CATALYST_CONFIG } = "/etc/thruk";

Scripts de ejemplo

list_hosts.pl
#!/usr/bin/perl
use Thruk::Utils::CLI;
my $cli   = Thruk::Utils::CLI->new;
my $odb   = $cli->get_object_db();
my $hosts = $odb->get_objects_by_type('host');
printf("%-20s   %s\n", "Host", "File");
print("===========================================================\n");
for my $h (@{$hosts}) {
    printf("%-20s   %s:%d\n", $h->get_primary_name(), $h->{'file'}->{'display'}, $h->{'line'});
}
dump_services.pl
#!/usr/bin/perl
use Thruk::Utils::CLI;
my $states = {
    '0' => 'Ok',
    '1' => 'Warning',
    '2' => 'Critical',
    '3' => 'Unknown',
};
my $cli      = Thruk::Utils::CLI->new;
my $db       = $cli->get_db();
my $services = $db->get_services();
printf("%-20s   %-30s %-10s\n", "Host", "Service", "Status");
print("===============================================================\n");
for my $s (@{$services}) {
    printf("%-20s   %-30s %-10s\n", $s->{'host_name'}, $s->{'description'}, $states->{$s->{'state'}});
}

contacts2csv /tmp/object.cache > /tmp/contacts.csv

contacts2csv.pl
#!/usr/bin/perl
use Pod::Usage;
use Monitoring::Config;
 
if(!defined $ARGV[0]) {
    pod2usage( { -verbose => 2,  -exit => 3, -message => "\nERROR: missing argument: object.cache\n\n" } );
}
if(!-f $ARGV[0]) {
    pod2usage( { -verbose => 2,  -exit => 3, -message => "\nERROR: ".$ARGV[0].': '.$!."\n\n" } );
}
 
my $odb      = Monitoring::Config->new({ obj_file => $ARGV[0], 'force' => 1 })->init();
my $contacts = $odb->get_objects_by_type('contact');
my $groups   = $odb->get_objects_by_type('contactgroup');
my $def      = $odb->get_default_keys('contact', { no_alias => 1, sort => 1 });
 
# convert groups
my $groups_by_contact = {};
for my $g (@{$groups}) {
    my $name = $g->{'conf'}->{'contactgroup_name'};
    for my $m (@{$g->{'conf'}->{'members'}}) {
        $groups_by_contact->{$m}->{$name} = 1;
    }
}
 
# print header
print join(';', map(ucfirst, @{$def})), ";Groups\n";
 
# print data
for my $o (@{$contacts}) {
    for my $attr (@{$def}) {
        if(!defined $o->{'conf'}->{$attr}) {
            print ";";
        } else {
            if(ref $o->{'conf'}->{$attr} eq 'ARRAY') {
                print join(',', @{$o->{'conf'}->{$attr}}), ";";
            } else {
                print $o->{'conf'}->{$attr}, ";";
            }
        }
    }
    my $name = $o->{'conf'}->{'contact_name'};
    print join(',', keys %{$groups_by_contact->{$name}});
    print "\n";
}

objectcache2csv /tmp/object.cache host > /tmp/hosts.csv
objectcache2csv /tmp/object.cache service > /tmp/hosts.csv

objectcache2csv.pl
#!/usr/bin/perl
use Pod::Usage;
use Monitoring::Config;
 
if(!defined $ARGV[0]) {
    pod2usage( { -verbose => 2,  -exit => 3, -message => "\nERROR: missing argument: object.cache\n\n" } );
}
if(!defined $ARGV[1]) {
    pod2usage( { -verbose => 2,  -exit => 3, -message => "\nERROR: missing argument: object type\n\n" } );
}
if(!-f $ARGV[0]) {
    pod2usage( { -verbose => 2,  -exit => 3, -message => "\nERROR: ".$ARGV[0].': '.$!."\n\n" } );
}
 
my $odb  = Monitoring::Config->new({ obj_file => $ARGV[0], 'force' => 1 })->init();
my $objs = $odb->get_objects_by_type($ARGV[1]);
my $def  = $odb->get_default_keys($ARGV[1], { no_alias => 1, sort => 1 });
 
# print header
print join(';', map(ucfirst, @{$def})), "\n";
 
# print data
for my $o (@{$objs}) {
    my $first = 1;
    for my $attr (@{$def}) {
        if(!defined $o->{'conf'}->{$attr}) {
            print ";" unless $first;
            $first = 0;
        } else {
            if(ref $o->{'conf'}->{$attr} eq 'ARRAY') {
                print join(',', @{$o->{'conf'}->{$attr}}), ";";
            } else {
                print $o->{'conf'}->{$attr}, ";";
            }
        }
    }
    print "\n";
}

Acerca de la Guía

Esta guía no oficial esta inspirada en la documentación original de Thruk. Está pensada para ir presentando casos de uso que se van dando en la operatoria día a dia.

Thruk es un proyecto muy bueno que me ayuda en mostrar mi trabajo día a día y tiene una comunidad muy activa. Si estas leyendo esto y estas siendo beneficiado por Thruk, te invito a realizar una donación al proyecto

manuales/nagios/thruk.1427727471.txt.gz · Última modificación: 2015/03/30 14:57 por cayu