Wednesday, February 25th, 2009 | Author: Nico

eth0Au boulot j’ai remplacé cacti par munin. Munin c’est choupi, la conf est en flat file mais ça a deux défauts, ou un selon le point de vue : le munin-cgi-graph est tout simplement moisi car d’une lenteur sans nom, et générer les images lors du poll c’est long. Sauf quand on tombe sur ce petit hack convivial qui permet de lancer en parallèle la génération pour X nodes. Malheureusement, l’exemple donné en lien n’est valable que pour la version du trunk (au moment ou j’écris ceci) et pas pour la version 1.2.6 livrée avec lenny. J’ai donc modifié mon munin-graph en “portant” le hack disponible. Résultat : 2min30s au lieu de 9min pour la génération de 80 machines (dont certaines avec beaucoup d’infos)

Le code en question :

# Add this to munin-graph
sub myforked_processnode {
        my ($domain, $code) = @_;
 
        my $max=24;
        my $counter = 0;
 
        for my $key ( keys %{$config->{domain}->{$domain}->{node}}) {
                wait unless ++ $counter >= $max;
                #print "Processing ".$key."\n";
                die "Fork failed: $!\n" unless defined (my $pid = fork);
                exit $code -> ($domain,$key,$config->{domain}->{$domain}->{node}->{$key}) unless $pid;
        }
        1 until -1 == wait;
}
 
# Modify process_domain to get :
sub process_domain {
    my ($domain) = @_;
    myforked_processnode($domain, \&process_node);
}

Et voila !

Category: BOFH Life, SysAdmin, Tech
You can follow any responses to this entry through the RSS 2.0 feed. You can skip to the end and leave a response. Pinging is currently not allowed.

3 Responses

  1. Bon ben trop roulez quoi, tu en parlais, tu l’as fait :)

  2. Très bon !
    J’ai modifié ton hack pour qu;i prenne en compte le nombre de cpu/core en fonction de la charge de la machine. : http://www.neuronfarm.net/blog/optimiser-munin-par-rapport-a-votre-nombre-de-core-cpu

  3. Pas mal ta modif :) Les 24 fils est un nombre adapté à ma machine de supervision en fait, et ton hack est bien sympa :)

Leave a Reply