#!/usr/bin/perl use strict; use Glib; use RRDs; my $host = `hostname`; my $cpus = 3; chomp($host); my $loop = Glib::MainLoop->new; my $timer = Glib::Timeout->add(10000, \&update); $loop -> run; sub create { my $of = $_[0]; RRDs::create( "$of", "-s 10", 'DS:temp:GAUGE:20:0:U', 'RRA:AVERAGE:0.5:1:360', 'RRA:AVERAGE:0.5:6:1440', 'RRA:AVERAGE:0.5:30:2014', 'RRA:AVERAGE:0.5:360:672', 'RRA:AVERAGE:0.5:8640:365', ); &errorcheck; `chmod 640 "$of"`; `chown admin:www-data "$of"`; } sub errorcheck { my $ERR = RRDs::error; print "$ERR\n" if defined($ERR); } sub update { my $now = time; foreach my $d(0 .. $cpus) { open(FH, "/sys/devices/platform/coretemp.$d/temp1_input"); my @a = ; close(FH); foreach my $line(@a) { chomp($line); my $temp = $line / 1000; my $of = "/var/www/apps/cpustats/$host-$d-temp.rrd"; &create($of) unless( -e $of ); if( -e $of ) { RRDs::update( "$of", "$now:$temp", ); &errorcheck; } } } return 1; }