Coder Social home page Coder Social logo

streamy's People

Contributors

amannocci avatar fossabot avatar ppartarr avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

ppartarr fossabot

streamy's Issues

Adhere to Akka Stream practices

Describe the feature

Provide only Flow, Source and Sink implementations when possible.
This modification will allow better composition support.

Add a Metric plugin

Describe the feature

Implement a Metric plugin to support jvm metric reporting instead of current implementation in Streamy.

Support OpenJDK 11

Describe the feature

Add support for OpenJDK 11.

https://github.com/akka/akka/issues/25640
https://github.com/akka/akka/issues/25739
https://github.com/akka/akka/pull/25792

Add a File plugin

Describe the feature

Implement a File plugin that support file reading and writing.
We can also allow directory change detection.
Implementation can be done mostly by using Alpakka File Connector

Add relaxed mode in Syslog

Describe the feature

For some use case the current implementation of Syslog parsing is too strict.
In particular when we read a syslog record comming from Docker.

Add a Graphite plugin

Describe the feature

Implement a way to read packet compatible with Graphite protocol.

Container aware

Expected behavior

We can make Streamy container aware and consume only CPU and Memory available.

Actual behavior

Streamy isn't container aware and attempt to consume all CPU and Memory available on host.

Catch system signal

Expected behavior
  1. Catch system signal.
  2. Perform some cleanup operations at plugin level by simply stopping them.
  3. Perform some cleanup operations at streamy level if needed.
Actual behavior
  • Undefined

Switch to circe library

Describe the feature

Migrate from play-json library to circe library.
Circe provide better performance and some support for raw parsing based on ByteBuffer.
We will be able to parse directly from ByteString in for example syslog plugin.

Embedded json ast

Describe the feature

Circe Json AST is now used as a base in term of data structure in Streamy.
This implementation is great but two complex for our needs.
We need a custom Json AST that allow some improvement in some case.
To summarize we need fast operation on AST, serialization and deserialization.
Serialization and deserialization can be support by Jackson.
Access and modification operation can be based on work done in Diffson. We just need a way to evaluate and another to patch Json AST.
For the Json AST we can use the great work done in play-json and just simplify some case for lower memory footprint.
In addition we can provide a way to create efficiently a json object and json array without unnecessary allocation.

AST Target :

  • Json => Base of every json value.
  • JsObject => Represent an object backed by a mutable map and properly wrapped.
  • JsArray => Represent an array backed by a mutable list and properly wrapped.
  • JsNull => Represent a null value.
  • JsBoolean => Represent a boolean value.
  • JsString => Represent a string value.
  • JsLong => Represent a long value.
  • JsInt => Represent an int value.
  • JsDouble => Represent a double value.
  • JsFloat => Represent a float value.
  • JsBigDecimal => Represent a big decimal value.
  • JsBytes => Represent a byte string (Usefull for binary conversion).

Native json parser

Describe the feature

Build a json parser on top of Streamy parser to provide a better parser.
This feature allow to create directly Json AST and permit to remove completely dependencies with Jackson.

Externalize metrics reporter

Describe the feature

We can externalize metrics reporter by converting it in an Akka Stream Source.
We can continue to support console reporting by default and provide a convenient way to process metrics reporting to others Sink.

Move json stuff in another package

Describe the feature

Move json stuff in another package and add a package object to provide easy import.
Provide also better support for json evaluation and patch.

Support Riemann Plugin

Describe the feature

We can easily support riemann protocol by using the protobuf plugin

Correct json remove operation

Expected behavior

When we use json remove operation with mustExist flag to false we excepted that the operation successed in all cases.

Actual behavior

On json object or json array when we evaluate the json path, the operation is considered as failed if evaluation is failed.

Correct packaging without JMH

Expected behavior

When we package streamy or a plugin we expect a minimal number of libraries to work.

Actual behavior

Actually JMH is included in every package.

Exit on templating failure

Expected behavior

If envtpl is detected and executed we must ensure that templating has successed.

Actual behavior

Streamy is started even if envtpl failed.

Improve capture parsing

Expected behavior

Capture should be considered optional in some case when parsing fail.

Actual behavior

Capture is considered as mandatory in every case and fail when parsing fail.

Add a Test project

Describe the feature

Add a streamy test project to provide an easy way to import common test libraries.

Upgrade sbt plugins

Describe the feature

We can upgrade some sbt plugins :

  • sbt-native-packager
  • scalastyle-sbt-plugin
  • sbt-scoverage

Better plugin management

Describe the feature

We can provide a better plugin management.
Actually, we only load plugins from plugins folder and load plugins configuration from streamy configuration.
We need a separate folder that contains plugins configurations and another one that can contains plugin data if needed.

Embedded parser & printer

Describe the feature

Streamy can provide an embedded ByteString parser and an embedded Json printer allowing efficient parsing and printing.

Optimize compact during framing

Describe the feature

Currently we use akka framing and then we parse syslog.
This leads to a compact operation when a frame is founded.
We can avoid this compaction if we parse directly the frame.

Provide json pointer parser

Describe the feature

Provide a json pointer parser that can be used to parse directly json pointer from configuration.

Fix parsing of Syslog RFC3164

Expected behavior

The field day in the timestamp part can be represent using a single number.
The parser should support this representation.

Actual behavior

The parser isn't able to parse the following example:

<34>Apr  4 13:51:20 mymachine.example.com su[77042]: 'su root' failed for lonvick on /dev/pts/8

Improve size computation

Expected behavior

Efficient computation based on underlying structure or primitive.

Actual behavior

Actually we use an intermediate string representation to compute the length.

Support TLS over TCP

Describe the feature

Support TLS over TCP for client and server implementation.
It's mandatory to use where possible Lightbend SSL configuration.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.