すべてのプロダクト
Search
ドキュメントセンター

:Java アプリケーションデータの SkyWalking を使用したレポート

最終更新日:Dec 30, 2024

SkyWalking を使用してアプリケーションをインストルメントし、トレースデータを Managed Service for OpenTelemetry コンソールにレポートすると、Managed Service for OpenTelemetry はアプリケーションの監視を開始します。その後、アプリケーショントポロジー、トレース、異常トランザクション、低速トランザクション、SQL 分析など、アプリケーションの監視データを表示できます。このトピックでは、SkyWalking Java エージェントを使用して自動インストルメンテーションを実行する方法について説明します。また、SkyWalking Java エージェントの設定可能な属性についても説明します。

前提条件

  • SkyWalking 6.x.x 以降が SkyWalking ダウンロードページ からダウンロードされていること。最新の安定バージョンをダウンロードすることをお勧めします。解凍されたエージェントフォルダは、Java プロセスからアクセスできるディレクトリに保存されます。

  • すべてのプラグインは /plugins ディレクトリに保存されています。起動中にこのディレクトリにプラグインを追加すると、そのプラグインは有効になります。ディレクトリからプラグインを削除すると、そのプラグインは無効になります。デフォルトでは、ログファイルは /logs ディレクトリに保存されます。

警告

すべてのログ、プラグイン、および構成ファイルは、エージェントフォルダに保存されます。フォルダを変更しないでください。

SkyWalking のエンドポイントを取得するには、次の手順を実行します。

  1. Managed Service for OpenTelemetry コンソール にログオンします。

  2. 左側のナビゲーションペインで、クラスタ設定をクリックします。表示されるページで、アクセスポイント情報タブをクリックします。

  3. 上部のナビゲーションバーで、地域を選択します。クラスタ情報セクションで、トークンの表示をオンにします。

  4. クライアントパラメータを SkyWalking に設定します。

    下部の表の関連情報列に SkyWalking のエンドポイントが表示されます。

    SkyWalking接入点信息

    説明

    アプリケーションが Alibaba Cloud 本番環境にデプロイされている場合は、VPC エンドポイントを使用します。それ以外の場合は、パブリックエンドポイントを使用します。

背景情報

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 アプリケーションを自動的にインストルメントする

  1. 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>
  2. 次のいずれかの方法を使用して、アプリケーション名を指定します。

    重要

    <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
  3. 次のいずれかの方法を使用して、エージェントフォルダ内の 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>
  4. アプリケーションを再起動します。

SkyWalking Java エージェントの設定可能な属性

SkyWalking Java エージェントは、設定可能な幅広い属性をサポートしています。詳細については、サンプルコードの config/agent.config ファイルを参照してください。

SkyWalking Java エージェントの部分的な属性

次の表に、SkyWalking Java エージェント V8.16.0 の部分的な属性を示します。

展開して SkyWalking Java エージェントの属性を表示する

属性

説明

デフォルト値

agent.namespace

クロスプロセス伝播でヘッダーを分離するために使用される名前空間。この属性を設定すると、ヘッダー名は HeaderName:Namespace になります。

なし

agent.service_name

SkyWalking ユーザーインターフェース(UI)に表示されるサービス名。バージョン 5.x はアプリケーションに対応し、バージョン 6.x はサービスに対応します。サービスごとに一意の名前を指定することをお勧めします。サービスの複数のインスタンスは同じ名前を共有します。

Your_ApplicationName

agent.sample_n_per_3_secs

負の数または 0 は、サンプルデータが収集されないことを示します。デフォルトでは、サンプルデータは収集されません。SAMPLE_N_PER_3_SECS は、3 秒ごとに N 個のサンプルデータレコードが収集されることを示します。

なし

agent.authentication

バックエンド設定に基づいて認証が有効になります。サーバーエンドポイントの認証トークンを表示できます。ほとんどのシナリオでは、バックエンド拡張機能が必要です。基本的な認証機能のみが実装されています。

なし

agent.span_limit_per_segment

単一セグメント内のスパンの最大数。この属性が設定されている場合、SkyWalking はアプリケーションのメモリ使用量を評価できます。

なし

agent.ignore_suffix

最初のスパンの操作名がこのコレクションに含まれている場合、このセグメントは無視されます。

なし

agent.is_open_debugging_class

この属性を true に設定すると、SkyWalking エージェントは、インストゥルメント化されたすべてのクラスファイルを /debugging フォルダーに保存します。SkyWalking チームは、互換性の問題を解決するために、これらのクラスファイルの提供を依頼する場合があります。

なし

agent.cause_exception_depth

例外が記録されたときに SkyWalking エージェントが記録する必要があるスタックの深さ。

5

agent.force_reconnection_period

grpc_channel_check_interval 属性の値に基づく gRPC の強制再接続期間。

1

agent.operation_name_threshold

操作名の最大長。操作名は最大 190 文字まで使用できます。

150

agent.keep_tracing

この属性を true に設定すると、バックグラウンドサービスが使用できない場合でも、SkyWalking エージェントはデータの収集を続けます。

false

osinfo.ipv4_list_size

IPv4 アドレスの最大数。

10

collector.grpc_channel_check_interval

gRPC チャネルの状態がチェックされる間隔。

30

collector.backend_service

SkyWalking トレースデータを受信するコレクターのバックエンドアドレス。

127.0.0.1:11800

collector.heartbeat_period

SkyWalking エージェントのハートビートが報告される期間。単位:秒。

30

collector.grpc_upstream_timeout

gRPC クライアントがアップストリームアプリケーションにデータを送信するタイムアウト期間。単位:秒。

30

collector.get_profile_task_interval

SkyWalking エージェントが、ファイルを設定するために実行されるタスクをクエリする間隔。

20

logging.level

ログレベル。デフォルト値:DEBUG。

DEBUG

logging.file_name

ログファイルの名前。

skywalking-api.log

logging.output

ログがエクスポートされるモード。デフォルトでは、ログはファイルとしてエクスポートされます。コンソールを使用してログをエクスポートする場合、ログは標準モードでエクスポートされます。コマンドを実行してログをエクスポートする場合、ログは直接エクスポートされます。

FILE

logging.dir

ログが保存されるディレクトリ。デフォルト値は空の文字列です。これは、ログが system.out ディレクトリに保存されることを示します。

""

logging.pattern

ログ形式。サポートされている形式変換指定子:

  • %level:ログレベル。

  • %timestamp:現在の時刻。yyyy-MM-dd HH:mm:ss:SSS 形式。

  • %thread:現在のスレッドの名前。

  • %msg:記録されたメッセージ。

  • %class:クラスの単純名。

  • %throwable:ユーザーによってスローされた例外。

  • %agent_name:エージェントの名前。

%level %timestamp %thread %class : %msg %throwable

logging.max_file_size

ログファイルの最大サイズ。ログファイルのサイズがしきい値を超えると、現在のログファイルはアーカイブされ、ログは新しいファイルに書き込まれます。

300 * 1024 * 1024

logging.max_history_files

履歴ログファイルの最大数。デフォルトでは、負の数または 0 は、履歴ログファイルの数が制限されていないことを示します。

-1

設定方法

システム属性

-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 フォルダーに移動します。image.png

ブートストラッププラグイン

予期しないリスクがあるため、すべてのブートストラッププラグインはオプションです。ブートストラッププラグインは、*bootstrap-plugins* フォルダにあります。ブートストラッププラグインを使用する場合は、プラグインの JAR パッケージを */plugins* フォルダに追加できます。image.png

サポートされているプラグイン

SkyWalking の公式チームは、次のプラグインが SkyWalking のパフォーマンスに影響を与え、その使用を制限する可能性があると信じています。したがって、プラグインはサードパーティリポジトリでのみリリースされます。詳細については、GitHub の java-plugin-extensions を参照してください。

展開してプラグインを表示する

フレームワーク

プラグインバージョン

HTTP サーバー

Tomcat 7

Tomcat 8

Tomcat 9

Spring Boot Web 4.x

サーブレット 3.x を使用する Spring MVC 3.x、4.x、および 5.x

Nutz Web Framework 1.x

2.3.x から 2.5.x までのバージョンの Struts2 MVC

Resin 3

Resin 4

Jetty Server 9

Spring Webflux 5.x

2.0.0.Final から 2.0.13.Final までのバージョンの Undertow

3.1.0.Final から 3.7.0.Final までのバージョンの RESTEasy

2.6.x から 2.8.x までのバージョンの Play Framework

1.6.x から 2.x までのバージョンの Light4J Microservices Framework

Netty SocketIO 1.x

HTTP クライアント

Feign 9.x

Netflix Spring Cloud Feign 1.1.x、1.2.x、および 1.3.x

Okhttp 3.x

Apache httpcomponent HttpClient 4.2 および 4.3

Spring RestTemplete 4.x

Jetty Client 9

Apache httpcomponent AsyncClient 4.x

HTTP ゲートウェイ

Spring Cloud Gateway 2.1.x.RELEASE

JDBC

MySQL Driver 5.x、6.x、および 8.x

Oracle Driver

1.3.x から 1.4.x までのバージョンの H2 Driver

Sharding-JDBC 1.5.x

ShardingSphere 3.0.0

ShardingSphere 3.0.0、4.0.0-RC1

PostgreSQL Driver 8.x、9.x、および 42.x

Mariadb Driver 2.x および 1.8

RPC フレームワーク

2.5.4 から 2.6.0 までのバージョンの Dubbo

Dubbox 2.8.4

Apache Dubbo 2.7.0

0.2.x から 1.1.0 までのバージョンの Motan

gRPC 1.x

0.1 から 0.5 および 1.0.x までのバージョンの Apache ServiceComb Java Chassis

SOFARPC 5.4.0

0.63.0 から 0.98.0 までのバージョンの Armeria

1.7.0 から 1.8.x までのバージョンの Apache Avro

6.25.0 から 20.1.0 までのバージョンの Finagle

MQ

RocketMQ 4.x

0.11.0.0 から 1.0 までのバージョンの Kafka

ActiveMQ 5.x

RabbitMQ 5.x

2.2.x から 2.4.x までのバージョンの Pulsar

NoSQL

Redis

Jedis 2.x

Redisson Easy Java Redis client 3.5.2 以降

Lettuce 5.x

MongoDB

MongoDB Java Driver 2.13、2.14、および 3.3 以降

Memcached Client

Spymemcached 2.x

Xmemcached 2.x

Elasticsearch

5.2.x から 5.6.x までのバージョンの transport-client

6.7.1 から 6.8.4 までのバージョンの transport-client

6.7.1 から 6.8.4 までのバージョンの rest-high-level-client

7.0.0 から 7.7.1 までのバージョンの SolrJ

SolrJ 7.x

Cassandra 3.x

3.7.0 から 3.7.2 までのバージョンの cassandra-java-driver

サービスディスカバリ

Netflix Eureka

分散調整

ZooKeeper 3.4.x(3.4.4 を除く)

Spring エコシステム

Spring Bean アノテーション(@Bean、@Service、@Component、@Repository)3.x および 4.x

Spring Core Async SuccessCallback/FailureCallback/ListenableFutureCallback 4.x

分散システムのレイテンシとフォールトトレランスのための 1.4.20 から 1.5.12 までのバージョンの Hystrix

スケジューラ

Elastic Job 2.x

OpenTracing コミュニティサポート

1.0.25 から 1.1.2 までのバージョンの Canal:Alibaba Cloud によって開発された MySQL binlog ベースのコンポーネント。増分データの同期と消費に使用されます。

JSON

GSON 2.8.x

Vert.x エコシステム

Vert.x Eventbus 3.2 以降

Vert.x Web 3.x

スレッドスケジューリングフレームワーク

Spring @Async 4.x および 5.x

キャッシュ

Ehcache 2.x

Kotlin

1.0.1 から 1.3.x までのバージョンのコルーチン

プラグインの開発

カスタム 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 ファイルの内容を確認できます。データがレポートされている場合、次の図が表示されます。pg_xtrace_skywalking

サンプリングが有効になっている、データがフィルタリングされている、Managed Service for OpenTelemetry を使用するためのリクエストがトリガーされていないなどの理由により、データがレポートされない場合があります。