New Monitoring System: items to complete before GA

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

New Monitoring System: items to complete before GA

dmagda
Igniters,

There was a private discussion between Nikolay Izhikov, Andrey Gura, Alex
Goncharuk and I some time ago where we attempted to outline a list of tasks
to complete before announcing the feature in the GA state (removing the
experimental flag from the new APIs and deprecating the legacy ones).
Folks, with your permission, let me share the list first and next we can
talk out each item in detail separately:

1. Add ability to enable\disable subset of the metrics for collection:
https://issues.apache.org/jira/browse/IGNITE-11927
Am I right that the task will let us perform a desired configuration
MetricExporterSPI and its specific implementation? Frankly, I couldn't
figure out how to do that
with "setExportFilter(Predicate<ReadOnlyMetricRegistry> filter);" method --
probably, that's just the matter of documentation.

2. Extension of IgniteSpiContext in order to allow Ignite developers to
implement their own exporters (with no usage of the internal API).

3. Adding/extending/removing public metrics related to the API
facade. Andrey, please elaborate on this item if needed.

Also, I had a chance to experience the API in wearing a hat of an
application developer while preparing for the Ignite 2.8 webinar. Please
take into account my feedback below. Overall, I was impressed with the way
the new system is designed and operates. All I had to do is just to
register exporters and connect my favorite tool to the cluster. Kudos to
Nikolay, Andrey and everyone else involved. So, that's my list and I ready
to create JIRA tickets whenever is relevant:

4. After registering an exporter with a node only a subset of metrics gets
updated. For instance, "GetTime_X" set of metrics belonging to a specific
cache get updated all the times while CacheGets/Puts/Hits require me to
enable "setStatisticsEnable(true)" for the cache. This is extremely
confusing. Any way we can remove this ambiguity? Guess the same applies for
memory and persistence metrics - there are old ones that might require to
turn on "metricsEnabled" flag for data regions.

5. The system view that should track compute tasks (views.tasks) is always
empty and I can see a number of tasks running via the compute.jobs registry
or in "views.views" mxbean. Again, confusing from the application developer
standpoint.

6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
placed under "org.apache.ignite.{node_id}". Guess this is left as is for
now to preserve backward compatibility.

7. You see hundreds of metrics once connect through JMX and it's hard to
sort out the valuable ones. The documentation can do a great job outlining
the right ones but we can also add descriptions to MXBeans explaining what
a metric is used for.

8. Failed to use LogExporterSpi:
https://issues.apache.org/jira/browse/IGNITE-12880

-
Denis
Reply | Threaded
Open this post in threaded view
|

Re: New Monitoring System: items to complete before GA

Nikolay Izhikov-2
> 1. Add ability to enable\disable subset of the metrics for collection:
> https://issues.apache.org/jira/browse/IGNITE-11927
> Am I right that the task will let us perform a desired configuration
MetricExporterSPI and its specific implementation?

This improvement should allow Ignite users to disable or enable
`MetricsRegistry` globally on the node.
When some `MetricRegistry` disabled then registry:
* Do not consume resources(CPU, RAM) to keep metrics values up to
date(don’t perform increment, decrement operations,  etc)
* Can’t be viewed in any exporter.

> Frankly, I couldn't figure out how to do that with
"setExportFilter(Predicate<ReadOnlyMetricRegistry> filter);"

With filter user can exclude arbitrary registry from arbitrary exporter.
Example of filtering out all cache metrics from JMX:

```
JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));

cfg.setMetricExporterSpi(jmxSpi);
```

> 2. Extension of IgniteSpiContext in order to allow Ignite developers to
implement their own exporters

Please, clarify, your idea.
Exporters can be implemented without usage of the internal API.
You can look into JmxMetricExporterSpi as an example.

> 3. Adding/extending/removing public metrics related to the API facade.

I think we can start with a discussion and finishing Java API to read
metrics.
It implemented in my PR [1].

> 4. After registering an exporter with a node only a subset of metrics
gets updated. This is extremely confusing. Any way we can remove this
ambiguity?

Yes, it a bad thing.
And it’s known restriction of the current implementation that was
introduced to preserve backward compatibility.
It seems we can remove this restriction after  IGNITE-11927 would be
implemented.

> 5. The system view that should track compute tasks (views.tasks) is
always empty

TASKS reflects the running task that was started on the local node.
You can find an example of using this view in tests [2]
It seems we should add examples for the views.

The view to observe compute JOBS(parts of the task that are executed on the
remote node) was added by me in [3]
It’s not a part of 2.8.0 release but should be available in 2.8.1

> 6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
placed under "org.apache.ignite.{node_id}".

Please, create a ticket and I will try to fix it.

> we can also add descriptions to MXBeans explaining what a metric is used
for.

Great idea! Let’s do it, for sure!
Please, create a ticket for it

> 8. Failed to use LogExporterSpi:

On my plate, I will fix it.

[1] https://github.com/apache/ignite/pull/7283
[2]
https://github.com/apache/ignite/blob/master/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java#L236
[3] https://issues.apache.org/jira/browse/IGNITE-12745


ср, 8 апр. 2020 г. в 23:10, Denis Magda <[hidden email]>:

> Igniters,
>
> There was a private discussion between Nikolay Izhikov, Andrey Gura, Alex
> Goncharuk and I some time ago where we attempted to outline a list of tasks
> to complete before announcing the feature in the GA state (removing the
> experimental flag from the new APIs and deprecating the legacy ones).
> Folks, with your permission, let me share the list first and next we can
> talk out each item in detail separately:
>
> 1. Add ability to enable\disable subset of the metrics for collection:
> https://issues.apache.org/jira/browse/IGNITE-11927
> Am I right that the task will let us perform a desired configuration
> MetricExporterSPI and its specific implementation? Frankly, I couldn't
> figure out how to do that
> with "setExportFilter(Predicate<ReadOnlyMetricRegistry> filter);" method --
> probably, that's just the matter of documentation.
>
> 2. Extension of IgniteSpiContext in order to allow Ignite developers to
> implement their own exporters (with no usage of the internal API).
>
> 3. Adding/extending/removing public metrics related to the API
> facade. Andrey, please elaborate on this item if needed.
>
> Also, I had a chance to experience the API in wearing a hat of an
> application developer while preparing for the Ignite 2.8 webinar. Please
> take into account my feedback below. Overall, I was impressed with the way
> the new system is designed and operates. All I had to do is just to
> register exporters and connect my favorite tool to the cluster. Kudos to
> Nikolay, Andrey and everyone else involved. So, that's my list and I ready
> to create JIRA tickets whenever is relevant:
>
> 4. After registering an exporter with a node only a subset of metrics gets
> updated. For instance, "GetTime_X" set of metrics belonging to a specific
> cache get updated all the times while CacheGets/Puts/Hits require me to
> enable "setStatisticsEnable(true)" for the cache. This is extremely
> confusing. Any way we can remove this ambiguity? Guess the same applies for
> memory and persistence metrics - there are old ones that might require to
> turn on "metricsEnabled" flag for data regions.
>
> 5. The system view that should track compute tasks (views.tasks) is always
> empty and I can see a number of tasks running via the compute.jobs
> registry
> or in "views.views" mxbean. Again, confusing from the application developer
> standpoint.
>
> 6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
> placed under "org.apache.ignite.{node_id}". Guess this is left as is for
> now to preserve backward compatibility.
>
> 7. You see hundreds of metrics once connect through JMX and it's hard to
> sort out the valuable ones. The documentation can do a great job outlining
> the right ones but we can also add descriptions to MXBeans explaining what
> a metric is used for.
>
> 8. Failed to use LogExporterSpi:
> https://issues.apache.org/jira/browse/IGNITE-12880
>
> -
> Denis
>
Reply | Threaded
Open this post in threaded view
|

Re: New Monitoring System: items to complete before GA

dmagda
Nikolay, thanks for joining the discussion.

Please give me a few days to respond and create tickets. A bit hectic week.

-
Denis


On Sat, Apr 18, 2020 at 6:10 AM Nikolay Izhikov <[hidden email]> wrote:

> > 1. Add ability to enable\disable subset of the metrics for collection:
> > https://issues.apache.org/jira/browse/IGNITE-11927
> > Am I right that the task will let us perform a desired configuration
> MetricExporterSPI and its specific implementation?
>
> This improvement should allow Ignite users to disable or enable
> `MetricsRegistry` globally on the node.
> When some `MetricRegistry` disabled then registry:
> * Do not consume resources(CPU, RAM) to keep metrics values up to
> date(don’t perform increment, decrement operations,  etc)
> * Can’t be viewed in any exporter.
>
> > Frankly, I couldn't figure out how to do that with
> "setExportFilter(Predicate<ReadOnlyMetricRegistry> filter);"
>
> With filter user can exclude arbitrary registry from arbitrary exporter.
> Example of filtering out all cache metrics from JMX:
>
> ```
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
>
> cfg.setMetricExporterSpi(jmxSpi);
> ```
>
> > 2. Extension of IgniteSpiContext in order to allow Ignite developers to
> implement their own exporters
>
> Please, clarify, your idea.
> Exporters can be implemented without usage of the internal API.
> You can look into JmxMetricExporterSpi as an example.
>
> > 3. Adding/extending/removing public metrics related to the API facade.
>
> I think we can start with a discussion and finishing Java API to read
> metrics.
> It implemented in my PR [1].
>
> > 4. After registering an exporter with a node only a subset of metrics
> gets updated. This is extremely confusing. Any way we can remove this
> ambiguity?
>
> Yes, it a bad thing.
> And it’s known restriction of the current implementation that was
> introduced to preserve backward compatibility.
> It seems we can remove this restriction after  IGNITE-11927 would be
> implemented.
>
> > 5. The system view that should track compute tasks (views.tasks) is
> always empty
>
> TASKS reflects the running task that was started on the local node.
> You can find an example of using this view in tests [2]
> It seems we should add examples for the views.
>
> The view to observe compute JOBS(parts of the task that are executed on the
> remote node) was added by me in [3]
> It’s not a part of 2.8.0 release but should be available in 2.8.1
>
> > 6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
> placed under "org.apache.ignite.{node_id}".
>
> Please, create a ticket and I will try to fix it.
>
> > we can also add descriptions to MXBeans explaining what a metric is used
> for.
>
> Great idea! Let’s do it, for sure!
> Please, create a ticket for it
>
> > 8. Failed to use LogExporterSpi:
>
> On my plate, I will fix it.
>
> [1] https://github.com/apache/ignite/pull/7283
> [2]
>
> https://github.com/apache/ignite/blob/master/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java#L236
> [3] https://issues.apache.org/jira/browse/IGNITE-12745
>
>
> ср, 8 апр. 2020 г. в 23:10, Denis Magda <[hidden email]>:
>
> > Igniters,
> >
> > There was a private discussion between Nikolay Izhikov, Andrey Gura, Alex
> > Goncharuk and I some time ago where we attempted to outline a list of
> tasks
> > to complete before announcing the feature in the GA state (removing the
> > experimental flag from the new APIs and deprecating the legacy ones).
> > Folks, with your permission, let me share the list first and next we can
> > talk out each item in detail separately:
> >
> > 1. Add ability to enable\disable subset of the metrics for collection:
> > https://issues.apache.org/jira/browse/IGNITE-11927
> > Am I right that the task will let us perform a desired configuration
> > MetricExporterSPI and its specific implementation? Frankly, I couldn't
> > figure out how to do that
> > with "setExportFilter(Predicate<ReadOnlyMetricRegistry> filter);" method
> --
> > probably, that's just the matter of documentation.
> >
> > 2. Extension of IgniteSpiContext in order to allow Ignite developers to
> > implement their own exporters (with no usage of the internal API).
> >
> > 3. Adding/extending/removing public metrics related to the API
> > facade. Andrey, please elaborate on this item if needed.
> >
> > Also, I had a chance to experience the API in wearing a hat of an
> > application developer while preparing for the Ignite 2.8 webinar. Please
> > take into account my feedback below. Overall, I was impressed with the
> way
> > the new system is designed and operates. All I had to do is just to
> > register exporters and connect my favorite tool to the cluster. Kudos to
> > Nikolay, Andrey and everyone else involved. So, that's my list and I
> ready
> > to create JIRA tickets whenever is relevant:
> >
> > 4. After registering an exporter with a node only a subset of metrics
> gets
> > updated. For instance, "GetTime_X" set of metrics belonging to a specific
> > cache get updated all the times while CacheGets/Puts/Hits require me to
> > enable "setStatisticsEnable(true)" for the cache. This is extremely
> > confusing. Any way we can remove this ambiguity? Guess the same applies
> for
> > memory and persistence metrics - there are old ones that might require to
> > turn on "metricsEnabled" flag for data regions.
> >
> > 5. The system view that should track compute tasks (views.tasks) is
> always
> > empty and I can see a number of tasks running via the compute.jobs
> > registry
> > or in "views.views" mxbean. Again, confusing from the application
> developer
> > standpoint.
> >
> > 6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
> > placed under "org.apache.ignite.{node_id}". Guess this is left as is for
> > now to preserve backward compatibility.
> >
> > 7. You see hundreds of metrics once connect through JMX and it's hard to
> > sort out the valuable ones. The documentation can do a great job
> outlining
> > the right ones but we can also add descriptions to MXBeans explaining
> what
> > a metric is used for.
> >
> > 8. Failed to use LogExporterSpi:
> > https://issues.apache.org/jira/browse/IGNITE-12880
> >
> > -
> > Denis
> >
>
Reply | Threaded
Open this post in threaded view
|

Re: New Monitoring System: items to complete before GA

dmagda
In reply to this post by Nikolay Izhikov-2
Nikolay, thanks for a detailed response.

(I've created a handful of tickets linking to IEP-35 with the label named
similarly. I didn't assign any tickets on you letting you decide what you'd
like to take over personally)

With filter user can exclude arbitrary registry from arbitrary exporter.
> Example of filtering out all cache metrics from JMX:


Gotcha, now it's clear. I would add this to the documentation if you don't
mind:
https://issues.apache.org/jira/browse/IGNITE-12943

> 2. Extension of IgniteSpiContext in order to allow Ignite developers to
> implement their own exporters
> Please, clarify, your idea.
> Exporters can be implemented without usage of the internal API.
> You can look into JmxMetricExporterSpi as an example.


@Andrey Gura <[hidden email]>, could you please join and clarify this
requirement?

> 4. After registering an exporter with a node only a subset of metrics
> gets updated. This is extremely confusing. Any way we can remove this
> ambiguity?
> Yes, it a bad thing.
> And it’s known restriction of the current implementation that was
> introduced to preserve backward compatibility.
> It seems we can remove this restriction after  IGNITE-11927 would be
> implemented.


Agree, created a ticket we can jump on after IGNITE-11927 is ready:
https://issues.apache.org/jira/browse/IGNITE-12944

In the meantime, I've added callout "Enabling Collection of Legacy Metrics"
to the first section of the documentation page:
https://apacheignite.readme.io/docs/new-metrics

> 5. The system view that should track compute tasks (views.tasks) is
> always empty
> TASKS reflects the running task that was started on the local node.
> You can find an example of using this view in tests [2]
> It seems we should add examples for the views.


I've updated the documentation putting an example. Please check if it
sounds correct:
https://apacheignite.readme.io/docs/tasks


> > 6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
> placed under "org.apache.ignite.{node_id}".
> Please, create a ticket and I will try to fix it.


https://issues.apache.org/jira/browse/IGNITE-12945

> we can also add descriptions to MXBeans explaining what a metric is used
> for.
> Great idea! Let’s do it, for sure!
> Please, create a ticket for it


Cool! https://issues.apache.org/jira/browse/IGNITE-12946
-
Denis


On Sat, Apr 18, 2020 at 6:10 AM Nikolay Izhikov <[hidden email]> wrote:

> > 1. Add ability to enable\disable subset of the metrics for collection:
> > https://issues.apache.org/jira/browse/IGNITE-11927
> > Am I right that the task will let us perform a desired configuration
> MetricExporterSPI and its specific implementation?
>
> This improvement should allow Ignite users to disable or enable
> `MetricsRegistry` globally on the node.
> When some `MetricRegistry` disabled then registry:
> * Do not consume resources(CPU, RAM) to keep metrics values up to
> date(don’t perform increment, decrement operations,  etc)
> * Can’t be viewed in any exporter.
>
> > Frankly, I couldn't figure out how to do that with
> "setExportFilter(Predicate<ReadOnlyMetricRegistry> filter);"
>
> With filter user can exclude arbitrary registry from arbitrary exporter.
> Example of filtering out all cache metrics from JMX:
>
> ```
> JmxMetricExporterSpi jmxSpi = new JmxMetricExporterSpi();
> jmxSpi.setExportFilter(mreg -> !mreg.name().startsWith(«cache»));
>
> cfg.setMetricExporterSpi(jmxSpi);
> ```
>
> > 2. Extension of IgniteSpiContext in order to allow Ignite developers to
> implement their own exporters
>
> Please, clarify, your idea.
> Exporters can be implemented without usage of the internal API.
> You can look into JmxMetricExporterSpi as an example.
>
> > 3. Adding/extending/removing public metrics related to the API facade.
>
> I think we can start with a discussion and finishing Java API to read
> metrics.
> It implemented in my PR [1].
>
> > 4. After registering an exporter with a node only a subset of metrics
> gets updated. This is extremely confusing. Any way we can remove this
> ambiguity?
>
> Yes, it a bad thing.
> And it’s known restriction of the current implementation that was
> introduced to preserve backward compatibility.
> It seems we can remove this restriction after  IGNITE-11927 would be
> implemented.
>
> > 5. The system view that should track compute tasks (views.tasks) is
> always empty
>
> TASKS reflects the running task that was started on the local node.
> You can find an example of using this view in tests [2]
> It seems we should add examples for the views.
>
> The view to observe compute JOBS(parts of the task that are executed on the
> remote node) was added by me in [3]
> It’s not a part of 2.8.0 release but should be available in 2.8.1
>
> > 6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
> placed under "org.apache.ignite.{node_id}".
>
> Please, create a ticket and I will try to fix it.
>
> > we can also add descriptions to MXBeans explaining what a metric is used
> for.
>
> Great idea! Let’s do it, for sure!
> Please, create a ticket for it
>
> > 8. Failed to use LogExporterSpi:
>
> On my plate, I will fix it.
>
> [1] https://github.com/apache/ignite/pull/7283
> [2]
>
> https://github.com/apache/ignite/blob/master/modules/core/src/test/java/org/apache/ignite/internal/metric/SystemViewSelfTest.java#L236
> [3] https://issues.apache.org/jira/browse/IGNITE-12745
>
>
> ср, 8 апр. 2020 г. в 23:10, Denis Magda <[hidden email]>:
>
> > Igniters,
> >
> > There was a private discussion between Nikolay Izhikov, Andrey Gura, Alex
> > Goncharuk and I some time ago where we attempted to outline a list of
> tasks
> > to complete before announcing the feature in the GA state (removing the
> > experimental flag from the new APIs and deprecating the legacy ones).
> > Folks, with your permission, let me share the list first and next we can
> > talk out each item in detail separately:
> >
> > 1. Add ability to enable\disable subset of the metrics for collection:
> > https://issues.apache.org/jira/browse/IGNITE-11927
> > Am I right that the task will let us perform a desired configuration
> > MetricExporterSPI and its specific implementation? Frankly, I couldn't
> > figure out how to do that
> > with "setExportFilter(Predicate<ReadOnlyMetricRegistry> filter);" method
> --
> > probably, that's just the matter of documentation.
> >
> > 2. Extension of IgniteSpiContext in order to allow Ignite developers to
> > implement their own exporters (with no usage of the internal API).
> >
> > 3. Adding/extending/removing public metrics related to the API
> > facade. Andrey, please elaborate on this item if needed.
> >
> > Also, I had a chance to experience the API in wearing a hat of an
> > application developer while preparing for the Ignite 2.8 webinar. Please
> > take into account my feedback below. Overall, I was impressed with the
> way
> > the new system is designed and operates. All I had to do is just to
> > register exporters and connect my favorite tool to the cluster. Kudos to
> > Nikolay, Andrey and everyone else involved. So, that's my list and I
> ready
> > to create JIRA tickets whenever is relevant:
> >
> > 4. After registering an exporter with a node only a subset of metrics
> gets
> > updated. For instance, "GetTime_X" set of metrics belonging to a specific
> > cache get updated all the times while CacheGets/Puts/Hits require me to
> > enable "setStatisticsEnable(true)" for the cache. This is extremely
> > confusing. Any way we can remove this ambiguity? Guess the same applies
> for
> > memory and persistence metrics - there are old ones that might require to
> > turn on "metricsEnabled" flag for data regions.
> >
> > 5. The system view that should track compute tasks (views.tasks) is
> always
> > empty and I can see a number of tasks running via the compute.jobs
> > registry
> > or in "views.views" mxbean. Again, confusing from the application
> developer
> > standpoint.
> >
> > 6. Ignite MBeans are listed under "org.apache.{node_id}" but should be
> > placed under "org.apache.ignite.{node_id}". Guess this is left as is for
> > now to preserve backward compatibility.
> >
> > 7. You see hundreds of metrics once connect through JMX and it's hard to
> > sort out the valuable ones. The documentation can do a great job
> outlining
> > the right ones but we can also add descriptions to MXBeans explaining
> what
> > a metric is used for.
> >
> > 8. Failed to use LogExporterSpi:
> > https://issues.apache.org/jira/browse/IGNITE-12880
> >
> > -
> > Denis
> >
>