SkyWalking を使用してアプリケーションのイベントトラッキングを行い、トレースデータを Managed Service for OpenTelemetry にレポートすると、Managed Service for OpenTelemetry がアプリケーションのモニタリングを開始します。アプリケーショントポロジー、トレース、異常なトランザクション、低速なトランザクション、SQL 分析など、さまざまなモニタリングデータを表示できます。このトピックでは、SkyWalking Java エージェントを使用した自動イベントトラッキングの方法と、設定可能な属性について説明します。
前提条件
-
SkyWalking のダウンロードページを開き、SkyWalking 6.X.X 以降のバージョン (最新の安定版を推奨) をダウンロードします。展開した agent フォルダを、Java プロセスがアクセスできるディレクトリに配置します。
-
すべてのプラグインは
/pluginsディレクトリに保存されます。新しいプラグインを有効にするには、起動前にこのディレクトリに追加します。プラグインを無効にするには、このディレクトリから削除します。デフォルトでは、ログファイルは/logsディレクトリに書き込まれます。
ログファイル、プラグイン、設定ファイルは agent フォルダ内にあります。ディレクトリ構造は変更しないでください。
背景情報
SkyWalking は、マイクロサービス、クラウドネイティブ、コンテナ化 (Docker、Kubernetes、Mesos) アーキテクチャ上に構築されたアプリケーション向けに設計された、人気の高いアプリケーションパフォーマンスモニタリング (APM) ツールです。その中核は、分散トレーシングシステムです。
SkyWalking を使用して Java アプリケーションから Managed Service for OpenTelemetry コンソールにデータをレポートするには、まずアプリケーションのイベントトラッキングを行う必要があります。SkyWalking は、Dubbo、gRPC、JDBC、OkHttp、Spring、Tomcat、Struts、Jedis などのフレームワークの自動イベントトラッキングと、OpenTracing を使用した手動イベントトラッキングの両方をサポートしています。このトピックでは、自動イベントトラッキングの方法について説明します。
デモ
コードリポジトリ: SkyWalking デモ
SkyWalking で Java アプリケーションをインストルメント化する
-
SkyWalking Java エージェントをダウンロードします。
-
SkyWalking Java エージェントの設定ファイルで、接続とサービス情報を設定します。
collector.backend_service=<endpoint> // 前提条件で取得したエンドポイントに置き換えます。 agent.authentication=<token> // 前提条件で取得した認証トークンに置き換えます。 agent.service_name=<service-name> // 実際のサービス名に置き換えます。 -
アプリケーションの実行環境に基づいて、SkyWalking エージェントへのパスを指定します。
説明以下の例では、
<skywalking-agent-path>を agent フォルダ内の skywalking-agent.jar への絶対パスに置き換えてください。Linux Tomcat 7 / Tomcat 8
tomcat/bin/catalina.shの最初の行に以下を追加します:CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTSWindows Tomcat 7 / Tomcat 8
tomcat/bin/catalina.batの最初の行に以下を追加します:set "CATALINA_OPTS=-javaagent:<skywalking-agent-path>"JAR または Spring Boot
アプリケーションの起動コマンドに -javaagent パラメーターを追加します。
重要-javaagent パラメーターは -jar パラメーターの前に記述する必要があります。
java -javaagent:<skywalking-agent-path> -jar yourApp.jarJetty
{JETTY_HOME}/start.ini設定ファイルに以下の行を追加します:--exec -javaagent:<skywalking-agent-path> -
アプリケーションを再起動します。
設定可能な Java エージェントの属性
SkyWalking Java エージェントは、ユーザーが設定可能な幅広い属性をサポートしています。属性の完全なリストについては、サンプルデモの config/agent.config ファイルをご参照ください。
主要な属性
以下の属性は apache-skywalking-java-agent-8.16.0 に基づいています。
設定方法
システムプロパティ
-Dskywalking. プレフィックスに続けて agent.config ファイルの属性名を使用します。例:
# システムプロパティを使用して agent.service_name を設定
java -javaagent:/path/to/skywalking-agent.jar -Dskywalking.agent.service_name=<your_service_name> -jar your-project.jar
エージェントオプション
JVM 引数のエージェントパスに属性を追加します。
# 構文
-javaagent:/path/to/skywalking-agent.jar=[key1]=[value1],[key2]=[value2]
# 例
java -javaagent:/path/to/skywalking-agent.jar=agent.service_name=<your-service-name>,agent.authentication=<your-token> -jar your-project.jar
環境変数
SkyWalking エージェントは自動的に環境変数を読み取ります。各属性に対応する環境変数は、config/agent.config ファイルで確認できます。例えば、`agent.service_name` の環境変数は `SW_AGENT_NAME` です。
agent.service_name=${SW_AGENT_NAME:default_name}
# 環境変数を設定
export SW_AGENT_NAME=<your_service_name>
優先順位
設定は、最高から最低の順で次の優先順位で適用されます:エージェントオプション、システムプロパティ、環境変数、設定ファイル。
Java エージェントプラグイン
SkyWalking Java エージェントは、さまざまなミドルウェア、フレームワーク、ライブラリをサポートしています。サポートされているすべてのプラグインは、デモアプリケーションの /plugins フォルダにあります。
プラグインのアクティブ化
/plugins フォルダ内のすべてのプラグインはアクティブです。プラグインを無効にするには、その JAR ファイルを /plugins フォルダから削除します。
公式にサポートされているプラグイン
公式にサポートされているすべてのプラグインは /plugins フォルダにあります。
オプションプラグイン
オプションプラグインは、エージェントパッケージの optional-plugins フォルダまたはサードパーティのリポジトリにあります。オプションプラグインをアクティブにするには、その JAR ファイルを /plugins フォルダに移動します。
optional-plugins/
apm-customize-enhance-plugin-8.16.0.jar
apm-ehcache-2.x-plugin-8.16.0.jar
apm-fastjson-1.x-plugin-8.16.0.jar
apm-gson-2.x-plugin-8.16.0.jar
apm-guava-cache-plugin-8.16.0.jar
apm-jackson-2.x-plugin-8.16.0.jar
apm-kotlin-coroutine-plugin-8.16.0.jar
apm-mybatis-3.x-plugin-8.16.0.jar
apm-quartz-scheduler-2.x-plugin-8.16.0.jar
apm-resttemplate-6.x-plugin-8.16.0.jar
apm-sentinel-1.x-plugin-8.16.0.jar
apm-shenyu-2.4.x-plugin-8.16.0.jar
apm-spring-annotation-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.0.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-2.1.x-plugin-8.16.0.jar
apm-spring-cloud-gateway-3.x-plugin-8.16.0.jar
apm-spring-tx-plugin-8.16.0.jar
apm-spring-webflux-5.x-plugin-8.16.0.jar
apm-springmvc-annotation-6.x-plugin-8.16.0.jar
apm-trace-ignore-plugin-8.16.0.jar
apm-zookeeper-3.4.x-plugin-8.16.0.jar
trace-sampler-cpu-policy-plugin-8.16.0.jar
ブートストラッププラグイン
潜在的な安定性リスクのため、すべてのブートストラッププラグインはオプションです。これらは bootstrap-plugins フォルダにあります。ブートストラッププラグインをアクティブにするには、その JAR ファイルを /plugins フォルダに移動します。
bootstrap-plugins/
apm-jdk-forkjoinpool-plugin-8.16.0.jar
apm-jdk-http-plugin-8.16.0.jar
apm-jdk-threading-plugin-8.16.0.jar
apm-jdk-threadpool-plugin-8.16.0.jar
サポートされているプラグイン
一部のプラグインは、パフォーマンスへの潜在的な影響や使用制限のため、サードパーティのリポジトリからのみ入手可能です。詳細については、SkyAPM Java Plugin Extension リポジトリをご参照ください。
プラグイン開発
カスタムの SkyWalking Java エージェントプラグインを開発するには、公式ドキュメントをご参照ください。
Managed Service for OpenTelemetry はトレースのレポートをサポートしています。カスタムトレースプラグインの開発に関する詳細については、公式ドキュメントをご参照ください。
よくある質問
Q: SkyWalking エージェントがサーバーに接続した後、アプリケーションが表示されないのはなぜですか?
A: この問題は、分散トレーシングデータがレポートされていない場合に発生します。これを検証するには、{skywalking agent path}/logs/skywalking-api.log ファイルを確認します。データがレポートされている場合、以下のような SkyWalking エージェントからの DEBUG ログが表示されます。キーメッセージである TraceSegmentServiceClient : 1 trace segments have been sent to collector. は、分散トレーシングデータがコレクターに正常に送信されたことを確認します。
DEBUG 2020-03-09 17:18:16:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:19:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:21:301 DataCarrier.DEFAULT.Consumer.0.Thread TraceSegmentServiceClient : 1 trace segments have been sent to collector.
DEBUG 2020-03-09 17:18:22:353 SkywalkingAgent-2-GRPCChannelManager-0 GRPCChannelManager : Selected collector grpc service running, reconnect:false.
DEBUG 2020-03-09 17:18:22:357 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
DEBUG 2020-03-09 17:18:25:356 SkywalkingAgent-5-ServiceAndEndpointRegisterClient-0 ServiceAndEndpointRegisterClient : ServiceAndEndpointRegisterClient running, status:CONNECTED.
データレポートが行われていない場合、考えられる原因には、サンプリングが有効になっている、フィルターが設定されている、または分散トレースを生成するリクエストがない、などが含まれます。

