SkyWalking を使用してアプリケーションをインストルメント化し、トレースデータを Managed Service for OpenTelemetry にレポートすると、Managed Service for OpenTelemetry はアプリケーションのモニタリングを開始します。その後、アプリケーショントポロジー、トレース、異常トランザクション、低速トランザクション、SQL 分析など、アプリケーションのモニタリングデータを表示できます。このトピックでは、SkyWalking Java エージェントを使用して自動インストルメンテーションを実行する方法について説明します。また、SkyWalking Java エージェントの設定可能な属性についても説明します。
前提条件
SkyWalking 6.X.X 以降が SkyWalking ダウンロードページからダウンロードされていること。最新の安定版をダウンロードすることを推奨します。解凍された Agent フォルダは、Java プロセスがアクセスできるディレクトリに保存されます。
すべてのプラグインは
/pluginsディレクトリに保存されます。起動中にこのディレクトリにプラグインを追加すると、そのプラグインは有効になります。ディレクトリからプラグインを削除すると、そのプラグインは無効になります。デフォルトでは、ログファイルは/logsディレクトリに保存されます。
すべてのログ、プラグイン、設定ファイルは agent フォルダに保存されます。このフォルダは変更しないでください。
背景情報
SkyWalking は、中国で開発された人気のアプリケーションパフォーマンスモニタリング (APM) サービスです。SkyWalking は、マイクロサービス、クラウドネイティブアーキテクチャ、およびコンテナベースのアーキテクチャ (Docker、Kubernetes、Mesos など) 向けに設計されています。SkyWalking は分散トレーシングシステムでもあります。
SkyWalking を使用して Java アプリケーションデータを Managed Service for OpenTelemetry コンソールにレポートする前に、アプリケーションをインストルメント化する必要があります。SkyWalking は、Dubbo、gRPC、JDBC、OkHttp、Spring、Tomcat、Struts、Jedis など、さまざまなフレームワークやライブラリに対して自動インストルメンテーションを提供します。SkyWalking では、OpenTracing 標準に基づいてアプリケーションを手動でインストルメント化することもできます。このトピックでは、アプリケーションを自動的にインストルメント化する方法について説明します。
サンプルコード
サンプルコードのリポジトリの詳細については、「SkyWalking Demo」をご参照ください。
SkyWalking を使用した Java アプリケーションの自動インストルメンテーション
SkyWalking Java Agent をダウンロードします。
SkyWalking Java Agent の設定ファイルを変更して、アクセス情報とアプリケーション情報を設定します。
collector.backend_service=<endpoint> // 前提条件で取得したエンドポイント情報に置き換えます。 agent.authentication=<token> // 前提条件で取得した認証トークンに置き換えます。 agent.service_name=<Service Name> // 実際のアプリケーション名に置き換えます。アプリケーションのランタイム環境に基づいて、次のいずれかの方法で SkyWalking Agent へのパスを指定します。
説明次のサンプルコードの
<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>アプリケーションを再起動します。
SkyWalking Java エージェントの設定可能な属性
SkyWalking Java エージェントは、設定可能な幅広い属性をサポートしています。詳細については、サンプルコードの config/agent.config ファイルをご参照ください。
SkyWalking Java エージェントの一部の属性
次の表に、SkyWalking Java エージェント 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>優先順位
上記の設定方法の優先順位は、高いものから低いものへ、プロキシオプション、システムプロパティ、システム環境変数、設定ファイルの順です。
SkyWalking Java エージェントプラグイン
SkyWalking Java エージェントは、さまざまなミドルウェア、フレームワーク、リポジトリをサポートしています。サポートされているプラグインの詳細については、サンプルコードの /plugins フォルダをご参照ください。
プラグインのアクティブ化
/plugins フォルダ内のすべてのプラグインがアクティブ化されます。プラグインの JAR パッケージが /plugins フォルダから削除されると、そのプラグインは利用できなくなります。
サポートされている公式プラグイン
サポートされている公式プラグインは /plugins フォルダで利用できます。
オプションのプラグイン
SkyWalking Java エージェントのプラグインはプラグ可能です。オプションのプラグインは、サードパーティリポジトリまたはエージェントの optional-plugins フォルダで利用できます。オプションのプラグインを使用するには、プラグインを /plugins フォルダに移動します。
ブートストラッププラグイン
すべてのブートストラッププラグインは、予期せぬリスクのためオプションです。ブートストラッププラグインは bootstrap-plugins フォルダで利用できます。ブートストラッププラグインを使用したい場合は、プラグインの JAR パッケージを /plugins フォルダに追加できます。
サポートされているプラグイン
SkyWalking の公式チームは、以下のプラグインが SkyWalking のパフォーマンスに影響を与え、その使用を制限する可能性があると考えています。そのため、これらのプラグインはサードパーティリポジトリでのみリリースされています。詳細については、GitHub の java-plugin-extensions をご参照ください。
プラグインの開発
カスタムの SkyWalking Java エージェントプラグインを作成するには、SkyWalking の公式ドキュメントをご参照ください。
Managed Service for OpenTelemetry はトレースレポートをサポートしています。カスタムトレースプラグインを作成するには、SkyWalking の公式ドキュメントをご参照ください。
よくある質問
Q:SkyWalking がサーバーに接続された後、なぜアプリケーションを作成できないのですか?
A:データが Managed Service for OpenTelemetry にレポートされていない可能性があります。データが Managed Service for OpenTelemetry にレポートされているかどうかを確認する必要があります。たとえば、{skywalking agent path}/logs/skywalking-api.log ファイルの内容を確認できます。データがレポートされている場合、次の図が表示されます。
データがレポートされない原因として、サンプリングが有効になっている、データがフィルタリングされている、または Managed Service for OpenTelemetry を使用するリクエストがトリガーされていない、などが考えられます。

