SkyWalking を使用してアプリケーションをインストルメントし、トレースデータを Managed Service for OpenTelemetry コンソールにレポートすると、Managed Service for OpenTelemetry はアプリケーションの監視を開始します。その後、アプリケーショントポロジー、トレース、異常トランザクション、低速トランザクション、SQL 分析など、アプリケーションの監視データを表示できます。このトピックでは、SkyWalking Java エージェントを使用して自動インストルメンテーションを実行する方法について説明します。また、SkyWalking Java エージェントの設定可能な属性についても説明します。
前提条件
SkyWalking 6.x.x 以降が SkyWalking ダウンロードページ からダウンロードされていること。最新の安定バージョンをダウンロードすることをお勧めします。解凍されたエージェントフォルダは、Java プロセスからアクセスできるディレクトリに保存されます。
すべてのプラグインは
/plugins
ディレクトリに保存されています。起動中にこのディレクトリにプラグインを追加すると、そのプラグインは有効になります。ディレクトリからプラグインを削除すると、そのプラグインは無効になります。デフォルトでは、ログファイルは/logs
ディレクトリに保存されます。
すべてのログ、プラグイン、および構成ファイルは、エージェントフォルダに保存されます。フォルダを変更しないでください。
背景情報
SkyWalking は、中国で開発された一般的なアプリケーションパフォーマンス監視(APM)サービスです。SkyWalking は、マイクロサービス、クラウドネイティブアーキテクチャ、およびコンテナベースのアーキテクチャ向けに設計されています。コンテナベースのアーキテクチャには、Docker、Kubernetes、Mesos などがあります。SkyWalking は分散トレーシングシステムでもあります。
SkyWalking を使用して Java アプリケーションデータを Managed Service for OpenTelemetry コンソールにレポートするには、アプリケーションをインストルメントする必要があります。SkyWalking は、Dubbo、gRPC、JDBC、OkHttp、Spring、Tomcat、Struts、Jedis など、さまざまなフレームワークやライブラリに自動インストルメンテーションを提供します。SkyWalking では、OpenTracing 標準に基づいてアプリケーションを手動でインストルメントすることもできます。このトピックでは、アプリケーションを自動的にインストルメントする方法について説明します。
サンプルコード
サンプルコードリポジトリの詳細については、GitHub の skywalking demo を参照してください。
SkyWalking を使用して Java アプリケーションを自動的にインストルメントする
config/agent.config
ファイルを開き、エンドポイントとトークンを設定します。説明<endpoint>
は、SkyWalking クライアントが存在する地域のエンドポイントに置き換えます。<auth-token>
は、クライアントの認証トークンに置き換えます。Managed Service for OpenTelemetry コンソールにログオンし、アクセスポイント情報 ページの タブでエンドポイントを確認できます。エンドポイントの取得方法については、このトピックの「前提条件」セクションを参照してください。// collector.backend_service はコレクターのバックエンドアドレスで、SkyWalking トレースデータを受信します。 collector.backend_service=<endpoint> // agent.authentication は、バックエンド設定に基づいて認証を有効にします。サーバーエンドポイントの認証トークンを表示できます。ほとんどのシナリオでは、バックエンド拡張機能が必要です。基本的な認証機能のみが実装されています。 agent.authentication=<auth-token>
次のいずれかの方法を使用して、アプリケーション名を指定します。
重要<ServiceName>
はアプリケーション名に置き換えます。両方の方法を使用する場合は、起動コマンドにパラメータを追加する 2 番目の方法のみが有効になります。config/agent.config
ファイルを開き、アプリケーション名を指定します。agent.service_name=<ServiceName>
アプリケーションの起動コマンドに -Dskywalking.agent.service_name パラメータを追加します。
java -javaagent:<skywalking-agent-path> -Dskywalking.agent.service_name=<ServiceName> -jar yourApp.jar
次のいずれかの方法を使用して、エージェントフォルダ内の skywalking-agent.jar ファイルへのパスを指定します。
説明次のサンプルコードの
<skywalking-agent-path>
は、エージェントフォルダ内の skywalking-agent.jar ファイルへの絶対パスに置き換えます。Linux Tomcat 7 または Tomcat 8
tomcat/bin/catalina.sh
ファイルの最初の行として次のコンテンツを追加します。CATALINA_OPTS="$CATALINA_OPTS -javaagent:<skywalking-agent-path>"; export CATALINA_OPTS
Windows 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.jar
Jetty
{JETTY_HOME}/start.ini
構成ファイルに次のコンテンツを追加します。--exec # シャープ記号(#)を削除して、コードのコメントを解除します。 -javaagent:<skywalking-agent-path>
アプリケーションを再起動します。
SkyWalking Java エージェントの設定可能な属性
SkyWalking Java エージェントは、設定可能な幅広い属性をサポートしています。詳細については、サンプルコードの config/agent.config ファイルを参照してください。
SkyWalking Java エージェントの部分的な属性
次の表に、SkyWalking Java エージェント V8.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 の公式ドキュメントを参照してください。
FAQ
Q:SkyWalking をサーバーに接続した後、アプリケーションを作成できないのはなぜですか?
A:データが Managed Service for OpenTelemetry にレポートされていない可能性があります。データが Managed Service for OpenTelemetry にレポートされているかどうかを確認する必要があります。たとえば、{skywalking agent path}/logs/skywalking-api.log ファイルの内容を確認できます。データがレポートされている場合、次の図が表示されます。
サンプリングが有効になっている、データがフィルタリングされている、Managed Service for OpenTelemetry を使用するためのリクエストがトリガーされていないなどの理由により、データがレポートされない場合があります。