Sponsored Content
Top Forums Shell Programming and Scripting using Perl with rrdtool to create and update graphs Post 302425737 by jeffersno1 on Saturday 29th of May 2010 01:42:56 PM
Old 05-29-2010
using Perl with rrdtool to create and update graphs

Hi guys,

im having real difficulty getting my head around perl and rrdtool and was hoping someone could help

I want to run a perl script from cron which retrieves the data every 5 mins, creates .rrd's if not already created, and updates the DS from the reultsHash or $key, then creates the graphs

Because the OID i use are dynamic i have to snmpwalk a table which is fine.


To obtain the data i use:
Code:
use RRDs;

@get_snmp=`snmptable -v 2c -c public 10.123.123.1:1337 STATS-MIB::statsTable`;

to prove it works i print out the data.

Code:
foreach $key (sort keys %resultsHash) { 
print "$key $resultsHash{$key}\n"; 

output is printed as: 
Pass30d 156 
pass1d 52 
pass7d 388 
freepromd 17

i want to create an .RRD for each pass so im trying to put this into a for loop:

so in princible i should be able to do the following, but the .rrd's dont get created ????
Am i doing something fundamentially wrong here ?

Code:
foreach $key ($key) { 
  
  # if rrdtool database doesn't exist, create it 
LINE 52        if (! -e "$rrd/$key.rrd") 
        { 
                print "creating rrd database for $key ...\n"; 
                RRDs::create "$rrd/$key.rrd", 
                        "-s 300", 
                        "DS:pass:DERIVE:600:U:U", 
                        "RRA:AVERAGE:0.5:1:576", 
                        "RRA:AVERAGE:0.5:6:672", 
                        "RRA:AVERAGE:0.5:24:732", 
                        "RRA:AVERAGE:0.5:144:1460"; 
        }

I would expect the creation of rrd's to have worked. I get the error

Use of uninitialized value in concatenation (.) or string at ./st.pl line 52.

Can anyone advise me on what this means??

Many thanks in advance

Jeffers

Last edited by pludi; 05-30-2010 at 07:51 AM.. Reason: Disabled smiles in code for readability
 

9 More Discussions You Might Find Interesting

1. UNIX and Linux Applications

how to create a logfile in unix after insert/update/delete from informix

I am running a Informix-4GL program to insert/update/delete on a particular table (say xxx). Now I want to create a logfile in unix which will store the affected data(say xxx.*) along with user information (say uname,IP address etc.) what command I should use from Informix-4GL ? I have tried the... (0 Replies)
Discussion started by: subhamukh
0 Replies

2. UNIX for Dummies Questions & Answers

linux rrdtool help create graph

I need some help with creating graphs using the rrdtool. I have never used it before. I installed by yum install rrdtool. Basically I have a txt file with these values 432 542 234 531 1004 Does anyone know the syntax of rrdtool to automatically take the values from the txt file and... (1 Reply)
Discussion started by: borderblaster
1 Replies

3. Shell Programming and Scripting

Command to create and update csv file

Hi, I need to create a csv file to store oracle query output. This report need to be created on hourly basis. The csv file report format as "Report_22_Sep_09_13IST.csv". I have the oracle query. Now i need to create and move the oracle query output to the report row by row starting from 3rd row.... (6 Replies)
Discussion started by: Sekar1
6 Replies

4. Shell Programming and Scripting

Perl module script to draw speedometer/gauge graphs

Hi, Has anyone used any perl modules to draw dashboard/gauge graphs similar to a speedometer? I am looking to create some graphs in perl. Please share your thoughts if there are any modules and an example script. Thanks (0 Replies)
Discussion started by: devtakh
0 Replies

5. Red Hat

Create driver update disc for redhat

Hi, I am trying to install redhat into one of my machine, but during boot up from Redhat Dvd, it mention not able to detect my HDD and it need another driver to install into it. Because the machine only have one driver update disc source which is my CD/DVD rom, so i would like to know... (9 Replies)
Discussion started by: cbtang
9 Replies

6. UNIX for Advanced & Expert Users

perl and HP-UX : instmodsh in combination with software depot : update inventory for installed Perl

we create a HP-UX software depot with a new perl-modul. after installation of the software depot, the perl module i can't find with instmodsh in the inventory for installed Perl modules. - i have learned of using instmodsh command : i find out what modules are already installed on my system. ... (0 Replies)
Discussion started by: bora99
0 Replies

7. Shell Programming and Scripting

Can't get While loop working with rrdtool update

I have data in a CSV file that looks like; 1353557880:1.111:123.3 1353557940:1.113:123.3 1353558000:1.118:123.3 1353558060:1.123:123.3 1353558120:1.218:123.3 I'm running the following; while IFS=":" read d a b; do rrdtool update temp.rrd $d:$a:$b; done <temp6 It gives me the following... (2 Replies)
Discussion started by: ottsm
2 Replies

8. Shell Programming and Scripting

Create a specific bash to increase the automatic update on my pi

hi everyone, I just began to be interested about the bash access. I buy a time ago a Raspberry pi, I installed raspbmc and now I would like build a bash to copy everyday all new files inside my server directly on the hard drive in my Pi. So my HDD is directly plug on my pi with usb connect,... (4 Replies)
Discussion started by: nagito34
4 Replies

9. Shell Programming and Scripting

Python-rrdtool try except rrdtool.error module object has no attribute error

I have this code that gives this error on Linux and will be grateful if you can help import rrdtool try: ret_asd = rrdtool.update(myfile.rrd,'N:%s:%s' %(metric1, metric2)); except rrdtool.error, e: print e When i run the above i get the below error except... (1 Reply)
Discussion started by: kaf3773
1 Replies
RRDs(3) 						User Contributed Perl Documentation						   RRDs(3)

NAME
RRDs - Access RRDtool as a shared module SYNOPSIS
use RRDs; RRDs::error RRDs::last ... RRDs::info ... RRDs::create ... RRDs::update ... RRDs::updatev ... RRDs::graph ... RRDs::fetch ... RRDs::tune ... RRDs::times(start, end) RRDs::dump ... RRDs::restore ... RRDs::flushcached ... DESCRIPTION
Calling Sequence This module accesses RRDtool functionality directly from within Perl. The arguments to the functions listed in the SYNOPSIS are explained in the regular RRDtool documentation. The command line call rrdtool update mydemo.rrd --template in:out N:12:13 gets turned into RRDs::update ("mydemo.rrd", "--template", "in:out", "N:12:13"); Note that --template=in:out is also valid. The RRDs::times function takes two parameters: a "start" and "end" time. These should be specified in the AT-STYLE TIME SPECIFICATION format used by RRDtool. See the rrdfetch documentation for a detailed explanation on how to specify time. Error Handling The RRD functions will not abort your program even when they can not make sense out of the arguments you fed them. The function RRDs::error should be called to get the error status after each function call. If RRDs::error does not return anything then the previous function has completed its task successfully. use RRDs; RRDs::update ("mydemo.rrd","N:12:13"); my $ERR=RRDs::error; die "ERROR while updating mydemo.rrd: $ERR " if $ERR; Return Values The functions RRDs::last, RRDs::graph, RRDs::info, RRDs::fetch and RRDs::times return their findings. RRDs::last returns a single INTEGER representing the last update time. $lastupdate = RRDs::last ... RRDs::graph returns an ARRAY containing the x-size and y-size of the created image and a pointer to an array with the results of the PRINT arguments. ($result_arr,$xsize,$ysize) = RRDs::graph ... print "Imagesize: ${xsize}x${ysize} "; print "Averages: ", (join ", ", @$averages); RRDs::info returns a pointer to a hash. The keys of the hash represent the property names of the RRD and the values of the hash are the values of the properties. $hash = RRDs::info "example.rrd"; foreach my $key (keys %$hash){ print "$key = $$hash{$key} "; } RRDs::graphv takes the same parameters as RRDs::graph but it returns a pointer to hash. The hash returned contains meta information about the graph. Like its size as well as the position of the graph area on the image. When calling with and empty filename than the contents of the graph will be returned in the hash as well (key 'image'). RRDs::updatev also returns a pointer to hash. The keys of the hash are concatenated strings of a timestamp, RRA index, and data source name for each consolidated data point (CDP) written to disk as a result of the current update call. The hash values are CDP values. RRDs::fetch is the most complex of the pack regarding return values. There are 4 values. Two normal integers, a pointer to an array and a pointer to a array of pointers. my ($start,$step,$names,$data) = RRDs::fetch ... print "Start: ", scalar localtime($start), " ($start) "; print "Step size: $step seconds "; print "DS names: ", join (", ", @$names)." "; print "Data points: ", $#$data + 1, " "; print "Data: "; for my $line (@$data) { print " ", scalar localtime($start), " ($start) "; $start += $step; for my $val (@$line) { printf "%12.1f ", $val; } print " "; } RRDs::times returns two integers which are the number of seconds since epoch (1970-01-01) for the supplied "start" and "end" arguments, respectively. See the examples directory for more ways to use this extension. NOTE
If you are manipulating the TZ variable you should also call the POSIX function tzset(3) to initialize all internal state of the library for properly operating in the timezone of your choice. use POSIX qw(tzset); $ENV{TZ} = 'CET'; POSIX::tzset(); AUTHOR
Tobias Oetiker <tobi@oetiker.ch> perl v5.12.1 2010-03-22 RRDs(3)
All times are GMT -4. The time now is 01:38 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy