CometD は HTTP 経由で非同期メッセージを送信するための HTTP ベースのイベント ルーティング バスです。CometD は JavaScript API と Java API の両方を提供し、多くの場合、マルチプレイヤーゲームやチャットルームなどのリアルタイムのインタラクティブ アプリケーションに対して使用されます。

CometD は、WAR ファイルとして配布されます。Java エージェントで WAR を実行する CometD アプリケーションコンテナ(通常は Jetty サーバ)をインストゥルメント化した場合、AppDynamics では CometD のアクティビティが自動的に検出および追跡されます。これを以下のセクションで説明します。

ビルトインサポートについて

AppDynamicsは、CometDのWebSocketとHTTPロングポーリングクライアント転送の両方をサポートしています。チャンネル名に基づいてビジネストランザクションを分割するPOJOルールを使ってチャンネルを横断しながら、CometDメッセージを追跡します。

したがって、AppDynamics のビジネストランザクションは CometD チャネルに対応します。次のスクリーンショットは、/market/nyse チャネルに対して生成されたビジネストランザクションを示しています。
Business Transactions

AppDynamics には、CometD 転送関数である org.cometd.annotation.AnnotationComet および org.cometd.server.CometdServlet を実装する Servlet に対する除外ルールがビルトインされています最適な結果を得るには、次のセクションで説明されているように、コンテナサーブレットのトラッキングも除外する必要があります。  

コンテナ転送Servlet除外ルールの作成

CometDはServletとして実装されます。Servletは転送アクティビティを実装するため、CometD転送関数を実行するServletに対して除外ルールを作成する必要があります。こうすることで、ビジネストランザクション検出の結果が、CometD チャンネルに対応する POJO ベース BT を隠すことがなくなります。 

通常、CometD は Jetty コンテナ内に含まれているため、多くの場合はルールが Jetty コンテナの追跡を除外する必要があります。Jetty については、以下の Jetty Servlet に対して除外ルールを構成する必要があります。

  • EQUALS、 org.eclipse.jetty.server.handler.ContextHandler
  • EQUALS、 org.eclipse.jetty.servlet.ServletContextHandler
  • ENDSWITH、 jetty.plugin.JettyWebAppContext

他のタイプのコンテナを使用する場合は、同等の対応クラスに対して同様の除外ルールを作成する必要があります。