/usr/sbin/octo_rrd is in octopussy 1.0.6-0ubuntu2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98  | #!/usr/bin/perl -w
=head1 NAME
octo_rrd - Octopussy RRD Graphing program
=head1 SYNOPSIS
octo_rrd
=head1 DESCRIPTION
octo_rrd is the program used by the Octopussy Project
to generate RRD Graphs from dispatcher stats
=cut
use strict;
use warnings;
use Readonly;
use AAT::Utils qw( NOT_NULL );
use Octopussy;
use Octopussy::Cache;
use Octopussy::Device;
use Octopussy::FS;
use Octopussy::RRDTool;
Readonly my $PROG_NAME => 'octo_rrd';
exit if (!Octopussy::Valid_User($PROG_NAME));
my @dtypes            = Octopussy::Device::Types();
my $dir_pid           = Octopussy::FS::Directory('running');
my $cache_dispatcher  = Octopussy::Cache::Init('octo_dispatcher');
my $cache_parser      = Octopussy::Cache::Init('octo_parser');
my $msgid_history_max = Octopussy::Parameter('msgid_history_max');
my $old_time          = '';
while (1)
{
    my $time = $cache_dispatcher->get('dispatcher_stats_datetime');
    if (NOT_NULL($time))
    {
        if ($time ne $old_time)
        {    # Update RRDGraph for Octopussy Main page
            my $dtype_stats =
                $cache_dispatcher->get('dispatcher_stats_devicetypes');
            my @dt_stats = ();
            foreach my $dt (@dtypes)
            {
                $dt =~ s/ /_/;
                my $nb = (
                    NOT_NULL($dtype_stats->{$dt})
                    ? $dtype_stats->{$dt}
                    : 0
                );
                push @dt_stats, $nb;
            }
            Octopussy::RRDTool::Syslog_By_DeviceType_Update(\@dt_stats);
            $old_time = $time;
        }
        foreach my $k (sort $cache_parser->get_keys())
        {    # Update RRDGraph for Octopussy Device Dashboard pages
            if ($k =~ /^parser_taxo_stats_(\S+?),(.+)$/)
            {
                my $taxo = $cache_parser->get($k);
                Octopussy::RRDTool::Syslog_By_Device_Service_Taxonomy_Update(
                    $taxo->{datetime}, $1, $2, $taxo->{stats});
                $cache_parser->remove($k);
            }
            if ($k =~ /^parser_msgid_stats_(\d+?)_.+$/)
            {    # Clean older msgid stats older than 120 minutes
                my $minutes = $1;
                if ($time =~ /^(\d{8})(\d\d)(\d\d)$/)
                {
                    my $time_minutes = ($1 * 10_000) + ($2 * 60) + $3;
                    $minutes = ($1 * 10_000) + ($2 * 60) + $3
                        if ($minutes =~ /^(\d{8})(\d\d)(\d\d)$/);
                    $cache_parser->remove($k)
                        if (($time_minutes - $msgid_history_max) > $minutes);
                }
            }
        }
    }
    sleep 5;
}
=head1 AUTHOR
Sebastien Thebert <octo.devel@gmail.com>
=head1 SEE ALSO
octo_dispatcher, octo_extractor, octo_parser, octo_uparser, octo_reporter, 
octo_scheduler
=cut
 |