Announcement

Collapse
No announcement yet.

Infourl Linkinfourltochange_xx

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • sxadov
    replied
    Je viens de terminer les quelques finiolages du script, que vous trouverez ci-dessous.???

    Leave a comment:


  • ponne
    replied
    Bonjour !

    Je viens de terminer les quelques finiolages du script, que vous trouverez ci-dessous.

    Pour rappel, ce script regénère une map PHP-WeatheMmap qui a déjà été créée une fois manuellement, quand par exemple Centreon est réinstallé, et que l'ont veut retrouver sa carte sans devoir se retaper ce qui a déjà été réalisé.

    Pour le moment, les données nécessaires à la création de la carte sont écrites en dur dans le code, et évidemment sont spécifiques à la carte que je veux créer. (host name, service, coordonnées,...).

    Si le temps me le permet, je pousserais le développement plus loin, pour avoir au final, un listage des hôtes et de leur service pouvant être associé aux liens ainsi qu'une carte vierge qui donnerait les bonnes coordonnées.
    Peut-être serait-il alors intéressant d'utiliser un tel procédé pour accélérer la création de carte, nottement, en enlevant les temps d'attentes entre chaque action réalisée.

    Bref, voici le code !

    Vos commentaires sont les bienvenus !

    Code:
    <?php
    
    //script-creation-carteweathermap-switchs.php
    
    // Variables à modifier :
    //----------------
    $map_name = "MAP-PARFAIT";
    $file_path = "/usr/local/centreon/www/modules/php-weathermap/configuration/pwm-editor/configs/$map_name";
    //-----------------------------
    
    // Tableaux :
    //----------------
    $nodes = array(
    "description" => array ("host_name", "coordonates", "host_id", "node"),
    array ("z-126-cata2960a-48", "159 81"),
    array ("z-126-cata2960b-48", "346 258"),
    array ("z-126-cata2950a-24", "519 81"),
    array ("z-126-cata2950b-24", "527 436"),
    array ("z-126-catasan1-24", "95 267"),
    array ("z-126-catasan2-24", "115 458")
    );
    
    $links = array(
    "description" => array ("host_start", "host_end", "service_description", "bandwidth", "service_id"),
    array ("0", "2", "z-check trafic int FastEthernet0#S#1", "100M"),
    array ("0", "4", "z-check trafic int GigabitEthernet0#S#1", "1024M"),
    array ("0", "1", "z-check trafic int GigabitEthernet0#S#2", "1024M"),
    array ("1", "3", "z-check trafic int FastEthernet0#S#1", "100M"),
    array ("1", "5", "z-check trafic int GigabitEthernet0#S#1", "1024M")	
    );
    
    // Nombre d'élément dans les tableaux
    $nb_nodes = count ($nodes);
    $nb_links = count ($links);
    //-----------------------------
    
    //Première partie du fichier :
    //----------------
    $chaine = "# Automatically generated by script-creation-carteweathermap-switchs.php
    
    WIDTH 800
    HEIGHT 600
    
    TITLE
    KEYPOS 656 413 Charge Trafic
    
    KEYTEXTCOLOR 0 0 0
    KEYBGCOLOR 255 255 255
    BGCOLOR 255 255 255
    TITLECOLOR 0 0 0
    TIMECOLOR 0 0 0
    SCALE 1 10   140 0 255
    SCALE 10 25   32 32 255
    SCALE 25 40   0 192 255
    SCALE 40 55   0 240 0
    SCALE 55 70   240 240 0
    SCALE 70 85   255 192 0
    SCALE 85 100   255 0 0
    
    # End of global section
    
    # DEFAULT definitions:
    LINK DEFAULT
            WIDTH 5
            BANDWIDTH 100M
    
    # End of DEFAULTS section
    
    # Node definitions:
    ";
    //-----------------------------
    
    // Création des noeuds 
    //----------------
    mysql_connect("localhost", "root", "");
    mysql_select_db("centreon");
    
    $time = time();
    
    $i=0;
    while ( $i < $nb_nodes)
    {
    	$host_name = $nodes[$i][0];
    	$sql = "SELECT host_id FROM host WHERE host_name = '" . $host_name . "'";
    	$retour = mysql_query($sql);
    	$donnees = mysql_fetch_array($retour);
    	$host_id = $donnees['host_id'];
    	$nodes[$i][2] = $host_id;
    	$position = $nodes[$i][1];
    	$node_time = $time + $i;
    	$tmp = "node".$node_time;
    	$nodes[$i][3] = $tmp;
    	$node = $tmp;
    
    	$chaine = $chaine . "
    NODE $node    
    	LABEL $host_name
    	INFOURL NODEINFOURLTOCHANGE_$host_id 
    	POSITION $position
    	";
    	
    // Associer les nodes aux hôtes
    	$sql = "INSERT INTO `pwm_host_node_relation` (`phnr_id`, `host_host_id`, `node_id`) 
    	                                      VALUES (NULL, '$host_id', '$node')";
    	mysql_query($sql);
    	
    	$i++;
    }
    
    mysql_close();
    //-----------------------------
    
    // Recherche de host_id et service_id
    //----------------
    $i=0;
    while ($i < $nb_links)
    	{
    	$tmp = $links[$i][0];
    	$host_id = $nodes[$tmp][2];
    	
    	$sql = "SELECT hostgroup_hg_id FROM hostgroup_relation WHERE host_host_id = '" . $host_id . "'";
    	$retour = mysql_query($sql);
    	$donnees = mysql_fetch_array($retour);
    	$hostgroup_hg_id = $donnees['hostgroup_hg_id'];
    	
    	$service_description = $links[$i][2];
    	$sql = "SELECT service.service_id FROM service, host_service_relation WHERE service.service_description = '".$service_description."' AND host_service_relation.hostgroup_hg_id ='".$hostgroup_hg_id."' AND service.service_id = host_service_relation.service_service_id";
    	$retour = mysql_query($sql);
    	$donnees = mysql_fetch_array($retour);
    	$service_id = $donnees['service_id'];
    	$links[$i][4] = $service_id;
    	$i++;
    	}
    //----------------------------
    
    // Suite du fichier :
    //----------------
    $chaine = $chaine ."
    
    # End of NODE section
    
    # Link definitions:
    ";
    //----------------------------
    
    // Création des liens
    //----------------
    mysql_connect("localhost", "root", "");
    mysql_select_db("cds");
    
    $i=0;
    while ( $i < $nb_links)
    {
    	$sql = "SELECT id FROM index_data WHERE host_id = '" . $host_id . "' AND service_id = '" . $service_id . "'";
    	$retour = mysql_query($sql);
    	$donnees = mysql_fetch_array($retour);
    	$index_id = $donnees['id'];
    	
    	$sql = "SELECT metric_id FROM metrics WHERE index_id = '" . $index_id ."'";
    	$retour = mysql_query($sql);
    	
    	$j=1;
    	while ($donnees = mysql_fetch_array($retour))
    	{
    		$tmp = "metric_id".$j;
    		${$tmp} = $donnees['metric_id'];
    		$j++;
    	}
    
    	$n1 = $links[$i][0];
    	$n2 = $links[$i][1];
    	$node1 = $nodes[$n1][3];
    	$node2 = $nodes[$n2][3];
    	$bandwidth = $links[$i][3];
    	
    	$chaine = $chaine ."
    LINK $node1-$node2
    	INFOURL LINKINFOURLTOCHANGE_$index_id
    	TARGET /usr/local/centreon/ODS/$metric_id1.rrd /usr/local/centreon/ODS/$metric_id2.rrd
    	NODES $node1 $node2
    	BANDWIDTH $bandwidth
    	";
    
    	$i++;
    }
    
    mysql_close();
    //-----------------------------
    
    // Insertion des liens et service y étant associés + nom de la nouvelle carte 
    //----------------
    	mysql_connect("localhost", "root", "");
    	mysql_select_db("centreon");
    
    $i=0;
    while ( $i < $nb_links)
    {
    	$tmp = $links[$i][0];
    	$host_id = $nodes[$tmp][2];
    	$service_id = $links[$i][4];
    	$n1 = $links[$i][0];
    	$n2 = $links[$i][1];
    	$node1 = $nodes[$n1][3];
    	$node2 = $nodes[$n2][3];
    	
    	$sql= "INSERT INTO `pwm_host_link_relation` (`phlr_id`, `host_host_id`, `service_service_id`, `node_start_id`, `node_end_id`) 
    	                                     VALUES (NULL, '$host_id', '$service_id', '$node1', '$node2')";
    	mysql_query($sql); 
    	
    	$sql = "INSERT INTO `pwm_maps` (`pwm_id`, `pwm_name`, `pwm_alias`, `pwm_comment`)
                            VALUES (NULL, '$map_name', '$map_name', 'Script-Automatique')";
    	mysql_query($sql);
    	
    	$i++;
    }	
    
    mysql_close();
    //-----------------------------
    
    // Fin du fichier 
    //----------------
    $chaine = $chaine ."
    
    # End of LINK section
    
    # That's All Folks!";
    //-----------------------------
    
    // Création du fichier 
    //----------------
    if (!$fp = fopen("$file_path","w")) {
    	echo "Echec de l'ouverture du fichier";
    	exit;
    }
    else {
    	fputs($fp,$chaine);
    }
    
    fclose($fp);
    //-----------------------------
    
    ?>

    Leave a comment:


  • DonKiShoot
    replied
    Dépose le sur le forum si cela peut servir a quelqu'un d'autre ou devenir une fonction de centreon

    Leave a comment:


  • ponne
    replied
    Ok je l'ai trouvé...

    c'est l'id de la table "index_data" !

    Donc ça fait que je peux finir ce script !

    Pour ceux qui veulent en savoir plus ...

    Leave a comment:


  • ponne
    started a topic Infourl Linkinfourltochange_xx

    Infourl Linkinfourltochange_xx

    Bonjour !

    Je suis en train de travailler sur un script qui recréerait une map php-weathermap, quand par exemple Centreon est réinstallé, pour ne pas devoir se retaper la création manuellement.
    On ne peut pas faire de backup du fichier modules/php-weathermap/configuration/pwm-editor/map pour le réinsérrer par la suite, vu que les informations pourraient changer (base rrd par exemple).

    Il me manque juste un élément, dans la définition d'un lien :

    Code:
    LINK node1205921562-node1205921119
            INFOURL LINKINFOURLTOCHANGE_63
            TARGET /usr/local/centreon/ODS/122.rrd /usr/local/centreon/ODS/123.rrd
            NODES node1205921562 node1205921119
    LINKINFOURLTOCHANGE_xx : quel est le numéro à reprendre de la BD et à mettre à cet endroit pour avoir le lien correcte?

    Je pensais au début que c'était "hsr_id", ce qui n'est pas le cas.

    En vous remerciant pour vos futures réponses !

    Si ça intéresse quelqu'un, je pourrai montrer ce que le script réalise

    Bonne journée!
Working...
X