mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
138 lines
3.6 KiB
Perl
Executable File
138 lines
3.6 KiB
Perl
Executable File
#!/usr/local/bin/perl -w
|
|
# -*- cperl -*-
|
|
|
|
=head1 NAME
|
|
|
|
shoutcast online - Munin plugin to show online for shoutcast v1.9.8
|
|
|
|
=head1 CONFIGURATION
|
|
|
|
This shows the default configuration of this plugin. You can override
|
|
the status URL.
|
|
|
|
[shoutcast*]
|
|
env.url http://localhost:8000/7.html
|
|
|
|
=head1 MAGIC MARKERS
|
|
|
|
#%# family=auto
|
|
#%# capabilities=autoconf
|
|
|
|
=head1 VERSION
|
|
|
|
1.0
|
|
|
|
=head1 AUTHOR
|
|
|
|
Stanislav Rudenko aka Sandel
|
|
|
|
=head1 LICENSE
|
|
|
|
none
|
|
|
|
=cut
|
|
|
|
my $ret = undef;
|
|
|
|
if (! eval "require LWP::UserAgent;"){
|
|
$ret = "LWP::UserAgent not found";
|
|
}
|
|
|
|
my $URL = exists $ENV{'url'} ? $ENV{'url'} : "http://localhost:8000/7.html";
|
|
|
|
if ( exists $ARGV[0] and $ARGV[0] eq "autoconf" ) {
|
|
if ($ret){
|
|
print "no ($ret)\n";
|
|
exit 0;
|
|
}
|
|
|
|
my $ua = LWP::UserAgent->new(timeout => 30);
|
|
$ua->agent('XML Getter (Mozilla Compatible)');
|
|
|
|
my $request = HTTP::Request->new( 'GET' => $URL );
|
|
$request->protocol('HTTP/1.0');
|
|
|
|
my $response = $ua->request($request);
|
|
|
|
unless ($response->is_success and $response->content =~ /<HTML><meta http-equiv="Pragma" content="no-cache"><\/head><body>/im) {
|
|
print "no (no shoutcast status on $URL)\n";
|
|
exit 0;
|
|
} else {
|
|
print "yes\n";
|
|
exit 0;
|
|
}
|
|
}
|
|
|
|
if ( exists $ARGV[0] and $ARGV[0] eq "config" ) {
|
|
|
|
# Default Settings
|
|
print "graph_title SHOUTcast Online\n";
|
|
print "graph_args --base 1000\n";
|
|
print "graph_category shoutcast\n";
|
|
print "graph_vlabel Connections per \${graph_period}\n";
|
|
|
|
# Max Listeners Allowed to Connect to Server
|
|
print "max_connections.draw AREA\n";
|
|
print "max_connections.colour cdcfc4\n";
|
|
print "max_connections.min 0\n";
|
|
print "max_connections.label Max Slots\n";
|
|
print "max_connections.type GAUGE\n";
|
|
|
|
# Peak Listeners
|
|
print "ax_used_connections.draw AREA\n";
|
|
print "ax_used_connections.colour ffd660\n";
|
|
print "ax_used_connections.min 0\n";
|
|
print "ax_used_connections.label Peak Listeners\n";
|
|
print "ax_used_connections.type GAUGE\n";
|
|
|
|
# DJ-Online tag must be eq to Peak Listeners
|
|
print "djonline_tag.draw AREA\n";
|
|
print "djonline_tag.colour e5ff60\n";
|
|
print "djonline_tag.min 0\n";
|
|
print "djonline_tag.label DJ-Online Tag\n";
|
|
print "djonline_tag.type GAUGE\n";
|
|
|
|
# Max Listeners Connected to Server
|
|
print "all_connections.draw LINE1\n";
|
|
print "all_connections.colour a00e95\n";
|
|
print "all_connections.min 0\n";
|
|
print "all_connections.label Listeners\n";
|
|
print "all_connections.type GAUGE\n";
|
|
|
|
# Max Unique Listeners Connected to Server
|
|
print "unique_connections.draw LINE1\n";
|
|
print "unique_connections.colour 330099\n";
|
|
print "unique_connections.min 0\n";
|
|
print "unique_connections.label Unique Listeners\n";
|
|
print "unique_connections.type GAUGE\n";
|
|
|
|
exit 0;
|
|
}
|
|
|
|
#my $ua = LWP::UserAgent->new(timeout => 30);
|
|
#my $response = $ua->request(HTTP::Request->new('GET',$URL));
|
|
|
|
my $ua = LWP::UserAgent->new(timeout => 30);
|
|
$ua->agent('XML Getter (Mozilla Compatible)');
|
|
|
|
my $request = HTTP::Request->new( 'GET' => $URL );
|
|
$request->protocol('HTTP/1.0');
|
|
|
|
my $response = $ua->request($request);
|
|
|
|
#<HTML><meta http-equiv="Pragma" content="no-cache"></head><body>89,1,453,800,87,128,Kitadani Hiroshi - Bushi</body>
|
|
#print $response->content . "\n\n";
|
|
|
|
if ( $response->content =~ /<HTML><meta http-equiv="Pragma" content="no-cache"><\/head><body>(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(.*)<\/body>/s ) {
|
|
|
|
my $djonline = ( $7 =~ m/Dj-Online/i ) ? $3 : '0';
|
|
|
|
print "max_connections.value $4\n";
|
|
print "ax_used_connections.value $3\n";
|
|
print "djonline_tag.value $djonline\n";
|
|
print "all_connections.value $1\n";
|
|
print "unique_connections.value $5\n";
|
|
} else {
|
|
print "\n";
|
|
}
|