Provided by: libnagios-object-perl_0.21.20-1_all bug

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" );
        print "status of localhost is now ",$localhost->status(),"\n";
        $log->update();
        print "status of localhost is now ",$localhost->status(),"\n";

        # for Nagios v2.0
        my $log = Nagios::StatusLog->new(
                       Filename => "/var/cache/nagios2/status.dat",
                       Version  => 2.0
                  );

        # for Nagios v3.0
        my $log = Nagios::StatusLog->new(
                       Filename => "/var/cache/nagios3/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