Files @ dd9f9c48e1ed
Branch filter:

Location: libtransport.git/munin/spectrum2_ - annotation

Jan Kaluza
Do not try to store buddies with empty name and clear m_buddies after storing
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);
}