Announcement

Collapse
No announcement yet.

Centstorage purge and data loss in the graphics

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

  • Centstorage purge and data loss in the graphics

    Hello everyone
    I'm gonna write in english but you can reply in French.

    I have a question and a problem about the centstorage purge and the graphs displayed in centreon.

    First the context :
    we have a centreon / Nagios server as a master
    2 DB server (mysql with failover cluster)
    23 remote poller with ndo
    1600 hosts
    ~16000 services

    these numbers gives us a centstorage database (1 year perfdata retention, 6 month log) of 94GB and 1.6 Billions lines in the "data_bin" table


    A slight problem : I have no idea how all the centreon/nagios/ndo/rrd is working together. I looked at lots of docs floating around... I still don't get it. I'm not the one who set that up, I'm just trying to keep this infrastructure from falling appart, and improve it where I can.


    The problem I currently have is this : every day, 2am, the cron is running the centstoragePurge.sh, it takes about 55-58 minutes to run. During this time all my graphes have a 1 hour "hole" in them.

    The script does that (shortened version):
    service centstorage stop
    delete from centstorage.data_bin where thedate<max_data_date
    delete from centstorage.log where thedate<max_log_date
    service centstorage start


    I did that :

    mysql> SELECT count(*) FROM `data_bin` WHERE ctime < 1329877800 AND ctime > 1329876900;
    +----------+
    | count(*) |
    +----------+
    | 82123 |
    +----------+
    1 row in set (43 min 5.86 sec)

    It showed me the data are still sent in the centstorage database during 2h15am and 2h30am (today) while the centstorage was down (from 2am to 3am)

    I tried to go in centreon>Administration>Option>Centstorage>Manage and mark some services to be rebuilt... to no avail.


    So, here are my questions :

    can anyone describe me how the graphes showed in the centreon monitoring interfaces are generated?

    why is there a hole in the graphes when there are data still recorded by NDO ? (I assumed NDO given this : http://en.doc.centreon.com/CentreonArchitecture )

    Is there a way to regenerate all the graphes from the database?


    Voila.

    I'm looking in all the post I can but I'm not finding relevant issue, I don't thinks it is a version problem. (centreon 2.1.9, nagios 2.2.3, ndo 1.3/1.4, upgrade to latest in the pipe)
    The problem appeared some months ago when the database started to grow as we added a few pollers and hundreds of checks.
    I suspect a buffer problem or something not liking centstorage being down for almost one hour... but as I don't really understand the dataflow in Centreon/NDO I'm a bit stumped.


    If anyone has any information or answers (or more question) please don't hesitate, i'm taking everything I can !

    Best regards
    Christophe Niel
    Neurones IT

  • #2
    Je vais tenter d’éclaircir les choses.

    Dès qu'un contrôle est réalisé par Nagios, si des données de performance sont présent alors celles-ci sont écrite dans un fichier "service-perfdata" par poller.
    Le processus CentCore récupère les fichiers des pollers distant et les rapatrie sur le serveur Centreon.

    Le processus CentStorage lit à intervalle régulier ces fichiers et insère les données dans les fichiers RRDs pour les graphiques de performances et en base de données "centreon_storage" (en vue de reconstruire les graphiques si besoin est).

    La base de données "centreon_storage" contient donc un enregistrement par contrôle sur la période désirée (programmée dans le menu "Administration -> Options -> Centstorage".
    Les bases RRDs elles ne grossissent pas puisqu'elles sont créé à taille fixe (lors de la création) et que les valeurs sont au fur et à mesure moyennée.

    Plus il y a de données dans la base "centreon_storage" et plus la purge, programmée tous les jours à 02h00, sera longue. Il est possible de rajouter des index mais sur un base de + 90GB, sera prendra un temps considérable et arrêtera la supervision.
    Avez vous besoins d'un ans de rétention et de visualisation dans les graphiques ?

    pour ce qui est des trous dans les graphiques, comme la base devient inaccessible durant la purge, NDO ne peux insérer les données dedans. Du coup NDO essai de retenir les dernières informations (tampon) mais celui-ci se vident pour ne garder que les plus récent. Ce blocage de NDO bloque également Nagios qui arrête de superviser les ressources, d'où la perte d'informations.

    Cdt,
    Centreon Syslog Module Manager/Developper
    Centreon E2S Module Manager/Developper
    Centreon Enterprise Server (2.x / 3.x) : Centreon Engine 1.3.x / 1.4.x, Centreon Broker 2.6.x / 2.8.x , Centreon 2.x, Centreon-Syslog 1.5.x, Centreon E2S 2.0
    Nagios 3.x et NDOutil 1.x

    Comment


    • #3
      ok
      Merci pour ces éclaircissements sur le fonctionnement. et je n'ai pas de problème d'espace disque, le rajout d'un index sur ctime pourrait améliorer les choses mais le temps n'est peut-être pas le problème :

      Je suis remonté au 5/5/2011, le premier jour ou le trou est apparu, le trou dure moins d'un quart d'heure. Aujourd'hui il est d'une heure.
      même si je réduis le temps de traitement, cela ne résoud pas mon problème : le trou dans les graphe.


      J'essaye de comprendre en détail comment les choses fonctionnent.

      j'ai fait un locate service-perfdata, j'ai des fichiers dans /usr/local/nagios/var/service-perfdata
      Code:
      -rw-rw-r-- 1 nagios nagios       864 fév 23 11:26 service-perfdata
      -rw-rw-r-- 1 nagios nagios    692103 fév 23 11:26 service-perfdata_read
      -rw-r--r-- 1 nagios nagios 198884336 fév 23 11:26 service-perfdata.tmp
      -rw-r--r-- 1 nagios nagios  70894103 fév 14 04:02 service-perfdata.tmp.10.gz
      -rw-r--r-- 1 nagios nagios  70620923 fév 13 04:02 service-perfdata.tmp.11.gz
      (les .tmp.xx.gz sont le résultat d'un rotatlog sur 15j.)

      j'ai aussi 55000 fichiers dans usr/local/nagios/var/spool/perfdata, mais ces fichiers datent de 2010.


      Donc 2 autres questions :
      à quoi servent le _read et le .tmp?

      Et tu parles de d'un perfdata par poller, je n'en vois qu'un.


      ensuite tu dis
      pour ce qui est des trous dans les graphiques, comme la base devient inaccessible durant la purge, NDO ne peux insérer les données dedans.
      la base n'est jamais inaccessible, les données sont bien présentent dans la table data_bin : le résultat de ma query montre 80.000 ligne durant un quart d'heure en pleine coupure. la même requête à 1h ou a 9h renvoie approximativement le même nombre de ligne.

      y a-t-il un moyen d'augmenter le tampon NDO, ou bien de regénérer le graphe depuis les data présentent dans la base?

      Comment


      • #4
        Le _read est le fichier en cours de lecture par le processus CentStorage.

        Le *.tmp est la copie du fichier service-perfdata. La copie ne sert à rien sauf si les données doivent être traité par une application tierce.

        Pour supprimer la copie, décocher la case "Drop Data in another file" dans le menu "Administration -> Options -> CentStorage".

        Oui il est possible de régénérer les graphs à partir de la base via le menu "Administration -> Options -> CentStorage -> Manage"
        Centreon Syslog Module Manager/Developper
        Centreon E2S Module Manager/Developper
        Centreon Enterprise Server (2.x / 3.x) : Centreon Engine 1.3.x / 1.4.x, Centreon Broker 2.6.x / 2.8.x , Centreon 2.x, Centreon-Syslog 1.5.x, Centreon E2S 2.0
        Nagios 3.x et NDOutil 1.x

        Comment


        • #5
          Hello everyone,

          I have a problem with the purge a Centreon... in the log file appears:

          2017-06-06 02:00:01 - Purging centstorage.data_bin table...
          Error: The total number of locks exceeds the lock table size at /usr/share/perl5/vendor_perl/centreon/common/db.pm line 240.
          2017-06-07 02:00:02 - Purging centstorage.data_bin table...
          Error: The total number of locks exceeds the lock table size at /usr/share/perl5/vendor_perl/centreon/common/db.pm line 240.
          2017-06-08 02:00:02 - Purging centstorage.data_bin table...
          Error: The total number of locks exceeds the lock table size at /usr/share/perl5/vendor_perl/centreon/common/db.pm line 240.
          2017-06-09 02:00:02 - Purging centstorage.data_bin table...
          Error: The total number of locks exceeds the lock table size at /usr/share/perl5/vendor_perl/centreon/common/db.pm line 240.

          and the database is HUGE...

          Can enyone help me??

          Thanks!!

          Comment

          Working...
          X