It’s exciting to see things starting to take off. The momentum and excitement around Reconnoiter are at an all time high here at OmniTI. I really appreciate Todd Herr’s extensive write up about Reconnoiter over at highscalability.com — the review was spot on.
It has ample criticism (all deserved) and we’re continuing to work on the “consumability” aspects of the product. One of the comments he made was the interesting choice of Lua as a language to extend the product. I really wanted to use Perl or Python to extend Reconnoiter, but Lua has some pretty magical properties that made it meld well with the noit internals. In my opinion it is perhaps one of the more technically interesting parts of the product as the search was long and the choice reluctant. When I have more time, I’ll write an article about embedding lua in noit and the deeper reasoning behind it.
Also, don’t be scared by Lua, you can always write extensions in C! Although it doesn’t meld well with its high performance design, there is an extproc module that allows writing checks as standalone scripts and operates fine with existing Nagios checks — I say I wrote it to make adoption a bit easier, but in truth Eric and Mark made me do it.
Monday, August 17. 2009 at 03:56 (Link) (Reply)
About lua as an extension language... I'm already confronted to it with the "awesome" window manager and whished its choice had been different.
Clearly I'll prefer writing C than lua.
Did you look at guile?
http://www.gnu.org/software/guile/
Monday, August 17. 2009 at 08:43 (Link) (Reply)
I'll give some small insight.
A lua_state has some really magical properties when combined with lua_yield. Lua itself requires no C stack as a part of the state and this can be continued from anywhere in parent (embedder). With lua, it is pretty magical how I can wrap the eventer libs and the feel of procedural code when in-fact it is a cooperative state machine driving the whole thing.
In other words, hundreds of thousands or even millions of concurrent lua checks can happen without OS-threads, user-space threads, C stacks or abusive amounts of memory consumption.
Tuesday, August 18. 2009 at 21:19 (Link) (Reply)
Hi Theo,
I watched the whirlwind demo video on Reconnoiter and it sounds super cool. Do you see Reconnoiter as a replacement for tools like Nagios, Ganglia or Splunk, or as more of a compliment? I support your decision to go with Lua for an extension language, it plays really nicely with C and provides a good compromise between speed and expressivity for a dynamic language. Do you have any examples of checks written in Lua? Couldn't find any in the docs.
Tuesday, August 18. 2009 at 21:31 (Link) (Reply)
The SMTP and Varnish checks are both written in lua and shipped with the product. You can find them in the source tree under src/modules-lua/