2.15. 指标

概述

从 Camel 2.14 开始提供

当 Camel 为 Camel 路由添加了大量现有指标与 Codahale 指标集成。这允许最终用户使用 Codahale 指标将 Camel 路由信息与收集的现有数据无缝化。

要使用 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.metrics.metrics.MetricsRegistryService 中获取 com.codahale.metrics.MetricRegistry Service,如下所示:

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

 

允许使用共享 com.codahale.metrics.MetricRegistry。如果没有提供任何服务,则 Camel 将创建一个由此 CamelContext 使用的共享实例。

prettyPrint

false

在以 json 格式输出统计信息时是否使用用户打印。

rateUnit

TimeUnit.SECONDS

在指标报告器或将统计信息转储为 json 时用于速率的单位。

useJmx

false

是否使用 com.codahale.metrics.JmxReporter 将精细的统计信息报告给 JMX。

请注意,如果在 CamelContext 上启用了 JMX,则 MetricsRegistryService mbean 将列在 JMX 树中的服务类型下。该 mbean 具有单个操作,可以使用 json 输出统计信息。只有在您希望每个统计类型的细粒度 mbeans 时,才需要使用Jmx 设置为 true。