Announcement

Collapse
No announcement yet.

Erreur RRD / Centreon Debian 9

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

  • Erreur RRD / Centreon Debian 9

    Bonjour à tous,

    Mise en contexte : Je viens de monter toutes les vm de mon lab sous debian 9 depuis deb8. Une de mes vm, celle avec centreon, a necessité pas mal d'ajustement.

    Au passage j'en ai profité pour monter la version de centreon :

    - centreon-broker-2.11.5 => centreon-broker-3.0.7
    - centreon-engine-1.5.1 => centreon-engine-1.7.2
    - centreon-web-2.7 => centreon-web-2.8.9

    Je passe sur les redescentes de paquet pour pouvoir compiler et faire fonctionner l'ensemble. Au final compilation avec gcc-4.9, utilisation de rrdtool-1.4.8-1.2, désactivation de rrdcached.

    Une fois le tout stabilisé, des erreurs de ce type apparaissent dans le log du broker rrd : (toujours la même erreur conversion '' to float, sur différent fichier rrd)

    error: RRD: failed to update value in file '/var/lib/centreon/status/21.rrd': /var/lib/centreon/status/21.rrd: Function update_pdp_prep, case DST_GAUGE - Cannot convert '' to float

    Cela bloque complètement la génération de graphe. Je dois alors purger le fichier rrd en question, le fichier queue et relancer le broker.

    Une idée de l'origine de ce problème ou de comment le résoudre ? je n'avais aucun soucis avec les données des graphes avec la version précédente et aucune modification de service/hote n'a eu lieu depuis l'upgrade.

    Merci.

  • #2
    Trois heures plus tard, nouveau message qui apparaît subitement :
    [1498395542] [0x7f7c1e59c700] error: RRD: failed to update value in file '/var/lib/centreon/status/46.rrd': /var/lib/centreon/status/46.rrd: Function update_pdp_prep, case DST_GAUGE - Cannot convert '' to float
    un fichier de de sortie est créé dans /var/lib/centreon-broker
    -rw-r--r-- 1 centreon-broker centreon-broker 258K juin 25 15:01 central-rrd-master.memory.central-rrd-master-output

    Je le detele, ainsi que le 46.rrd et tout repart comme impeccable.

    Comment


    • #3
      Ok, je pense avoir identifié le problème. J'ai passé le broker rrd en mode debug.

      Voici un exemple d'échec :
      [1498469958] debug: RRD: updating file '/var/lib/centreon/status/19.rrd' (1467367449: )
      [1498469958] error: RRD: failed to update value in file '/var/lib/centreon/status/19.rrd': /var/lib/centreon/status/19.rrd: Function update_pdp_prep, case DST_GAUGE - Cannot convert '' to float

      C'est anormal que la valeur soit vide alors qu'un float est attendu.

      Voici un update de metric qui fonctionne pour comparaison :

      [1498469958] debug: RRD: updating file '/var/lib/centreon/metrics/28.rrd' (1498350608:7.000000)
      [1498469958] debug: BBDO: got new header with a size of 27, source of 1, destination of 0 and an ID of 196612

      Si on jet un oeil dans les sources du broker , plus précisément le lib.cc, j'ai comme un doue sur la déclaration des paramètres passés :

      // Set argument table.
      char const* argv[2];
      argv[0] = arg.c_str();
      argv[1] = NULL;

      // Debug message.
      logging::debug(logging::high) << "RRD: updating file '"
      << _filename << "' (" << argv[0] << ")";

      // Update RRD file.
      rrd_clear_error();
      if (rrd_update_r(
      _filename.c_str(),
      NULL,
      sizeof(argv) / sizeof(*argv) - 1,
      argv)) {
      char const* msg(rrd_get_error());
      if (!strstr(msg, "illegal attempt to update using time"))
      throw (exceptions::update()
      << "RRD: failed to update value in file '"
      << _filename << "': " << msg);
      else
      logging::error(logging::low)
      << "RRD: ignored update error in file '"
      << _filename << "': " << msg;
      }

      return ;


      Je connais pas vraiment le c, mais je voit une declaration du argv[0], la valeur mis à jour en string plutot qu'en float.
      Ou alors il faudrait un précontrole pour remplacer toute valeur null par zer, a minima pour ne pas planter rrd.

      Je vais essayer de bidouiller un peu le source et recompiler pour voir si j'arrive a faire passer un zero et voir l'impact sur les courbes centreon.



      Comment


      • #4
        je pense que je suis bon, j'ai ajouté un controle qui fait un return direct de la fonction si valeur est vide, et ca semble passer.

        [1498473280] debug: RRD: updating file '/var/lib/centreon/status/38.rrd' (1498472859:100)

        Mon fichier s'update a nouveau et le cdb n'est plus bloqué.

        Il me faut un peu de recul maintenant.je reviendrai avec un patch si tout est concluant

        EDIT : ca semble ok, mes rebuild de graphes passent parfaitement, je retrouve l'intégralité de mon historique.

        Comment

        Working...
        X