Couchdb dans Shinken
( 17 Dec 2009 )J'ai lu il n'y a pas longtemps des articles sur Couchdb (http://couchdb.apache.org). J'ai voulu voir un peu ce que ça donne en vrai. L'intérêt de ce type de base est de na pas avoir de table, mais une liste de documents. J'ai donc essayé de faire un plugin Broker pour avoir un export en Couchdb des services (faut bien commencer par quelque chose).
Ca tombe bien, il y a un module python-couchdb (http://code.google.com/p/couchdb-python/) ultra simple à utiliser (bah c'est du Python hein). Après une belle frayeur sur les perfs (40ms par entrée, ça commence à faire beaucoup à mon goût) dû au protocole Nagle de TCP (pour beaucoup d'envois de faible taille, il faut mettre la socket en NO_DELAY), j'ai été un peu plus rassuré : 1000 entrées insérées en 2secondes. Ce n'est pas ultra rapide, mais ce n'est pas ultra lent non plus. Ce que ça donne?
Ca :
Pour l'instant seul la création des documents est faite, et ce uniquement pour les services (mais le reste est rapide). Pour la mise à jour (genre après un check :) ) il va falloir que je me penche sur les 'views' car il va falloir que je retrouve le service avant de le mettre à jour. En effet, pour l'instant l'id du document est son id (unique pour chaque service lors de la lecture de la conf). Je mettrais bien un truc du genre "srv-1/Cpu" comme id, un truc simple. Mais je ne me rappelle plus si dans Nagios les / sont autorisés dans les noms d'éléments (sinon comment savoir quel est la partie host de "srv-1/CPU/1" pour le service CPU/1 de srv-1).
Quelqu'un a une proposition pour l'id des services? Si on arrive à trouver un mix du nom d'hôte/nom de service, on n'a pas besoin de faire de views pour retrouver l'id dans co, ça sera autrement plus efficace :)
PS: pour preuve que python-couchdb est ultra simple à utiliser : le broker reçoit les données dans un dictionnaire python (dict). Et bien pour créer le "document" en base, même pas besoin de créer un INSERT, VALUES and co, juste : db.create(dict) :p
Oui le Python, c'est vraiment pour les feignasses 8-)
NOTE 2021: c'est encore utilisé couchdb?