Intégration de Munin à Drupal

Voici un rapide script pour remonter les graphiques des sondes de Munin sur une page Drupal. Pour donner un exemple, ça donne qui ce trouve sur cette page.

Donc pour commencer, il faut avoir une installation de Drupal et de Munin. Il faut ensuite faire un bon vieux lien symbolique du répertoire ou sont générés les fichiers de munin vers un répertoire visible du web, par exemple de le répertoire 'misc' de Drupal.

@ /var/www/munin/ln -s bonvga.net /var/www/bonvga_v71/misc/munin_dedibox/bonvga.net

Il faut alors créer une nouvelle page sur Drupal avec un format d'entrée de type 'PHP Code' et y copier le suivant :

<?php
// configuration
$path = "/var/www/bonvga_v7/misc/munin_dedibox/bonvga.net/";
$www_path_munin = "http://www.bonvga.net/sites/www.bonvga.net/files/munin_dedibox/bonvga.net/";
$www_path_drupal = "http://www.bonvga.net/sites/www.bonvga.net/files/munin_dedibox/bonvga.net/";
$frequency = "day";
$extention = "png";

// aquisition des fichiers
$munin_list = array();
$munin_list_index = array();
if (
is_dir($path))
{
    if (
$dh = opendir($path))
    {
        while ((
$file = readdir($dh)) !== false)
        {
            if (
ereg("-".$frequency.".".$extention."$",$file))
            {
               
$line = array();
               
$line["file"] = $file;
               
$tmp = explode("-",$file);
               
$line["name"] = $tmp[1];
               
$line["display_name"] = ucfirst(strtolower(str_replace("_"," ",$line["name"])));
               
$line["www_file"] = $www_path_drupal.$file;
               
$line["html"] = str_replace(array($extention,"-".$frequency),array("html",""),$file);
               
$line["www_html"] = $www_path_drupal.$line["html"];
               
$munin_list[] = $line;
               
$munin_list_index[$line["name"]] = count($munin_list)-1;
            }       
        }
       
closedir($dh);
    }
}

if (
count($munin_list)>0)
{
   
// classement alphabetique
   
ksort($munin_list_index);
   
$munin_list_index_keys = array_keys($munin_list_index);
   
    echo
'<div align="right"><a href="http://munin.sourceforge.net/">';
    echo
'<img src="http://www.bonvga.net/sites/www.bonvga.net/files/munin/logo.png" /></a></div>';
    echo
'<p>Liste des graphiques disponibles :</p>';
   
   
// construction de l'index
   
echo '<a id="munin_top" />';
    echo
'<ul>';
    for (
$i=0;$i<count($munin_list_index_keys);$i++)
    {
        echo
'<li>';
        echo
'<a href="'.$_SERVER["REQUEST_URI"].'#'.$munin_list[$munin_list_index[$munin_list_index_keys[$i]]]["name"].'">';
        echo
$munin_list[$munin_list_index[$munin_list_index_keys[$i]]]["display_name"];
        echo
'</a>';
        echo
'</li>';
    }
    echo
'</ul>';
   
   
// construction de la liste d'image
   
for ($i=0;$i<count($munin_list_index_keys);$i++)
    {
        echo
'<div>';
        echo
'<a id="'.$munin_list[$munin_list_index[$munin_list_index_keys[$i]]]["name"].'" />';
        echo
'<h1>'.$munin_list[$munin_list_index[$munin_list_index_keys[$i]]]["display_name"].'</h1>';
        echo
'<a href="'.$munin_list[$munin_list_index[$munin_list_index_keys[$i]]]["www_html"].'" target="munin">';
        echo
'<img src="'.$munin_list[$munin_list_index[$munin_list_index_keys[$i]]]["www_file"].'" />';
        echo
'</a>';
        echo
'<br />';
        echo
'<em>'.$munin_list[$munin_list_index[$munin_list_index_keys[$i]]]["display_name"].'</em>';
        echo
' | <a href="'.$_SERVER["REQUEST_URI"].'#munin_top">Top</a>';
        echo
'</div>';
        echo
'<br />';
    }
}
else
{
    echo
'<p>Pas de statistique pour le moment...</p>';   
}
?>

Il ne reste plus qu'a paramètrer les variables de chemin :

<?php
// chemin absolu vers le contenu de Munin
$path = "/var/www/bonvga_v7/misc/munin_dedibox/bonvga.net/";

// url absolue vers le contenu de Munin (depuis Munin ou Drupal)
$www_path_munin = "http://www.bonvga.net/sites/www.bonvga.net/files/munin_dedibox/bonvga.net/";

// url absolue vers le contenu de Munin (depuis Drupal)
$www_path_drupal = "http://www.bonvga.net/sites/www.bonvga.net/files/munin_dedibox/bonvga.net/";

// type de graphique à remonter (day, week, month ou year)
$frequency = "day";

// extention des images (voir dans la configuration de Munin)
$extention = "png";
?>

Pour terminer, il suffit de sauver la page.

Pour voir une démonstration : cliquez ici.