aboutsummaryrefslogtreecommitdiffstats
path: root/examples/historical/tools/ping-graph.pl
diff options
context:
space:
mode:
Diffstat (limited to 'examples/historical/tools/ping-graph.pl')
-rwxr-xr-xexamples/historical/tools/ping-graph.pl62
1 files changed, 62 insertions, 0 deletions
diff --git a/examples/historical/tools/ping-graph.pl b/examples/historical/tools/ping-graph.pl
new file mode 100755
index 0000000..2cd6996
--- /dev/null
+++ b/examples/historical/tools/ping-graph.pl
@@ -0,0 +1,62 @@
+#! /usr/bin/perl
+
+# Makes latency-against-time graphs, one per switch.
+
+use warnings;
+use strict;
+use DBI;
+use lib '../include';
+use nms;
+
+BEGIN {
+ require "../include/config.pm";
+ eval {
+ require "../include/config.local.pm";
+ };
+}
+
+my $dbh = db_connect();
+my $switches = $dbh->selectall_hashref('SELECT sysname,switch FROM switches ORDER BY sysname', 'sysname');
+if (1) {
+ my %switchfds = ();
+ while (my ($sysname, $switch) = each %$switches) {
+ print "$sysname -> $switch->{switch}\n";
+ open my $fh, ">", "$sysname.txt"
+ or die "$sysname.txt: $!";
+ $switchfds{$switch->{'switch'}} = $fh;
+ }
+
+ my $q = $dbh->prepare('SELECT switch,EXTRACT(EPOCH FROM updated),latency_ms FROM ping');
+ $q->execute;
+
+ my $i = 0;
+ while (my $ref = $q->fetchrow_arrayref) {
+ next if (!defined($ref->[2]));
+ my $fh = $switchfds{$ref->[0]};
+ next if (!defined($fh));
+ print $fh $ref->[1], " ", $ref->[2], "\n";
+ if (++$i % 1000000 == 0) {
+ printf "%dM records...\n", int($i / 1000000);
+ }
+ }
+
+ while (my ($sysname, $switch) = each %$switches) {
+ close $switchfds{$switch->{'switch'}};
+ }
+}
+
+while (my ($sysname, $switch) = each %$switches) {
+ print "$sysname -> $switch->{switch}\n";
+ open my $gnuplot, "|-", "gnuplot"
+ or die "gnuplot: $!";
+ print $gnuplot <<"EOF";
+set timefmt "%s"
+set xdata time
+set format x "%d/%m %H:%M"
+set term png size 1280,720
+set output '$sysname.png'
+set yrange [0:200]
+plot "$sysname.txt" using (int(\$1)):2 ps 0.1
+EOF
+ close $gnuplot;
+}