Files @ 936c0230f178
Branch filter:

Location: libtransport.git/munin/spectrum2_ - annotation

Jan Kaluza
spectrum2_manager target has to depend on pb
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
e71c01ded8f1
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
9c212b8b065b
e71c01ded8f1
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
9c212b8b065b
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
e71c01ded8f1
9c212b8b065b
9c212b8b065b
#!/usr/bin/perl

# config:
# [spectrum2_*]
# env.admin_jid tradmin@host.org
# env.password jid_password
# env.transports icq.host.org xmpp.host.org
#
# symlinks: 
#    spectrum2_backends  spectrum2_memory  spectrum2_users spectrum2_messages spectrum2_messages_sec
#
#
use AnyEvent;
use AnyEvent::XMPP::Client;
use AnyEvent::XMPP::Component;
use AnyEvent::XMPP::Ext::Disco;
use AnyEvent::XMPP::Ext::Version;
use AnyEvent::XMPP::Namespaces qw/xmpp_ns/;
use AnyEvent::XMPP::Util qw/simxml/;
use XML::Simple;
use Time::HiRes qw ( setitimer ITIMER_REAL time );
use strict;
$|=1;

$SIG{ALRM} = sub { exit; };
setitimer(ITIMER_REAL, 30, 1);


my %config=(
    users => {
	title=>'Buddies online',
	vlabel=>'users',
	info=>'Number of users that currently use the spectrum transports.',
	command=>'online_users_count',
	base=>'--base 1000',
	x=>'1',
    },
    backends => {
	title=>'Backends running',
	vlabel=>'backends',
	info=>'Number of backends that currently running.',
	command=>'backends_count',
	base=>'--base 1000',
	x=>'1',
    },
    memory => {
	title=>'Memory usage of transports',
	vlabel=>'megabytes',
	info=>'Memory usage of spectrum transports.',
	command=>'used_memory',
	base=>'--base 1024',
	x=>'1024',
    },
    messages => {
	title=>'Messages send over transport',
	vlabel=>'messages',
	info=>'Messages send over spectrum transports.',
	command=>'',
	base=>'--base 1000',
	x=>'1',
    },
    messages_sec => {
	title=>'Messages send over transport',
	vlabel=>'messages/sec',
	info=>'Messages send per second over spectrum transports.',
	command=>'',
	base=>'--base 1000',
	x=>'1',
    },
);
my @queue=('_out','_in');
$0 =~ /spectrum2_(.+)*$/;
my $func = $1;
exit 2 unless defined $func;
my %tr;
my $count=0;
    foreach (split(' ',$ENV{'transports'})){
        if ($func=~/messages/)
	{
	    $tr{$_."_in"}=$count;
	    $count++;
	    $tr{$_."_out"}=$count;
	    $count++;
	}
	else
	{
	$tr{$_}=$count;
	$count++;
	}
    }

if (exists $ARGV[0] and $ARGV[0] eq "config") 
{
    print "graph_title ".$config{$func}->{'title'}."\n";
    print "graph_vlabel ".$config{$func}->{'vlabel'}."\n";
    print "graph_category spectrum2\n";
    foreach (keys (%tr)){
	print "r".$tr{$_}.".label ".$_."\n";
	if ($func eq 'messages_sec')
	{
	    print "r".$tr{$_}.".type DERIVE\n";
	    print "r".$tr{$_}.".min 0\n";
	}
    }
    print "graph_args ".$config{$func}->{'base'}."\n";
    print "graph_info ".$config{$func}->{'info'}."\n";
    exit 0;
}

binmode( STDOUT);
my $xs=new XML::Simple;
my $cl=AnyEvent::XMPP::Client->new(debug=>0);
my $j=AnyEvent->condvar;
$cl->add_account($ENV{'admin_jid'}.'/'.time,$ENV{'password'});
$cl->reg_cb(
    session_ready => \&cl_sess,
    disconnect => \&cl_disc,
    message => \&cl_msg,
);
$cl->start;
$j->wait;


sub cl_disc
{
my ($cl,$acc,$h,$p,$reas)=@_;
    print "disc ($h:$p) $reas\n";
}
sub cl_sess
{
    my($cl,$acc)=@_;
    foreach (keys (%tr)){
        if ($func=~/messages/)
	{
	    if (s/_in$//)
	    {
		$cl->send_message("messages_from_xmpp",$_,undef,'chat');
	    };
	    if (s/_out$//)
	    {
		$cl->send_message("messages_to_xmpp",$_,undef,'chat');
	    }
	}
	else
	{
	    $cl->send_message($config{$func}->{'command'},$_,undef,'chat');
	}
    }
}
sub cl_msg
{
    my ($cl,$acc,$msg)=@_;
    if ($func=~/messages/)
    {
	print "r".$tr{$msg->from.$queue[-1]}.".value ".int($msg->any_body/$config{$func}->{'x'})."\n";
	delete( $tr{$msg->from.$queue[-1]});
	pop(@queue);
	if ($#queue==-1){@queue=("_out","_in");}
    }
    else
    {
	print "r".$tr{$msg->from}.".value ".int($msg->any_body/$config{$func}->{'x'})."\n";
	delete( $tr{$msg->from});
    }
    exit if (scalar(keys %tr)==0);
}