The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

YATG::Store::Disk - Back-end module to store polled data to disk

VERSION

version 5.140510

DESCRIPTION

This module implements part of a callback handler used to store SNMP data to disk quickly, although not necessarily compactly. Disk is cheaper than CPU, after all.

Our recommendation is that disk-based storage only be used with Interface Indexed SNMP OIDs. The module will work with other results but retrieval will be a bit messier, and we have not really tested it.

Given a location on your filesystem, each result of the poll of each SNMP OID is written to a file. There is one file per OID per "port" per device. In this context "port" might be a real network interface such as GigabitEthernet5/1 or an index, if say the values are CPU loads and there are a few CPUs.

Input to the module is a data structure with SNMP poll results, like so:

 $results->{ip}->{leaf}->{port} = {value}

And then the value will get written to a file:

 $root/ip/leaf/port/$timestamp,$interval

Here, $root is set in the configuration (see below). The port name is munged to translate non-alphanumeric characters to a dot (so it's filesystem-safe on common OSes). The $timestamp is set when the file is created (if it's the first storage for this ip/leaf/port combination), and the $interval is read from the yatg_updater configuration as the SNMP polling interval.

With this data encoded in the filename and path, the content of the file is each value on its own line. The timestamp of the first line in the file is that of the filename, and each subsequent line is an $interval in the future from that. The file is padded out when there are missing data values.

Most of this you don't really need to worry about, because you get data back using the YATG::Retrieve::Disk module.

REQUIREMENTS

Install the following additional modules to use this plugin:

CONFIGURATION

The only configuration you need to provide is for the file path of the $root for data storage. Set this in the main configuration, the default being /var/lib/yatg:

 yatg:
     disk_root: '/tmp/yatg'

Note that the user under which the yatg_updater process runs must be able to create files and directories and write to them in this location.

SEE ALSO

Tie::File::FixedRecLen::Store

AUTHOR

Oliver Gorwits <oliver@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2014 by University of Oxford.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.