using Perl with rrdtool to create and update graphs


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting using Perl with rrdtool to create and update graphs
# 1  
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
# 2  
Old 05-29-2010
Quote:
Originally Posted by jeffersno1
...
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"; 
        }

...
The text in bold, red should be an array and not a scalar.

Maybe you intended to use: keys %resultsHash ?

tyler_durden
# 3  
Old 05-29-2010
Hi tyler_durden

thanks for your reply

this does work however it creates an rrd for all values including the name of the DS (data Store) and its value e.g in my rrd folder is

output of command:

Code:
creating rrd database for Pass30d  ...
creating rrd database for 156   ...
creating rrd database for pass1d   ...
creating rrd database for 52   ...

contents of folder

Code:
-rw-rw-r-- 1 otpuser otpuser 28736 May 29 18:18 Pass30d.rrd  
-rw-rw-r-- 1 otpuser otpuser 28736 May 29 18:18 156.rrd
-rw-rw-r-- 1 otpuser otpuser 28736 May 29 18:18 pass1d.rrd
-rw-rw-r-- 1 otpuser otpuser 28736 May 29 18:18 52.rrd

Is there a way i can just create the names for the DS and use the value to update it.

The reason i had just the below in was so i could just get the names
Code:
foreach $key ($key) {

I would have thought using the below code was to update the value

# insert values into rrd
Code:
foreach $key (%resultsHash) {
        RRDs::update "$rrd/$key[0].rrd",
                "-t", "$key",
                "N:$key:%resultsHash";


Jeffers

Thanks for your help. its much appreciated

Moderator's Comments:
Mod Comment Please use code tags, instead of quoting. That way, neither smileys nor URLs will be parsed

Last edited by pludi; 05-30-2010 at 07:52 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. 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

2. 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

3. 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

4. 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

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. 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

7. 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

8. 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

9. 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
Login or Register to Ask a Question