2.15. 指标

概述

可从 Camel 2.14 开始

虽然 Camel 提供了大量现有的指标集成,但为 Camel 路由添加了 Codahale 指标。这使得最终用户能够无缝地将 Camel 路由信息与使用 Codahale 指标收集的现有数据一起进行传输。

要使用 Codahale 指标,您需要:

  1. 添加 camel-metrics 组件
  2. 在 XML 或 Java 代码中启用路由指标

请注意,只有在您有一种显示方式时,性能指标才可用;可以使用任何可与 JMX 集成的监控工具,因为指标通过 JMX 可用。另外,实际数据是 100% Codehale JSON。

指标路由策略

若要为每个路由定义 MetricsRoutePolicy,可以完成获取单个路由的 Codahale 指标。

从 Java 创建一个 MetricsRoutePolicy 实例,以作为路由策略分配。如下所示:

from("file:src/data?noop=true").routePolicy(new MetricsRoutePolicy()).to("jms:incomingOrders");

在 XML DSL 中,您定义一个 & lt;bean >,它指定为路由策略;例如:

<bean id="policy" class="org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicy"/>

<camelContext xmlns="http://camel.apache.org/schema/spring">
  <route routePolicyRef="policy">
    <from uri="file:src/data?noop=true"/>
[...]

指标路由策略工厂

此工厂允许每个路由添加 RoutePolicy,该路由使用 Codahale 指标公开路由利用率统计。此工厂可在 Java 和 XML 中使用,作为以下示例。

从 Java 中,您刚刚将工厂添加到 CamelContext 中,如下所示:

context.addRoutePolicyFactory(new MetricsRoutePolicyFactory());

在 XML DSL 中,您将定义 < bean&gt;,如下所示:

<!-- use camel-metrics route policy to gather metrics for all routes -->
<bean id="metricsRoutePolicyFactory" class="org.apache.camel.component.metrics.routepolicy.MetricsRoutePolicyFactory"/>

从 Java 代码中,您可以存放来自 org.apache.camel.component.metrics.routepolicy.MetricsRegistry 的 com.codahale.metrics.MetricsRegistryService 的 com.codahale.metrics.MetricRegistry Registry。

MetricRegistryService registryService = context.hasService(MetricsRegistryService.class);
if (registryService != null) {
  MetricsRegistry registry = registryService.getMetricsRegistry();
  ...
}

选项

MetricsRoutePolicyFactoryMetricsRoutePolicy 支持以下选项:

Name

default

描述

durationUnit

TimeUnit.MILLISECONDS

指标报告程序中的 for 持续时间或者将统计信息转储到 json 时使用的单位。

jmxDomain

org.apache.camel.metrics

JXM 域名。

metricsRegistry

 

allow 使用共享的 com.codahale.metrics.MetricRegistry。如果没有提供,Camel 将创建此 CamelContext 使用的共享实例。

prettyPrint

false

是否在以 json 格式输出统计信息时要打印情况。

rateUnit

TimeUnit.SECONDS

指标报告者中用于速率的单位,或者将统计信息转储到 json。

useJmx

false

是否使用 com.codahale.metrics.JmxReporter 向 JMX 报告精细统计。

请注意,如果在 CamelContext 上启用了 JMX,则会在 JMX 树中的服务类型下列出 MetricsRegistryService mbean。该 mbean 有一个操作来通过 json 输出统计信息。只有在每个统计类型需要精细的 mbeans 时,才需要将 useJmx 设置为 true。