Thanks all for the suggestions. I'll incorporate all the
suggestions/questions by each one of you and come up with concrete design
with multiple phases/staging.
   - Deepak

On Thu, May 10, 2018 at 8:22 AM, Ananth G <ananthg.a...@gmail.com> wrote:

> +1 for the feature.
>
> +1 for an abstracted way of metrics library integration.
>
> Some additional thoughts on this:
>
> - We might have implications of adding a set of dependencies from drop
> wizard into the engine core ( guava versions etc).
> - Flink as pointed out by Thomas seems to have taken an interesting
> approach to metrics ( apart from supporting multiple reporters ) - Any
> reporter is only enabled if the relevant jar is put in the classpath.
> - There seems to be two worlds for generating the metric names. 1. Dot
> notation separated ( or some separator thereof. Ex: dropwizard style) and
> 2. high dimensional metric names using key value pair tags.  ( prometheus
> style). We might have to "transform" the dot hierarchical notation to a key
> value pair based notation based on the reporter that is chosen by the end
> user.
> - The scope of the implementation is too big as I understand it and perhaps
> this feature needs to be done in multiple JIRAs. Also malhar is still at
> java-7 while engine is at java-8.
>
> Some questions:
>
> - Is there a plan to expose the metric via a jetty end point on each JVM ?
> ( if configured )
> - How do we plan to handle dynamic partitioning of operators for metrics ?
> ( i.e possibly short-lived JVMs )
> - This feature implies that we will no longer support equivalent of
> ComplexType of Autometrics ?
> - This feature also implies that we will no longer support autometric
> aggregators ? ( and leave this to the metric tools functionality)
>
>
> Regards,
> Ananth
>
> On Thu, May 10, 2018 at 12:37 PM, Chinmay Kolhatkar <
> chinmaykolhatka...@gmail.com> wrote:
>
> > +1 for approach 1. As Thomas mentioned, I think there metrics layer
> should
> > be abstracted out from its implementation. This way one can plugin
> > different metrics systems in apex.
> >
> > Also keep in mind that there is a lot of code which uses AutoMetrics
> > annotations. We should help a smooth transition from that. As next
> release
> > will be a major version release, this is a good opportunity for getting
> rid
> > of old AutoMetrics and counters functionality.
> >
> > Regards,
> > Chinmay.
> >
> >
> > On Thu, 10 May 2018, 4:47 am Vlad Rozov, <vro...@apache.org> wrote:
> >
> > > +1 for the #1 proposal.
> > >
> > > Thank you,
> > >
> > > Vlad
> > >
> > > On 5/9/18 07:14, Thomas Weise wrote:
> > > > +1 for the initiative
> > > >
> > > > Some thoughts:
> > > >
> > > > - it is probably good to retain a level of abstraction, to avoid
> direct
> > > > dependency on dropwizard
> > > > - support programmatic metric creation (not just annotations)
> > > > - remove deprecated counter and auto-metric code and migrate
> operators
> > to
> > > > use new API
> > > > - which metric reporting systems will be supported out of the box
> > > >
> > > > You can also take a look at how this was structured in Flink:
> > > >
> > > https://ci.apache.org/projects/flink/flink-docs-
> release-1.4/monitoring/
> > metrics.html
> > > >
> > > > Thanks,
> > > > Thomas
> > > >
> > > >
> > > > On Tue, May 8, 2018 at 8:56 AM, Deepak Narkhede <
> > mailtodeep...@gmail.com
> > > >
> > > > wrote:
> > > >
> > > >> Hi Community,
> > > >>
> > > >> I want to propose addition of metrics like gauges, meters, counters
> > and
> > > >> historgram for the following components.
> > > >> 1) Addition of metrics for Container Stats.
> > > >> 2) Addition of metrics for Operator Stats.
> > > >> 3) Addition of  metrics for  Stram Application Master stats.
> > > >> 4) Addition of metrics for JVM related stats for all containers.
> > > >>
> > > >> To implement them would be using metrics dropwizard api's. (
> > > >> http://metrics.dropwizard.io/)
> > > >> Use cases:
> > > >> 1) Can be directly pushed to external visualisation system like
> > > Graphite.
> > > >> 2) Can be viewed in visualVM tools through JMX.
> > > >> 3) Can be outputted to console.
> > > >> 4) It is also possible to push the metrics to custom sink.
> > > >>
> > > >> We will also need to write sinks and reporter, if required for
> custom
> > > >> sinks.
> > > >>
> > > >> Design/Implementation approach:
> > > >> Way #1:
> > > >> 1) Create new annotations like @MetricTypeGauge, @MetricTypeMeter,
> > > >> @MetricTypeCounter, @MetricTypeHistogram. They can be both fields
> and
> > > >> methods.
> > > >> 2) Add them to respective methods or fields like StreamingContainer,
> > > >> StreamingAppMasterService for extraction of relevant metrics.
> > > >> 3) While Node creation ( InputNode/GeneticNode/OiONode), we create
> > and
> > > >> initialise  the metrics registry depending on components.
> > > >> 4) While collectMetrics() part of operator runner thread (
> > InputNode.run
> > > >> /GenericNode.run), we actually invoke the annotations methods and
> > > collect
> > > >> different types of metrics.
> > > >> 5) We can have a sink which pushes the metrics to reporter like
> > Console,
> > > >> JMX etc.
> > > >>
> > > >> Way #2:
> > > >> Use existing AutoMetrics annotations, convert some metrics to
> > different
> > > >> types like gauge, counter etc..But this cannot be done generically
> as
> > we
> > > >> don't know the types. Still more investigation is going on this
> > > approach.
> > > >>
> > > >> I would prefer first way.
> > > >>
> > > >> Note: There are some complications, if two operators are deployed on
> > > same
> > > >> jvm conatiner. But  I think it can be resolved by creating two
> > different
> > > >> metrics registry with unique id from JVM.
> > > >>
> > > >> Let me know your thoughts on this.
> > > >>
> > > >> Thanks,
> > > >> Deepak
> > > >>
> > >
> > >
> >
>



-- 
Thanks & Regards

Deepak Narkhede

Reply via email to