On 12 August 2015 at 10:19, bruno binet <[email protected]> wrote:
> Thanks for all this valuable information. > > On 11 August 2015 at 17:17, Michael Trinkala <[email protected]> > wrote: > >> There are a few intentional changes between Heka and Hindsight. Looping >> messages in Heka has always been a bad idea so it was removed. >> > > Personally I like the looping messages feature in Heka as it is very > flexible and could be useful to share ready-to-use plugins. Also it > supports processing messages through multiple ticker_interval which can be > useful (alerting, aggregations). > > >> There are a few API enhancements such as a protobuf stream reader and >> writer. Checkpoint are all managed by the Hindsight infrastructure (so >> much of the burden is removed from the plugin writer, this also alters the >> plugin API slightly). The write_message hack for Go has been removed since >> messages are immutable. read_config now has access to all related sandbox >> config options (standard and user defined). read_next_field is not >> supported (this will also be removed from Heka in 0.11). >> >> In most cases you will find the Hindsight IOPS lower than Heka due to the >> much more efficient check pointing (btw Heka 0.11 is moving to a disk >> buffer everywhere). >> > > Great, that is good to know. > > >> output_hi/input/* - contains the output from all of the input plugins >> output_hi/analysis/* - contains the output from all of the analysis >> plugins >> > Are the above files always growing? I suppose the output_limit configuration allow us limit their size: what are the implications if I limit their size to a few KB? Will it reduce Hindsight performance? > hindsight.cp - in the checkpoint file for all I/O (inputs, analysis, and >> output plugins) >> hindsight.tsv - in the self monitoring performance stats >> >> They files are all mandatory. They are the reason Hindsight has an at >> least once delivery guarantee and they provide valuable insight on system >> operation and performance. >> > > If I don't need delivery guarantee, do you think it could make sense to > move these files to a ramdisk (tmpfs) partition in order to preserve the > flash sd/usb card? > > >> decode_message needs to be turned on for analysis and output plugins, I >> will enable it. >> > > Ok, thank you: this is now working as expected. > > Also, do you plan to implement some additional lua modules to help build > input sandboxes similar to Heka input plugins (like the FilePollingInput, > the ProcessInput, or the LogstreamerInput)? > > >> >> Trink >> >> >> On Tue, Aug 11, 2015 at 1:54 AM, bruno binet <[email protected]> >> wrote: >> >>> I see, so I need to investigate how I can merge my multiple lua sandbox >>> filters into a single one. >>> >>> This make me wondering if there is some other differences between >>> Hindsight and Heka? >>> The fact that only one analysis plugin cannot consume the output of >>> another analysis plugin is the only difference beween Hindsight analysis >>> plugins and Heka filter sandbox plugins? >>> >>> Also I saw in another thread that Hindsight uses disk buffers at every >>> stage, so there's only ever one >>> message in memory at every step of the pipeline: does it mean Hindsight >>> will write much more frequently to the disk than Heka? This may be an issue >>> for me since we use a raspberry pi which disk is a sdcard or usb flash key. >>> >>> I see that some data is written to the output_path (output_hl/ directory >>> in my case): can you explain what are all these files: >>> $ tree output_hl/ >>> output_hl/ >>> |-- analysis >>> | `-- 0.log >>> |-- hindsight.cp >>> |-- hindsight.tsv >>> `-- input >>> `-- 0.log >>> >>> Can we avoid generating all these files? >>> >>> Last question: I don't manage to use the "read_next_field" or >>> "decode_message" api function from the output plugin, are they available? >>> >>> The following error is returned: >>> 1439280624615780495 [error] output_plugins terminated: >>> output/encode_metric.cfg msg: process_message() >>> _hl/output/encode_metric.lua:16: attempt to call global 'read_next_field' >>> (a nil value) >>> >>> or when I change my output plugin to use the decode_message api function: >>> 1439282566555139226 [error] output_plugins terminated: >>> output/encode_metric.cfg msg: process_message() >>> _hl/output/encode_metric.lua:15: attempt to call global 'decode_message' (a >>> nil value) >>> >>> >>> Thanks, >>> Bruno >>> >>> >>> On 10 August 2015 at 19:19, Michael Trinkala <[email protected]> >>> wrote: >>> >>>> There is no message looping in Hindsight (one analysis plugin cannot >>>> consume the output of another analysis plugin). In your example the >>>> decoding should happen in the input. Heka has Inputs, splitters, and >>>> decoder (in Hindsight it is just an Input and common functionality can be >>>> split into modules for code reuse). This in general simplifies the >>>> configuration, is easier to follow (since everything is in one place) and >>>> has performance benefits as well. >>>> >>>> Trink >>>> >>>> On Mon, Aug 10, 2015 at 9:23 AM, bruno binet <[email protected]> >>>> wrote: >>>> >>>>> Back from vacations, I'm now playing again with Hindsight on a >>>>> raspberry pi. >>>>> As reported on github >>>>> https://github.com/trink/hindsight/issues/1#issuecomment-119593775 >>>>> the compilation now succeeds. >>>>> >>>>> So getting inspiration from the examples in the benchmarks directory, >>>>> I tried to create a Hindsight configuration to use my own lua sandboxes: I >>>>> can successfully read data from udp and use a filter to decode data, then >>>>> I >>>>> would like to use another filter to handle generated messages, but I can't >>>>> get any message in the second filter. Does Hindsight support more than one >>>>> filter like Heka? >>>>> >>>>> Here is the Hindsight configuration, Lua sandboxes and output >>>>> directory generated by Hindsight: >>>>> https://github.com/bbinet/hindsight_hl_test >>>>> >>>>> Do you see anything wrong? Do I use hindsight correctly? >>>>> >>>>> Cheers, >>>>> Bruno >>>>> >>>>> On 8 July 2015 at 09:44, bruno binet <[email protected]> wrote: >>>>> >>>>>> Sure, I will try your branch and report possible new compilation >>>>>> issues in github. >>>>>> >>>>>> Cheers, >>>>>> Bruno >>>>>> >>>>>> On 7 July 2015 at 18:26, Michael Trinkala <[email protected]> >>>>>> wrote: >>>>>> >>>>>>> I changed the checkpoint id to an unsigned long long. Can you test >>>>>>> out the branch and add any other compilation errors to the issue >>>>>>> (closing >>>>>>> out this email thread). I am also taking suggestions/recommendations >>>>>>> for a >>>>>>> CI build system that supports multiple platforms. TravisCI adds almost >>>>>>> no >>>>>>> value since I am already building on a Debian based box. >>>>>>> >>>>>>> https://github.com/trink/hindsight/tree/issue_1 >>>>>>> >>>>>>> Thanks, >>>>>>> Trink >>>>>>> >>>>>>> On Tue, Jul 7, 2015 at 8:21 AM, bruno binet <[email protected]> >>>>>>> wrote: >>>>>>> >>>>>>>> Ok, thanks. >>>>>>>> And sorry, but I don't have a patch (don't know how to fix this >>>>>>>> kind of compilation issue). >>>>>>>> >>>>>>>> On 7 July 2015 at 16:17, Michael Trinkala <[email protected]> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> Yeah, I have only been building on Ubuntu and haven't done any >>>>>>>>> cross platform clean-up. Thanks for the build output I will fix those >>>>>>>>> errors (unless you already have a patch). >>>>>>>>> >>>>>>>>> Trink >>>>>>>>> >>>>>>>>> On Tue, Jul 7, 2015 at 5:57 AM, bruno binet <[email protected] >>>>>>>>> > wrote: >>>>>>>>> >>>>>>>>>> I now have some time to do a few tests with Hindsight, so I tried >>>>>>>>>> to compile it on our targeted arm platform (raspberry pi), but I get >>>>>>>>>> the >>>>>>>>>> following error: >>>>>>>>>> >>>>>>>>>> root@hl-mc-9999-dev:~/hindsight/release# cmake >>>>>>>>>> -DCMAKE_BUILD_TYPE=release .. >>>>>>>>>> -- The C compiler identification is GNU 4.7.2 >>>>>>>>>> -- The CXX compiler identification is GNU 4.7.2 >>>>>>>>>> -- Check for working C compiler: /usr/bin/gcc >>>>>>>>>> -- Check for working C compiler: /usr/bin/gcc -- works >>>>>>>>>> -- Detecting C compiler ABI info >>>>>>>>>> -- Detecting C compiler ABI info - done >>>>>>>>>> -- Detecting C compile features >>>>>>>>>> -- Detecting C compile features - done >>>>>>>>>> -- Check for working CXX compiler: /usr/bin/g++ >>>>>>>>>> -- Check for working CXX compiler: /usr/bin/g++ -- works >>>>>>>>>> -- Detecting CXX compiler ABI info >>>>>>>>>> -- Detecting CXX compiler ABI info - done >>>>>>>>>> -- Detecting CXX compile features >>>>>>>>>> -- Detecting CXX compile features - done >>>>>>>>>> -- Found LUASANDBOX: /usr/local/lib/libluasandbox.so >>>>>>>>>> -- Configuring done >>>>>>>>>> -- Generating done >>>>>>>>>> -- Build files have been written to: /root/hindsight/release >>>>>>>>>> >>>>>>>>>> root@hl-mc-9999-dev:~/hindsight/release# make >>>>>>>>>> Scanning dependencies of target hindsight >>>>>>>>>> [ 2%] Building C object src/CMakeFiles/hindsight.dir/ >>>>>>>>>> hindsight.c.o >>>>>>>>>> [ 4%] Building C object src/CMakeFiles/hindsight.dir/ >>>>>>>>>> hs_analysis_plugins.c.o >>>>>>>>>> [ 6%] Building C object src/CMakeFiles/hindsight.dir/ >>>>>>>>>> hs_checkpoint_reader.c.o >>>>>>>>>> /root/hindsight/src/hs_checkpoint_reader.c: In function >>>>>>>>>> 'find_first_id': >>>>>>>>>> /root/hindsight/src/hs_checkpoint_reader.c:46:3: error: large >>>>>>>>>> integer implicitly truncated to unsigned type [-Werror=overflow] >>>>>>>>>> /root/hindsight/src/hs_checkpoint_reader.c:55:3: error: >>>>>>>>>> comparison is always false due to limited range of data type >>>>>>>>>> [-Werror=type-limits] >>>>>>>>>> cc1: all warnings being treated as errors >>>>>>>>>> src/CMakeFiles/hindsight.dir/build.make:100: recipe for target >>>>>>>>>> 'src/CMakeFiles/hindsight.dir/hs_checkpoint_reader.c.o' failed >>>>>>>>>> make[2]: *** [src/CMakeFiles/hindsight.dir/hs_checkpoint_reader.c.o] >>>>>>>>>> Error 1 >>>>>>>>>> CMakeFiles/Makefile2:947: recipe for target >>>>>>>>>> 'src/CMakeFiles/hindsight.dir/all' failed >>>>>>>>>> make[1]: *** [src/CMakeFiles/hindsight.dir/all] Error 2 >>>>>>>>>> Makefile:146: recipe for target 'all' failed >>>>>>>>>> make: *** [all] Error 2 >>>>>>>>>> >>>>>>>>>> Do you know what is going on here? I guess this is an issue with >>>>>>>>>> the arm platform only? >>>>>>>>>> >>>>>>>>>> Cheers, >>>>>>>>>> Bruno >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> On 10 June 2015 at 18:41, bruno binet <[email protected]> >>>>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>>> Thanks a lot for your answers. >>>>>>>>>>> >>>>>>>>>>> And yes, I'm very interested in bootstrapping a first prototype >>>>>>>>>>> of my own data pipeline based on Hindsight so that I can compare the >>>>>>>>>>> performance on a raspberry pi. >>>>>>>>>>> (here is the current state of our Heka-based data pipeline: >>>>>>>>>>> https://bitbucket.org/helioslite/heka-hl-sandboxes) >>>>>>>>>>> So it would be great if you can give me the first instructions >>>>>>>>>>> on how to build and setup Hindsight. >>>>>>>>>>> >>>>>>>>>>> Thanks. >>>>>>>>>>> Bruno >>>>>>>>>>> >>>>>>>>>>> On 10 June 2015 at 18:18, Michael Trinkala < >>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>> >>>>>>>>>>>> - It is usable and being actively developed with the intent to >>>>>>>>>>>> move it into production later this year. >>>>>>>>>>>> - We are currently running production data through it for >>>>>>>>>>>> testing but it is not deployed in an official capacity. It has >>>>>>>>>>>> been very >>>>>>>>>>>> stable but until a more robust set of tests have been build out I >>>>>>>>>>>> will not >>>>>>>>>>>> consider it production ready. >>>>>>>>>>>> - Yes, it can decode/encode Heka protobuf format >>>>>>>>>>>> - Yes, the router/message matcher is complete. The only >>>>>>>>>>>> difference is that it supports Lua string pattern matching instead >>>>>>>>>>>> of re2 >>>>>>>>>>>> regexp (Heka 'Hostname =~ /^foo/' vs Hindsight 'Hostname =~ >>>>>>>>>>>> "^foo"') >>>>>>>>>>>> - Yes, but you would need a lua-socket input and output sandbox >>>>>>>>>>>> (see benchmarks/hsr_run for related examples) >>>>>>>>>>>> - No documentation yet, only examples in the benchmarks >>>>>>>>>>>> directory. I could have you bootstrapped in about 30 minutes (and >>>>>>>>>>>> hopefully turn that into a getting started guide) if you are >>>>>>>>>>>> interested. >>>>>>>>>>>> >>>>>>>>>>>> Implementation wise the only missing piece is support for >>>>>>>>>>>> dynamically loading plugins. The actual code to accomplish it is >>>>>>>>>>>> very >>>>>>>>>>>> small (just detecting files in the load directory and moving them >>>>>>>>>>>> to the >>>>>>>>>>>> run directory) but ideally it would be fronted by a web server and >>>>>>>>>>>> a GUI >>>>>>>>>>>> with access control and validation (a much larger effort and >>>>>>>>>>>> actually a >>>>>>>>>>>> separate project). >>>>>>>>>>>> >>>>>>>>>>>> Trink >>>>>>>>>>>> >>>>>>>>>>>> On Wed, Jun 10, 2015 at 8:15 AM, bruno binet < >>>>>>>>>>>> [email protected]> wrote: >>>>>>>>>>>> >>>>>>>>>>>>> Hi, >>>>>>>>>>>>> >>>>>>>>>>>>> I recently discovered the work pushed into the Hindsight >>>>>>>>>>>>> repository (https://github.com/trink/hindsight) which seems >>>>>>>>>>>>> to be a lightweight alternative to Heka, based on the lua sandbox. >>>>>>>>>>>>> The Hindsight vs Heka benchmarks are quite impressive. >>>>>>>>>>>>> >>>>>>>>>>>>> I'm currently running Heka on the raspberry pi (not so >>>>>>>>>>>>> powerful) device and the load average quickly increases and >>>>>>>>>>>>> exceeds 1 when >>>>>>>>>>>>> Heka is ingesting data, so Hindsight could be a good fit for us >>>>>>>>>>>>> if it can >>>>>>>>>>>>> perform better than Heka in terms of CPU cycles. >>>>>>>>>>>>> >>>>>>>>>>>>> What is the current status of Hindsight? Is it just an >>>>>>>>>>>>> temporary experiment or will it be maintained and actually used in >>>>>>>>>>>>> production? >>>>>>>>>>>>> Is it currently usable and stable? >>>>>>>>>>>>> Is Hindsight able to decode and encode Heka protobuf format? >>>>>>>>>>>>> Does Hindsight have a complete router implementation to >>>>>>>>>>>>> dispatch messages to sandboxes like in Heka? >>>>>>>>>>>>> My use case is basically to read raw text data from UDP >>>>>>>>>>>>> socket, parse text data with lua patterns or lpeg, process data >>>>>>>>>>>>> through a >>>>>>>>>>>>> few lua sandbox filters, then write output messages both to a file >>>>>>>>>>>>> (protobuf heka format) and a HTTP server (json format): can this >>>>>>>>>>>>> be easily >>>>>>>>>>>>> accomplished with Hindsight? >>>>>>>>>>>>> Is there any documentation somewhere to get started with >>>>>>>>>>>>> Hindsight? >>>>>>>>>>>>> >>>>>>>>>>>>> Thanks, >>>>>>>>>>>>> Bruno >>>>>>>>>>>>> >>>>>>>>>>>>> _______________________________________________ >>>>>>>>>>>>> Heka mailing list >>>>>>>>>>>>> [email protected] >>>>>>>>>>>>> https://mail.mozilla.org/listinfo/heka >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >
_______________________________________________ Heka mailing list [email protected] https://mail.mozilla.org/listinfo/heka

