You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-issues@jackrabbit.apache.org by "Chetan Mehrotra (JIRA)" <ji...@apache.org> on 2015/11/18 07:53:11 UTC

[jira] [Comment Edited] (OAK-3478) Provide JMX Beans for Oak that can be monitored by external tooling.

    [ https://issues.apache.org/jira/browse/OAK-3478?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15008549#comment-15008549 ] 

Chetan Mehrotra edited comment on OAK-3478 at 11/18/15 6:52 AM:
----------------------------------------------------------------

[first patch|^OAK-3478-v1.patch] which implements approach #2 above

It introduces a {{TimeSeriesExporterMBean}} bean which wraps any existing MBean and exposes the last second data of various time series attributes in simple long form. Its a DynamicMBean where attribute information is generated programatically

*Usage*

To expose a TimeSeries data in simple form just mark the attribute with an annotation
{code:java}
import org.apache.jackrabbit.oak.commons.jmx.DataType;

import static org.apache.jackrabbit.oak.commons.jmx.DataTypeOption.TIME_SERIES;

public interface RepositoryStatsMBean {
    @DataType(TIME_SERIES)
    CompositeData getSessionCount();

    ...
}
{code}

Once annotated then WhiteboardUtils would check if the MBean being registered has a time series data. If yes then it registers another mbean which just expose the simpler form of time series data

*Open Item*
# New Mbean naming - Currently the patch just appends "-simple" to the name of original mbean as a quick change. Probably we should change the type
# Current logic just picks the first element of  {{per second}} array of TimeSeries CompositeData. This should be fine but need opinion from others

[~ianeboston] [~mduerig] Can you review the proposed approach.

[~ianeboston] - If you can give this a try on your setup and provide some feedback that would be helpful to determine if proposed solution meets the requirement or not



was (Author: chetanm):
[first patch|^OAK-3478-v1.patch] which implements approach #2 above

It introduces a {{TimeSeriesExporterMBean}} bean which wraps any existing MBean and exposes the last second data of various time series attributes in simple long form. Its a DynamicMBean where attribute information is generated programatically

*Usage*

To expose a TimeSeries data in simple form just mark the attribute with an annotation
{code:java}
import org.apache.jackrabbit.oak.commons.jmx.DataType;

import static org.apache.jackrabbit.oak.commons.jmx.DataTypeOption.TIME_SERIES;

public interface RepositoryStatsMBean {
    @DataType(TIME_SERIES)
    CompositeData getSessionCount();

    ...
}
{code}

Once annotated then WhiteboardUtils would check if the MBean being registered has a time series data. If yes then it registers another mbean which just expose the simpler form of time series data

*Open Item*
# New Mbean naming - Currently the patch just appends "-simple" to the name of original mbean as a quick change. Probably we should change the type

[~ianeboston] [~mduerig] Can you review the proposed approach.

[~ianeboston] - If you can give this a try on your setup and provide some feedback that would be helpful to determine if proposed solution meets the requirement or not


> Provide JMX Beans for Oak that can be monitored by external tooling.
> --------------------------------------------------------------------
>
>                 Key: OAK-3478
>                 URL: https://issues.apache.org/jira/browse/OAK-3478
>             Project: Jackrabbit Oak
>          Issue Type: Improvement
>          Components: core, jcr, lucene, query
>    Affects Versions: 1.3.7
>            Reporter: Ian Boston
>            Assignee: Chetan Mehrotra
>             Fix For: 1.3.11
>
>         Attachments: OAK-3478-v1.patch
>
>
> The Current JMX beans, while ok in the Sling Web Console are hard if not impossible to monitor with external tooling, as external tooling will poll for current values, ideally from named attributes containing primitive types. Those values containing timers, counters or gauges. Timers timing an operation. Counters counting an operation. Guages measuring an instantaneous value.
> The request is to provide a small number of JMX beans that can be configured into an external monitoring tool like AppDynamics, Ganglia, NewRelic, Splunk etc etc, which in turn will provide long term time series and statistics. Primitive values of this form can also be graphed with ease in JConsole, VisualVM etc. A improvement for the Sling Web Console might be to add a Console that can maintain a TimeSeries graph of any JMX bean by object name in the same way Ganglia, AppDynamics does, however that may be duplicating existing functionality.
> The Metrics Library could be considered to provide the above functionality for all JMX beans and monitoring, although its footprint at 111K might be considered too big as an additional dependency.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)