3
# Plugin to monitor sybase database space usage
9
# You need to add the user to all the databases you want monitored.
11
# Configuration variables:
13
# SYBASE - Sybase home
14
# SYBASE_USER - Username
15
# SYBASE_PASS - Password
18
# $Log: sybase_space.in,v $
19
# Revision 1.1 2004/01/02 18:50:00 jimmyo
20
# Renamed occurrances of lrrd -> munin
22
# Revision 1.1.1.1 2004/01/02 15:18:07 jimmyo
23
# Import of LRRD CVS tree after renaming to Munin
25
# Revision 1.3 2003/11/10 18:41:33 jimmyo
26
# Removed Data::Dumper dependency.
28
# Revision 1.2 2003/11/07 17:43:16 jimmyo
29
# Cleanups and log entries
40
my $user = $ENV{SYBASE_USER} || "monitor";
41
my $pass = $ENV{SYBASE_PASS} || "monitor";
42
my $host = $ENV{SYBASE_HOST} || "localhost";
43
my $db = $ENV{SYBASE_DB} || "master";
45
$ENV{SYBASE} = $ENV{SYBASE} || "/usr/local/sybase";
47
my $dbh = DBI->connect ("dbi:Sybase:$db;host=$host", $user, $pass);
51
die "Could not run DBI::connect\n";
54
my $databases = &list_dbs ($dbh);
56
if (exists $ARGV[0] and $ARGV[0] =~ /^config$/)
58
print "host_name sybase-i.fileflow.com\n";
59
print "graph_title Sybase database space usage\n";
60
print "graph_args -u 100 -l 0\n";
61
print "graph_vlabel %\n";
63
foreach my $db (keys %{$databases})
65
print "$db.label $db\n";
66
print "$db.type GAUGE\n";
67
print "$db.warning 85\n";
68
print "$db.critical 95\n";
75
foreach my $db (keys %{$databases})
77
$db_info = &space_db ($dbh, $db, $db_info);
80
foreach my $db (keys %{$db_info})
82
#print "$db $db_info->{$db}->{used} / $db_info->{$db}->{total} = ", $db_info->{$db}->{used}*100/$db_info->{$db}->{total}, ".\n";
83
print "$db.value ", $db_info->{$db}->{used}*100/$db_info->{$db}->{total}, "\n";
93
if (! $h->do ("use master"))
95
die "Error: could not \"use master\"...\n";
97
my $sth = $dbh->prepare ("select name from sysdatabases");
98
my $rv = $sth->execute;
101
die "Error: could not run \"select name from sysdatabases\"...\n";
104
$dbs = $sth->fetchall_hashref ("name");
115
if (! $h->do ("use $db"))
117
die "Error: could not \"use $db\"...\n";
119
my $sth = $dbh->prepare ("sp_spaceused");
120
my $rv = $sth->execute;
124
die "Error: could not use \"sp_spaceused\"...\n";
128
while (my $d = $sth->fetchrow_arrayref)
130
#print join ('|',@{$d}), "...\n";
131
if ($d->[0] =~ /^$db$/)
133
$dbs->{$db}->{total} = &bytes ($d->[1]);
141
$dbs->{$db}->{used} = &bytes ($d->[0]);
144
} while ($sth->{syb_more_results});
153
if ($val =~ /^\s*([\d\.]+)\s*kb\s*$/i)
157
elsif ($val =~ /^\s*([\d\.]+)\s*mb\s*$/i)
161
elsif ($val =~ /^\s*([\d\.]+)\s*gb\s*$/i)
163
$val = $1*1024*1024*1024;