Hi Sameera, I sent a PR to carbon4-kernel repository [1]. Could you please review and merge it? I created CARBON-15115 [2] for that.
Thanks! [1] https://github.com/wso2/carbon4-kernel/pull/125 [2] https://wso2.org/jira/browse/CARBON-15115 On Wed, Dec 3, 2014 at 1:53 PM, Ramith Jayasinghe <ram...@wso2.com> wrote: > Yep. This needs to be evaluated on loaded environments. > > On Wed, Dec 3, 2014 at 1:39 PM, Isuru Perera <isu...@wso2.com> wrote: > >> Hi all, >> >> I have committed what I did so far to the WSO2 SVN scratch area [1]. >> >> There are two components. >> >> 1. org.wso2.carbon.metrics.manager - Contains the WSO2 Metrics API, >> which will be used in the WSO2 platform. >> 2. org.wso2.carbon.metrics.impl - The implementation of Metric >> Service, which will internally use the Metrics Java Library [2]. >> >> The main reason for having our own API is to introduce the support for >> different metrics levels. This will also make sure that we are not tightly >> coupled with Metrics Java library. >> >> The org.wso2.carbon.metrics.manager.MetricManager [3] class has the main >> API. This class is similar to the Metrics' MetricRegistry class [4] and I >> have taken the helper methods to generate names etc. >> >> Yesterday, I organized a code review and following are the notes: >> >> Participants: Azeez, Sameera, Ramith. >> >> Code review was based on revision 210170 [5] >> >> - Azeez mentioned that having a global configuration for Level [6] >> might not be useful. Since we allow to create different Metrics with >> different levels, we need to have a way to specify level for each Metric >> similar to Log4J. Configurations should be decided initially rather than >> introducing later. >> - Ramith asked whether we can support annotations. Metrics [2] >> support annotations for Spring with Spring's AOP support. Besides, the >> annotation will help to measure up to method level only. It was decided >> that we can use the APIs directly as we can use the given APIs whenever we >> need to measure. >> - The use of ConcurrentHashMap need to be reevaluated. The >> MetricManager also uses a ConcurrentHashMap similar to MetricRegistry to >> avoid duplicate Metric objects. We must test the Metrics API in high >> concurrent scenarios. >> - We decided to integrate the metrics components to Carbon Kernel >> first. I will start integrating the metrics to Carbon Kernel 4.4 in a >> different branch. >> - When logging, isErrorEnabled may not be necessary [7], but it's >> okay to have it. >> >> Azeez, Sameera, Ramith, please add if I missed anything. >> >> In addition to the code review, I had a chat with Srinath yesterday >> morning. >> >> We discussed that we must have a UI for Metrics. I will share the details >> on that later. >> >> Thanks! >> >> Best Regards, >> >> [1] https://svn.wso2.org/repos/wso2/scratch/metrics >> [2] https://dropwizard.github.io/metrics >> [3] >> https://svn.wso2.org/repos/wso2/scratch/metrics/components/org.wso2.carbon.metrics.manager/src/main/java/org/wso2/carbon/metrics/manager/MetricManager.java >> [4] >> https://github.com/dropwizard/metrics/blob/master/metrics-core/src/main/java/com/codahale/metrics/MetricRegistry.java >> [5] http://wso2.org/svn/browse/wso2?view=revision&revision=210170 >> [6] >> http://wso2.org/svn/browse/wso2/scratch/metrics/components/org.wso2.carbon.metrics.impl/src/test/resources/metrics.xml?view=markup&pathrev=210170 >> [7] >> http://wso2.org/svn/browse/wso2/scratch/metrics/components/org.wso2.carbon.metrics.manager/src/main/java/org/wso2/carbon/metrics/manager/internal/MetricManagerComponent.java?view=markup&pathrev=210170 >> >> On Tue, Nov 18, 2014 at 12:11 PM, Isuru Perera <isu...@wso2.com> wrote: >> >>> Hi, >>> >>> Me & Srinath discussed a bit more on implementation. Following are the >>> notes. >>> >>> - We need to have different levels for each metric similar to Log4J >>> levels. The API for metric will have a way to specify the level. >>> - There should be a way to view historical data. By default, we can >>> use a log file. >>> - There should be a configuration file for metrics. The enable >>> option will be part of the configuration file. But it can be overridden >>> by >>> a System property. >>> >>> Srinath, >>> >>> Please add if I missed anything. Also regarding the reporting options, >>> the metrics provides support for Ganglia & Graphite [1]. The in-built >>> support for HTTP reporting might not be directly useful for us [2]. I will >>> check on these and see how we can get the data. >>> >>> Thanks! >>> >>> Best Regards, >>> [1] >>> https://dropwizard.github.io/metrics/3.1.0/getting-started/#other-reporting >>> [2] >>> https://dropwizard.github.io/metrics/3.1.0/manual/servlets/#manual-servlets >>> >>> >>> On Tue, Nov 18, 2014 at 7:53 AM, Srinath Perera <srin...@wso2.com> >>> wrote: >>> >>>> Look good Isuru!! >>>> >>>> On Thu, Nov 13, 2014 at 6:58 PM, Isuru Perera <isu...@wso2.com> wrote: >>>> >>>>> Hi all, >>>>> >>>>> I played with following performance libraries. >>>>> >>>>> - Metrics >>>>> - Parfait >>>>> - JAMon >>>>> - Java Simon >>>>> - Perf4J >>>>> >>>>> I did a simple comparison and blogged [1]. >>>>> >>>>> As Srinath mentioned, the Metrics library is more suitable for this >>>>> proposal. >>>>> >>>>> It supports various measuring instruments like Meters, Counters, >>>>> Histograms, Timers etc. >>>>> >>>>> Metrics supports JMX reporting and we should be able to write our own >>>>> reporting implementations easily. We can use a reporting implementation to >>>>> integrate with BAM. >>>>> >>>>> There is no support to enable/disable metrics. Since this is an >>>>> important feature for us, I'm thinking of introducing a custom component >>>>> for performance monitoring. >>>>> >>>>> The custom component will support to enable/disable performance >>>>> monitoring via system property and JMX. The WSO2 components will use the >>>>> new performance monitoring component and we will be using the Metrics only >>>>> inside the new component. >>>>> >>>>> I'm working on this and for testing we need to select a WSO2 product. >>>>> I'm thinking of adding the performance probes to WSO2 API Manager first. >>>>> Since WSO2 CEP is also mentioned, we can have a look at that also. >>>>> >>>>> Please share any suggestions or feedback. >>>>> >>>>> I will update the thread once I create the initial design. >>>>> >>>>> Thanks! >>>>> >>>>> Best Regards, >>>>> >>>>> [1] >>>>> http://isuru-perera.blogspot.com/2014/11/java-performance-monitoring-libraries.html >>>>> >>>>> >>>>> On Mon, Sep 29, 2014 at 10:00 AM, Srinath Perera <srin...@wso2.com> >>>>> wrote: >>>>> >>>>>> Thanks Thomas!! >>>>>> >>>>>> Paul, I looked at all 3 and really liked what Thomas sent ( >>>>>> https://dropwizard.github.io/metrics/3.1.0/getting-started/). >>>>>> Licence is Apache 2. >>>>>> >>>>>> I think I will try this out with a training project. >>>>>> >>>>>> --Srinath >>>>>> >>>>>> On Sat, Sep 27, 2014 at 11:37 AM, Thomas Wieger < >>>>>> developer.wie...@gmail.com> wrote: >>>>>> >>>>>>> please have a look on the metrics lib, which quite nicely provides >>>>>>> support for capturing different kinds of statistics. see >>>>>>> https://dropwizard.github.io/metrics/3.1.0/ >>>>>>> >>>>>>> >>>>>>> regards, >>>>>>> >>>>>>> thomas >>>>>>> >>>>>>> Am Freitag, 26. September 2014 schrieb Sajith Ravindra : >>>>>>> >>>>>>> >>>>>>>> IMHO, CEP is another product where this kind of probes can be >>>>>>>> really useful as we have to deal with performance related >>>>>>>> requirements. As >>>>>>>> there's a major refactoring going on in siddhi I think we can we plant >>>>>>>> probes like this into the Siddhi engine. It will be useful to evaluate >>>>>>>> the >>>>>>>> re-factored Sindhi engines performance as well as to figure out >>>>>>>> performance >>>>>>>> bottlenecks in the future. >>>>>>>> >>>>>>>> >>>>>>>> Thanks >>>>>>>> *,Sajith Ravindra* >>>>>>>> Senior Software Engineer >>>>>>>> WSO2 Inc.; http://wso2.com >>>>>>>> lean.enterprise.middleware >>>>>>>> >>>>>>>> mobile: +94 77 2273550 >>>>>>>> blog: http://sajithr.blogspot.com/ >>>>>>>> <http://lk.linkedin.com/pub/shani-ranasinghe/34/111/ab> >>>>>>>> >>>>>>>> On Fri, Sep 26, 2014 at 8:38 AM, Srinath Perera <srin...@wso2.com> >>>>>>>> wrote: >>>>>>>> >>>>>>>>> We have some pretty nice probes already in ESB, that let you look >>>>>>>>> into what is going in the same running in production. I think we >>>>>>>>> need to >>>>>>>>> do this generally and build it to other products. That should reduce >>>>>>>>> time >>>>>>>>> we spent debugging issues significantly. >>>>>>>>> >>>>>>>>> My proposal is to build a probe Lib that looks like following. >>>>>>>>> >>>>>>>>> There are two kinds of things you need to collect. >>>>>>>>> >>>>>>>>> 1. Throughput at give point of code (how fast calls goes >>>>>>>>> though) >>>>>>>>> 2. Latency between two points. >>>>>>>>> >>>>>>>>> >>>>>>>>> We will have two types of Probes. Code would look like following. >>>>>>>>> >>>>>>>>> Probe probe = new Probe("Name", "throughput", timeDuration); >>>>>>>>> .. >>>>>>>>> probe.recordThroughput(); >>>>>>>>> >>>>>>>>> Probe probe = new Probe("Name", "latency", timeDuration, logLevel); >>>>>>>>> ... >>>>>>>>> long id = probe.startTicking() // this so same probe can be used >>>>>>>>> by many threads >>>>>>>>> ... >>>>>>>>> probe.endTicking(id); >>>>>>>>> >>>>>>>>> Probe will summarise data over given duration and expose. We need >>>>>>>>> >>>>>>>>> >>>>>>>>> 1. JMX bean >>>>>>>>> 2. BAM Agent >>>>>>>>> 3. Can turn on, off via JMX agent or via System property >>>>>>>>> 4. Have Tool Box >>>>>>>>> 5. Have in product UI >>>>>>>>> 6. Can configured to write data to logs >>>>>>>>> >>>>>>>>> Each probe should be very small and should be able to create >>>>>>>>> thousands without much effect. (e.g. create one for each mediator >>>>>>>>> type) >>>>>>>>> >>>>>>>>> WDYT? >>>>>>>>> >>>>>>>>> --Srinath >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> -- >>>>>>>>> ============================ >>>>>>>>> Blog: http://srinathsview.blogspot.com twitter:@srinath_perera >>>>>>>>> Site: http://people.apache.org/~hemapani/ >>>>>>>>> Photos: http://www.flickr.com/photos/hemapani/ >>>>>>>>> Phone: 0772360902 >>>>>>>>> >>>>>>>>> _______________________________________________ >>>>>>>>> Architecture mailing list >>>>>>>>> Architecture@wso2.org >>>>>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> ============================ >>>>>> Blog: http://srinathsview.blogspot.com twitter:@srinath_perera >>>>>> Site: http://people.apache.org/~hemapani/ >>>>>> Photos: http://www.flickr.com/photos/hemapani/ >>>>>> Phone: 0772360902 >>>>>> >>>>>> _______________________________________________ >>>>>> Architecture mailing list >>>>>> Architecture@wso2.org >>>>>> https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture >>>>>> >>>>>> >>>>> >>>>> >>>>> -- >>>>> Isuru Perera >>>>> Senior Software Engineer | WSO2, Inc. | http://wso2.com/ >>>>> Lean . Enterprise . Middleware >>>>> >>>>> about.me/chrishantha >>>>> >>>> >>>> >>>> >>>> -- >>>> ============================ >>>> Blog: http://srinathsview.blogspot.com twitter:@srinath_perera >>>> Site: http://people.apache.org/~hemapani/ >>>> Photos: http://www.flickr.com/photos/hemapani/ >>>> Phone: 0772360902 >>>> >>> >>> >>> >>> -- >>> Isuru Perera >>> Senior Software Engineer | WSO2, Inc. | http://wso2.com/ >>> Lean . Enterprise . Middleware >>> >>> about.me/chrishantha >>> >> >> >> >> -- >> Isuru Perera >> Senior Software Engineer | WSO2, Inc. | http://wso2.com/ >> Lean . Enterprise . Middleware >> >> about.me/chrishantha >> > > > > -- > Ramith Jayasinghe > Technical Lead > WSO2 Inc., http://wso2.com > lean.enterprise.middleware > > E: ram...@wso2.com > P: +94 777542851 > > -- Isuru Perera Senior Software Engineer | WSO2, Inc. | http://wso2.com/ Lean . Enterprise . Middleware about.me/chrishantha
_______________________________________________ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture