[prev in list] [next in list] [prev in thread] [next in thread] 

List:       collectd
Subject:    Re: [collectd] Compiling collectd with write_mongodb plugin support
From:       Giovanni Torres <giovtorres () hotmail ! com>
Date:       2014-11-20 4:59:31
Message-ID: BLU169-W637D49CC2A72DA7D04A346D5760 () phx ! gbl
[Download RAW message or body]

Aha.  Figured it out.  Found a thread \
(http://mailman.verplant.org/pipermail/collectd/2012-April/005046.html) which pointed \
to another thread (http://mailman.verplant.org/pipermail/collectd/2012-January/004893.html) \
which shows that the write_mongodb plugin was compiled against v0.4 of the \
mongo-c-driver.  Ok.

Built mongo-c-driver v0.4. Configured collectd... success. "write_mongodb. . . yes". \
Beautiful. make... failed! Darkness.

Ran into this issue:
write_mongodb.c:77:3: error: implicit declaration of function ‘bson_create’ \
[-Werror=implicit-function-declaration] write_mongodb.c:77:7: error: assignment makes \
                pointer from integer without a cast [-Werror]
write_mongodb.c: In function ‘wm_write’:
write_mongodb.c:246:3: error: implicit declaration of function ‘bson_dispose’ \
[-Werror=implicit-function-declaration

Which led me to this issue (https://github.com/collectd/collectd/issues/331).  API \
changed.  So, took a peek in the HISTORY.MD and saw the following:

"3. Underlying allocation functions are now uniformly named with _alloc_ and \
_dealloc_ instead of _create_ and _dispose_."

Ok. No problem.  Edited collectd/src/write_mongdb.c and changed _create with _allow \
and _dispose with _dealloc.

configure && make && make install works! Finally. (I ended up using the latest \
version of the legacy driver, v0.8.1.)

Actually, I ran it like this:
# CPPFLAGS=-I/root/local/mongo-c-driver-0.8.1/usr/local/include ./configure \
--prefix=/root/local/collectd-5.4.1 \
--with-libmongoc=/root/local/mongo-c-driver-0.8.1/usr/local --enable-write_mongodb \
--without-perl-bindings


Now, this brings me to a different set of notes/questions:

1. The write_mongodb plugin wiki pages says this plugin is supported, but I beg to \
differ given the work above I had to do.  It should be marked as experimental in its \
current state.

2. The plugin only compiles against the 'legacy' branch of the mongo-c-driver, which \
stopped at v0.8.1.  The new version jumped to 0.90.0, at which point, there was no \
longer the mongo.h header file which is required by write_mongdb.c.  The wiki should \
be updated to make a note of this.  You can get to it directly from here \
(https://github.com/mongodb/mongo-c-driver-legacy).  The wiki should also note the \
API change for bson_create and _dispose.

3.  Clearly the mongo-c-driver API/ABI was not stable, at least until the 1.0 release \
as noted on their github page ("Until the 1.0 release, this driver should be \
considered alpha. Keep in mind that the API will be in flux until then.")  Now that \
the driver is at version 1.0.2, perhaps the maintainers could revisit the plugin and \
rebuild the plugin against what may now be a more stable version of the driver API?

4. Lastly, is anyone using this plugin in production?  Or, at least have been running \
it for a while to know what the caveats/advantages/disadvantages/pitfalls/breaking \
points are and would care to share?  If I had 2000 32-core machines that need to run \
collectd, is it better to write_graphite and scale carbon/graphite or is \
write_mongodb a better alternative in your opinion?

Thanks,
Giovanni

________________________________
> From: giovtorres@hotmail.com
> To: collectd@verplant.org
> Date: Fri, 11 Apr 2014 14:34:31 -0400
> Subject: [collectd] Compiling collectd with write_mongodb plugin support
> 
> I need some help compiling the write_mongodb plugin.  I am using
> Scientific Linux 6.5.  I successfully compiled the mongo-c-driver.
> When I run $(CPPFLAGS=-I/usr/local/mongo-c-driver/include/libmongoc-1.0
> ./configure --enable-write_mongodb), it fails saying that there is a
> dependency error.
> 
> Looking at config.log, I get the following error:
> configure:21546: checking for mongo.h
> configure:21546: gcc -c -g -O2
> -I/usr/local/mongo-c-driver/include/libmongoc-1.0  conftest.c>&5
> conftest.c:182:19: error: mongo.h: No such file or directory
> 
> Why is it looking for mongo.h and not mongoc.h?  I tried looking for
> mongo.h from some of the available mongodb RPMs, but I can't seem to
> find it.
> 
> Thanks,
> Giovanni
> 
> _______________________________________________ collectd mailing list
> collectd@verplant.org http://mailman.verplant.org/listinfo/collectd
 		 	   		  
_______________________________________________
collectd mailing list
collectd@verplant.org
http://mailman.verplant.org/listinfo/collectd


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic