Yeah, I'd abandon this quest for now. Unless someone really needs it and is willing to put in the effort. Until then, omprog FTW!
2013/12/16 Boylan, James <[email protected]> > Omelasticsearch uses libcurl for pushing to elasticsearch, not for > accepting pull requests of any sort. > > Not sure it would really help anyone thinking about 'omrest' not to > mention as Rainer said, the entire Rsyslog application isn't designed from > a pull model on the output module end. It would take significant core work > to implement something reliable with good performance. > > -- James > > ----- Reply message ----- > From: "Brian Knox" <[email protected]> > To: "rsyslog-users" <[email protected]> > Subject: [rsyslog] Modules in other programming languages? > Date: Mon, Dec 16, 2013 5:39 AM > > I believe the output module for elastic search might be a good place to > start looking for anyone interested in writing an "omrest" module? If I > recall correctly the elastic search output uses libcurl. > > Brian > > -----Original Message----- > From: [email protected] [mailto: > [email protected]] On Behalf Of Rainer Gerhards > Sent: Sunday, December 15, 2013 4:59 AM > To: rsyslog-users > Subject: Re: [rsyslog] Modules in other programming languages? > > On Sun, Dec 15, 2013 at 9:36 AM, Radu Gheorghe <[email protected] > >wrote: > > > Just my 2 cents here: > > a lot earlier I came with a proposal go give a REST API that would > > basically enable external applications to get messages from a rsyslog > > queue: > > http://bugzilla.adiscon.com/show_bug.cgi?id=482 > > > > With omrest, one should be able to use any programming language to > > pull messages from rsyslog. For example, one could write a Kafka > > publisher (in any language) that would pull messages from rsyslog and > publish to Kafka. > > > > > yeah, but it is *considerably* more work to be done. Don't say I don't > like, but 24hrs is really biting here. It's *a lot* of work (maybe a month > of intense work or more). No short term solution. > > I assume this is better than omprog because AFAIK with omprog piping to the > > STDIN of a binary there's a tiny OS buffer (a pipe or something? this > > is iffy territory for me) that may get full and you may lose messages > > if the other app isn't fast enough. That, or you need to implement > > queues in your external program. Which is duplicate work, queues are > already in rsyslog. > > With omrest (hypothetically), if you need more performance, you just > > need to spawn more threads/processes to pull from the queue and push > wherever. > > Assuming you have the hardware. > > > > Nope, that's wrong. If the pipe gets full, the OS blocks the writer > (rsyslog). That's it. So it's a very simple any easy to use interface. Of > course, it currently lacks features, like to ability to convey error and > suspensions states back to rsyslog. But that's something that could be > fixed with reasonable time. > > > > > > On the input side, one can already write connectors in any language. > > Just make the thing push to any input rsyslog supports. For most > > use-cases, rsyslog should pull from that input fast enough to avoid any > issues. > > > > Now the only problem with omrest is that it needs to be implemented :) > > Which bumps into the 24h problem of people [who can actually do it]. > > > > > hehe, ok, you saw that ;) Again, it's far from trivial. I think I alread > wrote that, but you need to change the rsyslog core, as it does not yet > provide queues that natively support pull mode. Thinking about that, it's > probably more a quite big refactoring in the 2 to 4 month effort ballpark > (about 15 to 20% of rsyslog core code need to be changed if I am not > totally wrong now and if done decently). At least it's the same effort as > the v8 changes done in the past weeks -- they were somewhat simpler to do. > > Rainer > > > > Best regards, > > Radu > > > > 2013/12/15 Otis Gospodnetic <[email protected]> > > > > > Hi, > > > > > > Thanks for the info. > > > I was asking because having the ability to write ims and oms in > > > different languages would open a lot of opportunities. This is one > > > of those "enablement" things. I understand writing modules in other > > > languages may mean those using such modules may hurt performance, > > > but some people need certain functionality more than performance. > > > > > > Take omkafka example from the other day. If there were a way to > > > write an om in Java it's be trivial for a lot of Java developers out > > > there to contribute omkafka. > > > > > > If omprog enables development of the ecosystem, it sounds like > > > something > > to > > > point out clearly somewhere and nurture that a bit. I do see > > > http://www.rsyslog.com/doc/omprog.html because somebody shared a > > > link, > > but > > > I don't see that on http://www.rsyslog.com/doc or on > > > http://www.rsyslog.com/doc/dev_oplugins.html or in the new README. > > > > > > Coincidentally, I just came across Fluentd's instructions for > > > writing plugins, which could serve as guidance: > > > http://docs.fluentd.org/articles/plugin-development . Nice, clean, > > > well structured, not a lot of prose... > > > > > > Otis > > > -- > > > Performance Monitoring * Log Analytics * Search Analytics Solr & > > > Elasticsearch Support * http://sematext.com/ > > > > > > > > > On Sat, Dec 14, 2013 at 1:39 PM, David Lang <[email protected]> wrote: > > > > > > > On Sat, 14 Dec 2013, RB wrote: > > > > > > > > On Sat, Dec 14, 2013 at 5:24 AM, Rainer Gerhards > > > >> <[email protected]> wrote: > > > >> > > > >>> well, technically it's for sure possible, it's just another of > > > >>> these > > > 24h > > > >>> things. Technically, it's a question of interface, and insofar > > > >>> of > > which > > > >>> types of modules. Obviously, these will be slower, and how slow > > > >>> is another interface/effort question. > > > >>> > > > >>> Thinking about this, one could probably also claim the answer is > > "yes, > > > >>> you > > > >>> can write OUTPUT modules in any language", it's just a doc > > > >>> issue. In fact, omprog can be used as an interface here. It's > > > >>> actually not even a bad interface... > > > >>> > > > >>> Again, something learned ;) > > > >>> > > > >> > > > >> Probably the cheapest (implementation) "binding" for rsyslog > > > >> would be a system() like call. Execute the subprogram with > > > >> /bin/sh -c and communicate with structured messages on STDIO. > > > >> > > > > > > > > a real module binding would be far more complex. It would allow > > > > the > > > module > > > > (in whatever language) access to the rsyslog queues and other data > > > > structures. This is possible, but not easy by any means. > > > > > > > > One big problem is that currently rsyslog does all this work in a > > > threaded > > > > environment. It may make sense in v9 or v10 to shift from a > > > > default shared-everything threading model to a explicit shared > > > > memory > > > multiprocess > > > > model. At that point having one of the processes use a different > > language > > > > would not be that hard. > > > > > > > > But in the current threaded model, having one thread run a > > > > different language would be very, very hard. > > > > > > > > The other issue here is performance. Rsyslog goes to a LOT of > > > > effort to > > > be > > > > fast. Some of the things that have made very noticable diffences > > > > in performance in rsyslog are things that seem like they should be > > > > very > > > minor. > > > > Think about these things and then think about what would be > > > > involved to define interfaces in a multi-language safe way. > > > > > > > > things that have resulted in noticable speedups have been: > > > > > > > > removing gettimeofday() calls. > > > > > > > > it used to be that rsyslog recorded when a message arrived, when > > > > it > > was > > > > put on the main queue, when it was moved to an action queue, when > > > > it > > was > > > > pulled from the action queue, and when it was delivered > > > > > > > > now, high performance users configure rsyslog so that it only > > > > does > > one > > > > gettimeofday() call per hundred (ot thousand) messages that arrive > > > > and > > > use > > > > that one time for every message > > > > > > > > string modules > > > > > > > > it used to be that the default template (<%pri%>%timestamp% > > %hostname% > > > > %syslogtag%%msg%) was interpreted by the rsyslog engine for every > > message > > > > that was output > > > > > > > > now string modules written in C create these strings rather than > > > > interpreting the template. This resulted in a double-digit % > > performance > > > > improvement > > > > > > > > With optimizations like these in use, changing things to allow for > > > > a module written in a different language to have access to the > > > > rsyslog internals as would be needed for a high-performance > > > > interface seems > > like > > > it > > > > will probably end up hurting the rsyslog performance overall. > > > > > > > > > > > > That being said, I am very much in favor of multi-process with > > > > explicit sharing rather than multi-threaded with implicit sharing, > > > > but getting > > all > > > > the interfaces correct and fast would be a VERY hard task. > > > > > > > > David Lang > > > > > > > > _______________________________________________ > > > > rsyslog mailing list > > > > http://lists.adiscon.net/mailman/listinfo/rsyslog > > > > http://www.rsyslog.com/professional-services/ > > > > What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE > > > > WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a > > myriad > > > > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if > > > > you DON'T LIKE THAT. > > > > > > > _______________________________________________ > > > rsyslog mailing list > > > http://lists.adiscon.net/mailman/listinfo/rsyslog > > > http://www.rsyslog.com/professional-services/ > > > What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE > > > WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad > > > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if > > > you DON'T LIKE THAT. > > > > > _______________________________________________ > > rsyslog mailing list > > http://lists.adiscon.net/mailman/listinfo/rsyslog > > http://www.rsyslog.com/professional-services/ > > What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE > > WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of > > sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you > > DON'T LIKE THAT. > > > _______________________________________________ > rsyslog mailing list > http://lists.adiscon.net/mailman/listinfo/rsyslog > http://www.rsyslog.com/professional-services/ > What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE WELL: > This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of sites > beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE > THAT. > _______________________________________________ > rsyslog mailing list > http://lists.adiscon.net/mailman/listinfo/rsyslog > http://www.rsyslog.com/professional-services/ > What's up with rsyslog? Follow https://twitter.com/rgerhards > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you > DON'T LIKE THAT. > _______________________________________________ > rsyslog mailing list > http://lists.adiscon.net/mailman/listinfo/rsyslog > http://www.rsyslog.com/professional-services/ > What's up with rsyslog? Follow https://twitter.com/rgerhards > NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad > of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you > DON'T LIKE THAT. > _______________________________________________ rsyslog mailing list http://lists.adiscon.net/mailman/listinfo/rsyslog http://www.rsyslog.com/professional-services/ What's up with rsyslog? Follow https://twitter.com/rgerhards NOTE WELL: This is a PUBLIC mailing list, posts are ARCHIVED by a myriad of sites beyond our control. PLEASE UNSUBSCRIBE and DO NOT POST if you DON'T LIKE THAT.

