検索

383.10. 例

download PDF

camel-zipkin を有効にするには、最初に設定する必要があります

ZipkinTracer zipkin = new ZipkinTracer();
// Configure a reporter, which controls how often spans are sent
//   (the dependency is io.zipkin.reporter2:zipkin-sender-okhttp3)
sender = OkHttpSender.create("http://127.0.0.1:9411/api/v2/spans");
zipkin.setSpanReporter(AsyncReporter.create(sender));
// and then add zipkin to the CamelContext
zipkin.init(camelContext);

上記の設定は、Camel ルートのすべての入力メッセージと出力メッセージをトレースします。 

XML で ZipkinTracer を使用するには、スクライブと zipkin トレーサー Bean を定義するだけです。Camel はそれらを自動的に検出して使用します。

  <!-- configure how to reporter spans to a Zipkin collector
          (the dependency is io.zipkin.reporter2:zipkin-reporter-spring-beans) -->
  <bean id="http" class="zipkin2.reporter.beans.AsyncReporterFactoryBean">
    <property name="sender">
      <bean id="sender" class="zipkin2.reporter.beans.OkHttpSenderFactoryBean">
        <property name="endpoint" value="http://localhost:9411/api/v2/spans"/>
      </bean>
    </property>
    <!-- wait up to half a second for any in-flight spans on close -->
    <property name="closeTimeout" value="500"/>
  </bean>

  <!-- setup zipkin tracer -->
  <bean id="zipkinTracer" class="org.apache.camel.zipkin.ZipkinTracer">
    <property name="serviceName" value="dude"/>
    <property name="spanReporter" ref="http"/>
  </bean>

383.10.1. ServiceName

ただし、Camel エンドポイントをわかりやすい論理名にマップする場合は、マッピングを追加できます。

  • ServiceName *

次のように、すべてのイベントがフォールバックして使用するグローバルサービス名を設定できます。

zipkin.setServiceName("invoices");

これにより、すべての入力および出力 zipkin トレースに同じサービス名が使用されます。アプリケーションが異なるサービスを使用する場合は、それらをよりきめ細かいクライアント/サーバーサービスマッピングにマッピングする必要があります。

383.10.2. クライアントサービスとサーバーサービスのマッピング

  • ClientServiceMappings
  • ServerServiceMappings

アプリケーションが他の人が呼び出すことができるサービスをホストしている場合、Camel ルートエンドポイントをサーバーサービスマッピングにマッピングできます。たとえば、Camel アプリケーションに次のルートがあるとします。

from("activemq:queue:inbox")
  .to("http:someserver/somepath");

これをサーバーサービスとして作成するには、次のマッピングを追加します。

zipkin.addServerServiceMapping("activemq:queue:inbox", "orders");

次に、メッセージがその受信トレイキューから消費されると、サービス名が orders の zipkin サーバーイベントになります。

ここで、http:someserver/somepath への呼び出しもサービスであり、クライアントサービス名にマップするとします。これは次のように実行できます。

zipkin.addClientServiceMapping("http:someserver/somepath", "audit");

次に、同じ Camel アプリケーションで、入力エンドポイントと出力エンドポイントを異なる zipkin サービス名にマップしました。

サービスマッピングではワイルドカードを使用できます。すべての出力呼び出しを同じ HTTP サーバーに一致させるには、次のようにします。

zipkin.addClientServiceMapping("http:someserver*", "audit");
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.