camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: camel-metrics Component
Date Fri, 07 Nov 2014 15:22:29 GMT
Yeah it looks like by default they wont use same registry because you
would need to add a registry with a name to the registry, and then
configure the metrics camel component to use a registry by its name.

The default name to lookup is "metricRegistry" so you can do

Map registry = new SimpleRegistry();
registry.put("metricsRegistry", new com.codahale.metrics.MetricRegistry();

CamelContext camel = new DefaultCamelContext(registry);





On Fri, Nov 7, 2014 at 4:04 PM, James L Greene <jlgreene2@aep.com> wrote:
> So you're saying this is something that would have to go on the development roadmap?
 I'm writing several batch/standalone processes which I need to capture metrics like this,
to be recorded in a data reconciliation system.  This component seemed like a good way to
go, but if I can't capture the metrics at the end of the job, I might have to figure out another
way to do this.
>
> Regards,
> Jim Greene
> Principal IT Architect, Enterprise Architecture & Strategy
> American Electric Power
> One Riverside Plaza, 11th Floor
> Columbus, OH 43125
> Phone:  (w) 614-716-2617
> Email:  jlgreene2@aep.com
>
>
> -----Original Message-----
> From: Claus Ibsen [mailto:claus.ibsen@gmail.com]
> Sent: Friday, November 07, 2014 9:26 AM
> To: users@camel.apache.org
> Subject: Re: camel-metrics Component
>
>  This is an EXTERNAL email. STOP. THINK before you CLICK links or OPEN attachments.
>
> **********************************************************************
> Ah the route policy and the metrics component is not identical. They are just hosted
in the same JAR.
>
> The route policy is self container what details it records. I guess we could combine
those so you can also do like you to add custom counters with the Camel routes.
>
> eg a bit of history then camel-metrics was first only a regular component. The route
policy was added later to make it easy to turn that on in a single spot, and get metrics for
all your routes.
>
> On Fri, Nov 7, 2014 at 3:07 PM, James L Greene <jlgreene2@aep.com> wrote:
>> Claus,
>>
>> I gave your suggestion a try.  There was no change in the output.  The camel-metrics
component is displaying the value of the counters via the logger, but the counters collection
is empty when I try to access it programmatically.
>>
>> Regards,
>> Jim Greene
>> Principal IT Architect, Enterprise Architecture & Strategy American
>> Electric Power One Riverside Plaza, 11th Floor Columbus, OH 43125
>> Phone:  (w) 614-716-2617
>> Email:  jlgreene2@aep.com
>>
>>
>> -----Original Message-----
>> From: Claus Ibsen [mailto:claus.ibsen@gmail.com]
>> Sent: Friday, November 07, 2014 1:27 AM
>> To: users@camel.apache.org
>> Subject: Re: camel-metrics Component
>>
>>  This is an EXTERNAL email. STOP. THINK before you CLICK links or OPEN attachments.
>>
>> **********************************************************************
>> Try setting the route policy before adding the routes
>>
>> On Fri, Nov 7, 2014 at 1:35 AM, James L Greene <jlgreene2@aep.com> wrote:
>>> I have written a simple Java class to attempt to exercise the camel-metrics component.
 In this example, I'm writing a standalone Java batch process, which will read files from
an input directory, and deposit the files in an output directory.  I'm attempting to use the
camel-metrics component to capture how many files were read (using the name "files-processed").
 I've configured the class to only run for seventy seconds, giving the camel-metrics component
an opportunity to output the values of the metric being captured to the application log (which
its configured to do at sixty seconds intervals, and which appears to work properly).
>>>
>>> Prior to suspending/stopping my CamelContext, I attempted to retrieve the metrics
as described in the camel-metrics component documentation.  Unfortunately, when I look at
the contents of the metrics, my custom metric is nowhere to be found.  Below, please find
the source for the sample class that I created, and its logged output.
>>>
>>> Am I doing something wrong?
>>>
>>> ============================
>>>
>>> Camel Version
>>> 2.14.0
>>>
>>> JRE Version
>>> java version "1.7.0_25"
>>> Java(TM) SE Runtime Environment (build 1.7.0_25-b17) Java HotSpot(TM)
>>> 64-Bit Server VM (build 23.25-b01, mixed mode)
>>>
>>> ============================
>>>
>>> package ...
>>>
>>> import com.codahale.metrics.Counter;
>>> import com.codahale.metrics.MetricRegistry;
>>> import java.util.SortedMap;
>>> import org.apache.camel.CamelContext; import
>>> org.apache.camel.builder.RouteBuilder;
>>> import
>>> org.apache.camel.component.metrics.routepolicy.MetricsRegistryService
>>> ;
>>> import
>>> org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicyFact
>>> o ry; import org.apache.camel.impl.DefaultCamelContext;
>>> import org.slf4j.Logger;
>>> import org.slf4j.LoggerFactory;
>>>
>>> public class Main {
>>>
>>>     public static void main(String[] args) throws Exception {
>>>         Logger LOG = LoggerFactory.getLogger(Main.class);
>>>
>>>         CamelContext context = new DefaultCamelContext();
>>>
>>>         RouteBuilder rb = new RouteBuilder() {
>>>             @Override
>>>             public void configure() throws Exception {
>>>                 from("file://c:/test/input").
>>>                         routeId("testroute").
>>>                         log("Processing file [${header.CamelFileName}]").
>>>                         to("metrics:counter:files-processed").
>>>                         to("file://c:/test/output");
>>>             }
>>>         };
>>>         context.addRoutes(rb);
>>>
>>>         MetricsRoutePolicyFactory mrpf = new MetricsRoutePolicyFactory();
>>>         context.addRoutePolicyFactory(mrpf);
>>>
>>>         context.start();
>>>
>>>         int sleepCounter = 0;
>>>         while (sleepCounter < 7) {
>>>             sleepCounter++;
>>>             Thread.sleep(10000);
>>>             LOG.info("Zzz...({} seconds)", sleepCounter * 10);
>>>         }
>>>
>>>         MetricsRegistryService regSvc = context.hasService(MetricsRegistryService.class);
>>>         if(regSvc != null) {
>>>             // Dump the statistics to the log in JSON format.
>>>             regSvc.setPrettyPrint(true);
>>>             LOG.info(regSvc.dumpStatisticsAsJson());
>>>
>>>             // Do it again, retrieving the map of counters from the MetricRegistry
object.
>>>             LOG.info("----------");
>>>             MetricRegistry reg = regSvc.getMetricsRegistry();
>>>             SortedMap<String, Counter> counters = reg.getCounters();
>>>             LOG.info("Keys found {{}]", counters.keySet().size());
>>>             for(String key : counters.keySet()) {
>>>                 LOG.info("--- key [{}] - value [{}]", key, counters.get("key").getCount());
>>>             }
>>>         } else {
>>>             System.out.println("Couldn't find MetricsRegisteryService instance");
>>>         }
>>>         context.suspend();
>>>         context.stop();
>>>     }
>>> }
>>>
>>> ============================
>>> --- exec-maven-plugin:1.2.1:exec (default-cli) @ metricstest ---
>>> 2014-11-06 19:15:23 INFO  DefaultCamelContext        :1731 - Apache Camel 2.14.0
(CamelContext: camel-1) is starting
>>> 2014-11-06 19:15:23 INFO  ManagedManagementStrategy  : 187 - JMX is enabled
>>> 2014-11-06 19:15:23 INFO  DefaultTypeConverter       :  50 - Loaded 178 type
converters
>>> 2014-11-06 19:15:23 INFO  MetricsComponent           : 108 - Creating new default
MetricRegistry
>>> 2014-11-06 19:15:23 INFO  MetricsComponent           :  57 - Metrics type: counter;
name: files-processed
>>> 2014-11-06 19:15:23 INFO  DefaultCamelContext        :1931 - AllowUseOriginalMessage
is enabled. If access to the original message is not needed, then its recommended to turn
this option off as it may improve performance.
>>> 2014-11-06 19:15:23 INFO  DefaultCamelContext        :1941 - StreamCaching is
not in use. If using streams then its recommended to enable stream caching. See more details
at http://camel.apache.org/stream-caching.html
>>> 2014-11-06 19:15:23 INFO  DefaultCamelContext        :2453 - Route: testroute
started and consuming from: Endpoint[file://c:/mdm/test/input]
>>> 2014-11-06 19:15:23 INFO  DefaultCamelContext        :1766 - Total 1 routes,
of which 1 is started.
>>> 2014-11-06 19:15:23 INFO  DefaultCamelContext        :1767 - Apache Camel 2.14.0
(CamelContext: camel-1) started in 0.608 seconds
>>> 2014-11-06 19:15:24 INFO  testroute                  :  96 - Processing file
[testfile1.txt]
>>> 2014-11-06 19:15:25 INFO  testroute                  :  96 - Processing file
[testfile2.txt]
>>> 2014-11-06 19:15:25 INFO  testroute                  :  96 - Processing file
[testfile3.txt]
>>> 2014-11-06 19:15:33 INFO  Main                       :  47 - Zzz...(10 seconds)
>>> 2014-11-06 19:15:43 INFO  Main                       :  47 - Zzz...(20 seconds)
>>> 2014-11-06 19:15:53 INFO  Main                       :  47 - Zzz...(30 seconds)
>>> 2014-11-06 19:16:03 INFO  Main                       :  47 - Zzz...(40 seconds)
>>> 2014-11-06 19:16:13 INFO  Main                       :  47 - Zzz...(50 seconds)
>>> 2014-11-06 19:16:23 INFO  MetricsComponent           : 104 - type=COUNTER, name=files-processed,
count=3
>>> 2014-11-06 19:16:23 INFO  Main                       :  47 - Zzz...(60 seconds)
>>> 2014-11-06 19:16:33 INFO  Main                       :  47 - Zzz...(70 seconds)
>>> 2014-11-06 19:16:34 INFO  Main                       :  53 - {
>>>   "version" : "3.0.0",
>>>   "gauges" : { },
>>>   "counters" : { },
>>>   "histograms" : { },
>>>   "meters" : { },
>>>   "timers" : {
>>>     "camel-1:testroute.responses" : {
>>>       "count" : 3,
>>>       "max" : 157.060387,
>>>       "mean" : 88.249202,
>>>       "min" : 44.265085,
>>>       "p50" : 63.422134,
>>>       "p75" : 157.060387,
>>>       "p95" : 157.060387,
>>>       "p98" : 157.060387,
>>>       "p99" : 157.060387,
>>>       "p999" : 157.060387,
>>>       "stddev" : 60.35712482735794,
>>>       "m15_rate" : 0.558194480485237,
>>>       "m1_rate" : 0.20307925506404548,
>>>       "m5_rate" : 0.48311899441084233,
>>>       "mean_rate" : 0.04263368988938351,
>>>       "duration_units" : "milliseconds",
>>>       "rate_units" : "calls/second"
>>>     }
>>>   }
>>> }
>>> 2014-11-06 19:16:34 INFO  Main                       :  54 - ----------
>>> 2014-11-06 19:16:34 INFO  Main                       :  57 - Keys found {0]
>>> 2014-11-06 19:16:34 INFO  DefaultCamelContext        :1648 - Apache Camel 2.14.0
(CamelContext: camel-1) is suspending
>>> 2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 172 - Starting to graceful
shutdown 1 routes (timeout 300 seconds)
>>> 2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 606 - Route: testroute
suspend complete, was consuming from: Endpoint[file://c:/mdm/test/input]
>>> 2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 222 - Graceful shutdown
of 1 routes completed in 0 seconds
>>> 2014-11-06 19:16:34 INFO  DefaultCamelContext        :1686 - Apache Camel 2.14.0
(CamelContext: camel-1) is suspended in 0.032 seconds
>>> 2014-11-06 19:16:34 INFO  DefaultCamelContext        :1958 - Apache Camel 2.14.0
(CamelContext: camel-1) is shutting down
>>> 2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 172 - Starting to graceful
shutdown 1 routes (timeout 300 seconds)
>>> 2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 609 - Route: testroute
shutdown complete, was consuming from: Endpoint[file://c:/mdm/test/input]
>>> 2014-11-06 19:16:34 INFO  DefaultShutdownStrategy    : 222 - Graceful shutdown
of 1 routes completed in 0 seconds
>>> 2014-11-06 19:16:34 INFO  DefaultCamelContext        :2040 - Apache Camel 2.14.0
(CamelContext: camel-1) uptime 1 minute
>>> 2014-11-06 19:16:34 INFO  DefaultCamelContext        :2041 - Apache Camel 2.14.0
(CamelContext: camel-1) is shutdown in 0.000 seconds
>>> ---------------------------------------------------------------------
>>> -
>>> --
>>> BUILD SUCCESS
>>> ---------------------------------------------------------------------
>>> -
>>> --
>>> Total time: 1:12.415s
>>> Finished at: Thu Nov 06 19:16:34 EST 2014 Final Memory: 5M/120M
>>> ---------------------------------------------------------------------
>>> -
>>> --
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> Red Hat, Inc.
>> Email: cibsen@redhat.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>> hawtio: http://hawt.io/
>> fabric8: http://fabric8.io/
>
>
>
> --
> Claus Ibsen
> -----------------
> Red Hat, Inc.
> Email: cibsen@redhat.com
> Twitter: davsclaus
> Blog: http://davsclaus.com
> Author of Camel in Action: http://www.manning.com/ibsen
> hawtio: http://hawt.io/
> fabric8: http://fabric8.io/



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Mime
View raw message