NAME
Nagios::StatusLog, Nagios::(Service|Host|Program)::Status - Perl objects to represent the Nagios status file
DESCRIPTION
Reads the Nagios status log and returns ::Status objects that can be used to get status information about a host. For Nagios version 2.x logs, pass in the Version => 2.0 parameter to new(). And similarly, pass in the Version => 3.0 parameter to new() for Nagios version 3.x logs.
my
$log
= Nagios::StatusLog->new(
Filename
=>
"/var/opt/nagios/status.log"
,
Version
=> 1.0
);
$localhost
=
$log
->host(
"localhost"
);
"status of localhost is now "
,
$localhost
->status(),
"\n"
;
$log
->update();
"status of localhost is now "
,
$localhost
->status(),
"\n"
;
# for Nagios v2.0
my
$log
= Nagios::StatusLog->new(
Filename
=>
"/var/opt/nagios/status.dat"
,
Version
=> 2.0
);
# for Nagios v3.0
my
$log
= Nagios::StatusLog->new(
Filename
=>
"/var/opt/nagios/status.dat"
,
Version
=> 3.0
);
METHODS
- new()
-
Create a new Nagios::StatusLog instance. The object will be initialized for you (using $self->update()). Nagios::StatusLog->new( "/var/opt/nagios/status.log" );
- update()
-
Updates the internal data structures from the logfile. $log->update();
- service()
-
Returns a Nagios::Service::Status object. Input arguments can be a host_name and description list, or a Nagios::Service object.
my
$svc_stat
=
$log
->service(
"localhost"
,
"SSH"
);
my
$svc_stat
=
$log
->service(
$localhost_ssh_svc_object
);
Nagios::Service::Status has the following accessor methods (For V1): host_name description status current_attempt state_type last_check next_check check_type checks_enabled accept_passive_service_checks event_handler_enabled last_state_change problem_has_been_acknowledged last_hard_state time_ok current_notification_number time_warning time_critical process_performance_data notifications_enabled latency scheduled_downtime_depth is_flapping plugin_output percent_state_change execution_time time_unknown failure_prediction_enabled last_notification obsess_over_service flap_detection_enabled
- list_services()
-
Returns an array of all service descriptions in the status log. Services that may be listed on more than one host are only listed once here.
my
@all_services
=
$log
->list_services;
- list_services_on_host()
-
Returns an array of services descriptions for a given host.
my
@host_services
=
$log
->list_services_on_host(
$hostname
);
my
@host_services
=
$log
->list_services_on_host(
$nagios_object
);
- serviceproblems()
-
Returns a hash of all services that are not in an OK state
my
%serviceproblems
=
$log
->serviceproblems();
- host()
-
Returns a Nagios::Host::Status object. Input can be a simple host_name, a Nagios::Host object, or a Nagios::Service object.
my
$hst_stat
=
$log
->host(
'localhost'
);
my
$hst_stat
=
$log
->host(
$host_object
);
my
$hst_stat
=
$log
->host(
$svc_object
);
Nagios::Host::Status has the following accessor methods (for V1): host_name status last_check last_state_change problem_has_been_acknowledged time_up time_down time_unreachable last_notification current_notification_number notifications_enabled event_handler_enabled checks_enabled flap_detection_enabled is_flapping percent_state_change scheduled_downtime_depth failure_prediction_enabled process_performance_data plugin_output
- list_hosts()
-
Returns a simple array of host names (no objects).
my
@hosts
=
$log
->list_hosts;
- list_hostdowntime()
-
Returns a simple array of host downtimes (no objects)
my
@hostdowntimes
=
$log
->list_hostdowntime;
- info() [Nagios v2 & v3 logs only]
-
Returns a Nagios::Info::Status object. It only has two methods, created() and version().
my
$i
=
$log
->info;
printf
"Logfile created at %s unix epoch time for Nagios verion %s\n"
,
$i
->created,
$i
->version;
- contact() [Nagios v3 logs only]
-
Returns a Nagios::Contact::Status object. Input can be a simple contact_name, or a Nagios::Contact object.
my
$c
=
$log
->contact(
'john'
);
my
$c
=
$log
->contact(
$contact_object
);
Nagios::Contact::Status has the following accessor methods (for v3): contact_name modified_attributes modified_host_attributes modified_service_attributes host_notification_period service_notification_period last_host_notification last_service_notification host_notifications_enabled service_notifications_enabled
- hostcomment() [Nagios v3 logs only]
-
Returns a Nagios::Hostcomment::Status object. Input can be a simple host_name, or a Nagios::Host or Nagios::Service object.
my
$c
=
$log
->hostcomment(
'localhost'
);
my
$c
=
$log
->hostcomment(
$localhost_object
);
my
$c
=
$log
->hostcomment(
$localhost_service_object
);
foreach
my
$id
(
sort
keys
%$c
) {
printf
"Host %s has a comment[$id] made by %s on %s: %s"
,
$c
->{
$id
}->host_name,
$c
->{
$id
}->author,
scalar
localtime
$c
->{
$id
}->entry_time,
$c
->{
$id
}->comment_data;
}
Nagios::Hostcomment::Status is a perl HASH, keyed with the Nagios comment IDs, where each ID has the following accessor methods (for v3): host_name entry_type comment_id source persistent entry_time expires expire_time author comment_data
- servicecomment() [Nagios v3 logs only]
-
Returns a Nagios::Servicecomment::Status object. Input can be a simple host_name or Nagios::Host object with a service description or Nagios::Service object, or just a Nagios::Service object by itself.
my
$c
=
$log
->servicecomment(
'localhost'
,
'SSH'
);
my
$c
=
$log
->servicecomment(
$localhost_object
,
$localhost_ssh_svc_object
);
my
$c
=
$log
->servicecomment(
$localhost_ssh_svc_object
);
foreach
my
$id
(
sort
keys
%$c
) {
printf
"Service %s on %s has a comment[$id] made by %s on %s: %s"
,
$c
->{
$id
}->service_description,
$c
->{
$id
}->host_name,
$c
->{
$id
}->author,
scalar
localtime
$c
->{
$id
}->entry_time,
$c
->{
$id
}->comment_data;
}
Nagios::Servicecomment::Status is a perl HASH, keyed with the Nagios comment IDs, where each ID has the following accessor methods (for v3): host_name service_description entry_type comment_id source persistent entry_time expires expire_time author comment_data
- hostdowntime() [Nagios v3 logs only]
-
Returns a Nagios::Hostdowntime::Status object. Input can be a simple host_name, or a Nagios::Host or Nagios::Service object.
my
$d
=
$log
->hostdowntime(
'localhost'
);
my
$d
=
$log
->hostdowntime(
$localhost_object
);
my
$d
=
$log
->hostdowntime(
$localhost_service_object
);
foreach
my
$id
(
sort
keys
%$d
) {
printf
"Host %s has scheduled downtime[$id] made by %s on %s for %.1f hours [%s - %s]: %s"
,
$d
->{
$id
}->host_name,
$d
->{
$id
}->author,
scalar
localtime
$d
->{
$id
}->entry_time, (
$d
->{
$id
}->duration)/3600.0,
scalar
localtime
$d
->{
$id
}->start_time,
scalar
localtime
$d
->{
$id
}->end_time,
$d
->{
$id
}->comment;
}
Nagios::Hostdowntime::Status is a perl HASH, keyed with the Nagios downtime IDs, where each ID has the following accessor methods (for v3): host_name downtime_id entry_time start_time end_time triggered_by fixed duration author comment
- servicedowntime() [Nagios v3 logs only]
-
Returns a Nagios::Servicedowntime::Status object. Input can be a simple host_name or Nagios::Host object with a service description or Nagios::Service object, or just a Nagios::Service object by itself.
my
$c
=
$log
->servicedowntime(
'localhost'
,
'SSH'
);
my
$c
=
$log
->servicedowntime(
$localhost_object
,
$localhost_ssh_svc_object
);
my
$c
=
$log
->servicedowntime(
$localhost_ssh_svc_object
);
foreach
my
$id
(
sort
keys
%$d
) {
printf
"Service %s on %s has scheduled downtime[$id] made by %s on %s for %.1f hours [%s - %s]: %s"
,
$d
->{
$id
}->service_description,
$d
->{
$id
}->host_name,
$d
->{
$id
}->author,
scalar
localtime
$d
->{
$id
}->entry_time, (
$d
->{
$id
}->duration)/3600.0,
scalar
localtime
$d
->{
$id
}->start_time,
scalar
localtime
$d
->{
$id
}->end_time,
$d
->{
$id
}->comment;
}
Nagios::Servicedowntime::Status is a perl HASH, keyed with the Nagios downtime IDs, where each ID has the following accessor methods (for v3): host_name service_description downtime_id entry_time start_time end_time triggered_by fixed duration author comment
- program()
-
Returns a Nagios::Program::Status object. No arguments.
my
$prog_st
=
$log
->program;
Nagios::Program::Status has the following accessor methods (For V1): program_start nagios_pid daemon_mode last_command_check last_log_rotation enable_notifications execute_service_checks accept_passive_service_checks enable_event_handlers obsess_over_services enable_flap_detection enable_failure_prediction process_performance_data
STRUCTURE
This module contains 4 packages: Nagios::StatusLog, Nagios::Host::Status, Nagios::Service::Status, and Nagios::Program::Status. The latter 3 of them are mostly generated at compile-time in the BEGIN block. The accessor methods are real subroutines, not AUTOLOAD, so making a ton of calls to this module should be fairly quick. Also, update() is set up to only do what it says - updating from a fresh logfile should not invalidate your existing ::Status objects.
AUTHOR
Al Tobey <tobeya@tobert.org>
SEE ALSO
Nagios::Host Nagios::Service