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

Simple Log Service:Alibaba Cloud Javaエージェントによって報告されたパフォーマンスデータをJavaプログラムから収集する

最終更新日:Jan 02, 2025

Continuous Profiler Agentは、パフォーマンスデータを収集するためにAlibaba CloudのJVMチームによって開発されたAlibaba Cloud Javaエージェントです。 Continuous Profiler Agentは、大規模な運用環境でテストされています。 それは高性能と高い安定性を提供します。 Logtailを使用して、Continuous Profiler AgentによってJavaプログラムからFull-stack Observabilityアプリケーションに報告されたパフォーマンスデータを収集し、視覚化されたモニタリングと分析を行うことができます。

前提条件

フルスタックのObservabilityインスタンスが作成されます。 詳細は、インスタンスの作成をご参照ください。

制限事項

  • Linux Logtail V1.7以降のみがサポートされています。

  • 次のLinuxディストリビューションがサポートされています: CentOS、Red Hat、Alibaba Cloud Linux、Ubuntu、およびDebian。 カーネルのバージョンは2.6.32-431.23.3.el6.x86_64以降である必要があります。 GNU CライブラリとMUSLライブラリがサポートされています。

  • JDKバージョンがサポートされています。 下表に詳細を示します。

    エンジンタイプ

    CPU

    メモリ

    自動エンジン

    • OpenJDK 8u272以降、JDK 11、およびJDK 17がサポートされています。

    • OracleJDK 11とOracleJDK 17がサポートされています。

    • OracleJDK 8はサポートされていません。

    • OpenJDK 8u352以降、OpenJDK 11.0.17以降、およびOpenJDK 17.0.5以降がサポートされています。

    • OracleJDK 8はサポートされていません。

    • OracleJDK 11.0.21以降、およびOracleJDK 17.0.9以降がサポートされています。

    async_profilerエンジン

    OpenJDK 8、OpenJDK 11、OpenJDK 17、OracleJDK 8、OracleJDK 11、およびOracleJDK 17がサポートされています。

    OpenJDK 8、OpenJDK 11、OpenJDK 17、OracleJDK 8、OracleJDK 11、およびOracleJDK 17がサポートされています。

リソース消費の説明

ほとんどのシナリオでは、Javaプログラムのパフォーマンスオーバーヘッドは5% 未満です。

ステップ1: Logtail設定の作成

  1. にログインします。Simple Log Serviceコンソール.

  2. [ログアプリケーション] セクションで、[インテリジェントO&M] タブをクリックします。 次に、[フルスタックの表示] をクリックします。

  3. [Simple Log Serviceのフルスタックの観察可能性] ページで、管理するインスタンスをクリックします。

  4. 左側のナビゲーションウィンドウで、[パフォーマンスモニタリング] をクリックします。

    インスタンスでパフォーマンスモニタリングを初めて使用する場合は、[有効化] をクリックします。

  5. 左側のナビゲーションツリーで、[データインポート] をクリックします。 [データアクセス設定] ページで、[パフォーマンスモニタリング] セクションの [共通プッシュインポート] を見つけます。

    このタイプのパフォーマンスデータのLogtail設定を初めて作成するときは、スイッチをオンにして設定ページに移動します。 Logtail設定を作成した場合は、アイコンをクリックして创建設定ページに移動します。

  6. マシングループを作成します。

    • マシングループが利用可能な場合は、[既存のマシングループを使用] をクリックします。

    • 使用可能なマシングループがない場合は、次の手順を実行します。

      1. サーバータイプを確認します。

        • Simple Log Serviceと同じAlibaba Cloudアカウントに属するElastic Compute Service (ECS) インスタンスを使用している場合は、[ECSインスタンス] タブをクリックし、[インスタンスとECSインスタンスの手動選択] を選択し、[作成] をクリックします。

          詳細については、「ECSインスタンスへのLogtailのインストール」をご参照ください。

        • サーバーが別のAlibaba Cloudアカウントに属するECSインスタンス、サードパーティのクラウドサービスプロバイダーが提供するサーバー、または自己管理データセンターにデプロイされているサーバーの場合、サーバーにLinux Logtail V1.7以降を手動でインストールする必要があります。 詳細については、「LinuxサーバーへのLogtailのインストール」をご参照ください。

          重要

          Logtailを手動でインストールした後、サーバーのユーザー識別子を設定する必要があります。 詳細については、「ユーザー識別子の設定」をご参照ください。

        • Kubernetesクラスターを使用する場合は、「Kubernetesリソースに関するモニタリングデータの収集」の手順に従ってLogtailコンポーネントをインストールします。

      2. Logtailをインストールしたら、[インストールの完了] をクリックします。

      3. [マシングループの作成] ステップで、[名前] パラメーターを設定し、[次へ] をクリックします。

        Simple Log Serviceでは、IPアドレスベースのマシングループとカスタム識別子ベースのマシングループを作成できます。 詳細については、「IPアドレスベースのマシングループの作成」および「カスタム識別子ベースのマシングループの作成」をご参照ください。

        重要

        KubernetesクラスターにLogtailをインストールすると、{instanceId}-{clusterId}-k8s-cluster形式のマシングループが自動的に生成されます。 このステップはスキップできます。

  7. [マシングループの設定] ステップで、サーバーを [ソースサーバーグループ] セクションから [応用サーバーグループ] セクションに移動し、[次へ] をクリックします。

    重要

    マシングループを作成した直後にマシングループを有効にすると、マシングループのハートビートステータスがFAILになる可能性があります。 この問題は、マシングループがSimple Log Serviceに接続されていないために発生します。 この問題を解決するには、[自動再試行] をクリックします。 問題が解決しない場合は、Logtailマシングループにハートビートがない場合はどうすればよいですか?

  8. [データソースの指定] ステップで、パラメーターを設定し、[完了] をクリックします。 下表に、各パラメーターを説明します。

    パラメーター

    説明

    設定名

    Logtail設定の名前。 カスタム名を入力することができます。

    クラスター

    クラスターの名前。 カスタム名を入力することができます。

    このパラメーターを設定すると、Simple Log Serviceは、Logtail設定を使用して収集されたパフォーマンスデータにcluster=<Cluster name> タグを追加します。

    重要

    クラスター名が一意であることを確認してください。 そうしないと、データの競合が発生する可能性があります。

    アドレス

    データ収集のアドレス。 デフォルト値は http://:4040 で、4040はPyroscopeのデフォルトポートです。 デフォルト値を保持する場合、HTTPサーバーはローカルアドレスを使用します。

    • ECSインスタンスを使用する場合は、次の形式で値を指定します。ECSインスタンスのIPアドレス: 4040

    • Kubernetesクラスターにあるサーバーを使用する場合は、値をlogtail-kubernetes-metrics.sls-monitoring:4040に設定します。

    • サードパーティのクラウドサービスプロバイダーまたはデータセンターのサーバーを使用する場合は、次の形式で値を指定します。サーバーのIPアドレス: 4040

    Endpoint

    Pyroscopeのデフォルトのエンドポイント。 デフォルト値: /ingest

    読み取りタイムアウト期間

    データ読み取り操作のタイムアウト期間。 デフォルト値は 10 です。 単位は秒です。

    最大ボディサイズ

    収集できるデータの最大サイズ。

設定後、Simple Log Serviceは自動的にMetricstoreなどのアセットを作成します。 詳細については、「アセット」をご参照ください。

ステップ2: Javaエージェントをダウンロードする

  • 中国のリージョン

    wget https://logtail-release-cn-hangzhou.oss-cn-hangzhou.aliyuncs.com/jvm/continuous-profile-collector-agent-1.9.0.jar
  • 中国以外のリージョン

    wget https://logtail-release-ap-southeast-1.oss-ap-southeast-1.aliyuncs.com/jvm/continuous-profile-collector-agent-1.9.0.jar

手順3: パフォーマンスデータをプッシュするJavaプログラムの設定

  • JVMパラメーターを使用したJavaプログラムの設定

  • <g id="1" type="code" text="code id=" 091cded07dzry "outputclass=" language-plaintex "data-tag=" codeblock "code=" java \
    -Dprofiling.app.name=your_service_name \
    -Dprofiling.agent.upload.server=&quot;http://{host }:{ port}&quot; \
    -Dprofiling.cpu.engine={engine} \
    -javaagent:{javaagentのパス} \
    -jar demo.jar "uuid=" lnlbgqkf2xownz3qczq "title=" "">java \
    -Dprofiling.app.name=your_service_name \
    -Dprofiling.agent.upload.server="http://{host }:{ port}" \
    -Dprofiling.cpu.engine={engine} \
    -javaagent:{javaagentのパス} \
    -jarデモ. jar 

    パラメーター

    説明

    profiling.app.name

    サービスの名前です。

    profiling.agent.upload.server

    データのアップロードのアドレス。

    • ECSインスタンスを使用する場合は、次の形式で値を指定します。ECSインスタンスのIPアドレス: 4040

    • Kubernetesクラスターにあるサーバーを使用する場合は、値をlogtail-kubernetes-metrics.sls-monitoring:4040に設定します。

    • サードパーティのクラウドサービスプロバイダーまたはデータセンターのサーバーを使用する場合は、次の形式で値を指定します。サーバーのIPアドレス: 4040

    profiling.cpu.engine

    CPUホットスポットの監視に使用されるエンジン。 デフォルト値:off 有効な値: auto、async_profiler、jfr、off。

    値offは、CPUホットスポット監視が無効であることを指定します。 その他の値は、CPUホットスポット監視を有効にすることを指定します。 値をautoに設定することを推奨します。

  • 環境変数を使用してJavaプログラムを構成する

  • <g id="1" type="code" text="code id=" 091d05ee7dfxq "outputclass=" language-plaintext "data-tag=" codeblock "code=" export PROFILING_APP_NAME=&quot;your_service_name&quot;
    export PROFILING_AGENT_UPLOAD_SERVER=&quot;http://{host }:{ port}&quot;
    export PROFILING_CPU_ENGINE=&quot;{engine}&quot;
    エクスポートPROFILING_ALLOC_ENGINE=&quot;{engine}&quot;
    "uuid=" lnlc7riswp9g5pifyj "title=" "">export PROFILING_APP_NAME="your_service_name"
    export PROFILING_AGENT_UPLOAD_SERVER="http://{host }:{ port}"
    export PROFILING_CPU_ENGINE="{engine}"
    export PROFILING_ALLOC_ENGINE="{engine}"
    

    パラメーター

    説明

    PROFILING_APP_NAME

    サービスの名前です。

    PROFILING_AGENT_UPLOAD_SERVER

    データのアップロードのアドレス。

    • ECSインスタンスを使用する場合は、次の形式で値を指定します。ECSインスタンスのIPアドレス: 4040

    • Kubernetesクラスターにあるサーバーを使用する場合は、値をlogtail-kubernetes-metrics.sls-monitoring:4040に設定します。

    • サードパーティのクラウドサービスプロバイダーまたはデータセンターのサーバーを使用する場合は、次の形式で値を指定します。サーバーのIPアドレス: 4040

    PROFILING_CPU_ENGINE

    CPUホットスポットの監視に使用されるエンジン。 デフォルト値:off 有効な値: auto、async_profiler、jfr、off。

    値offは、CPUホットスポット監視が無効であることを指定します。 その他の値は、CPUホットスポット監視を有効にすることを指定します。 値をautoに設定することを推奨します。

    補足

    JVMパラメーター

    環境変数

    説明

    profiling.app.name

    PROFILING_APP_NAME

    アプリケーションの名前。

    profiling.agent.upload.server

    PROFILING_AGENT_UPLOAD_SERVER

    Java Flight Recorder (JFR) ファイルがアップロードされるサーバーのアドレス。 デフォルト値: http:// localhost:4040

    • アドレスをhttpで開始しないでください。 システムは自動的にhttpプレフィックスをアドレスに追加します。

    • スラッシュ (/) でアドレスを終了しないでください。 システムは自動的にスラッシュ (/) をアドレスに追加します。

    profiling.agent.timeout

    PROFILING_AGENT_TIMEOUT

    JFRファイルをアップロードするためのタイムアウト時間。 デフォルト値は 10 です。 単位は秒です。

    profiling.agent.ingest.max.tries

    PROFILING_AGENT_INGEST_MAX_TRIES

    JFRファイルのアップロードに許可される再試行の最大数。 デフォルト値:2

    profiling.app.http.headers

    PROFILING_APP_HTTP_HEADERS

    JFRファイルをアップロードするときに使用されるHTTPヘッダー。 このパラメーターはデフォルトで空となります。 例: SESSION_ID=1111;XXX=YYY。

    profiling.app.labels

    PROFILING_APP_ラベル

    JFRファイルをアップロードするときにJFRファイルに追加されるタグ。 このパラメーターはデフォルトで空となります。 例: env=dev;lang=java;biz=member

    profiling.agent.log.level

    PROFILING_AGENT_LOG_LEVEL

    ログレベル。 デフォルト値: info 有効な値: info、debug、error。

    profiling.agent.log.file

    PROFILING_AGENT_LOG_FILE

    ログファイルへのパス。 値を /path/to/profiling.logに設定できます。 デフォルトでは、パスはJava stdoutとstderrに書き込まれます。

    profiling.period

    PROFILING_PERIOD

    パフォーマンスデータがアップロードされる間隔。 デフォルト値は 1 です。 単位は分です。

    profiling.de lay

    PROFILING_DELAY

    パフォーマンス監視の待ち時間。 デフォルト値: 0。これは、パフォーマンス監視エンジンが有効になった直後にパフォーマンス監視が開始されることを示します。 値をNに設定すると、パフォーマンスモニタリングエンジンが有効になってからN秒後にパフォーマンスモニタリングが開始されます。

    profiling.start.at.zero.second

    PROFILING_START_AT_ZERO_SECOND

    毎分0秒でパフォーマンスモニタリングを開始するかどうかを指定します。 毎分0秒でパフォーマンスモニタリングを開始する場合は、値をtrueに設定します。 たとえば、値がtrueに設定されていて、現在の時刻が現在の分の30秒である場合、システムはパフォーマンスモニタリングを開始する前に30秒間自動的に待機します。

    デフォルト値:false

    profiling.compression.mode

    PROFILING_COMPRESSION_MODE

    圧縮モード。 デフォルト値 : none。 有効な値: gzipとnone。

    • none: ファイルは圧縮されておらず、接尾辞は. jfrです。

    • gzip: ファイルは圧縮されており、接尾辞は .jfr.gzipです。

    profiling.trigger.mode

    PROFILING_TRIGGER_MODE

    トリガーモード。 定期的または1回のパフォーマンスモニタリングをトリガーできます。 デフォルト値: periodic。 有効な値: periodicとapi。

    エージェントモードでは、値を定期的に設定することを推奨します。

    profiling.output.format

    PROFILING_OUTPUT_FORMAT

    ファイルの形式。 デフォルト値: jfr。 有効な値: jfrおよびcollapsed。

    profiling.cpu.engine

    PROFILING_CPU_ENGINE

    CPUホットスポットの監視に使用されるエンジン。 デフォルト値:off 有効な値: auto、async_profiler、jfr、off。

    値offは、CPUホットスポット監視が無効であることを指定します。 その他の値は、CPUホットスポット監視を有効にすることを指定します。 値をautoに設定することを推奨します。

    profiling.cpu.interval

    PROFILING_CPU_INTERVAL

    CPUホットスポットの監視が実行される間隔。 小さな値はオーバーヘッドを増加させる。 デフォルト値は 10 です。 単位:ミリ秒。

    profiling.wallclock.engine

    PROFILING_WALLCLOCK_ENGINE

    ウォールクロックのホットスポットの監視に使用されるエンジン。 デフォルト値:off 有効な値: auto、async_profiler、およびoff。

    値offは、壁時計ホットスポットの監視が無効にされることを指定する。 他の値は、壁時計ホットスポットの監視が有効にされることを指定する。 値をoffに設定することを推奨します。

    profiling.wallclock.interval

    PROFILING_WALLCLOCK_INTERVAL

    ウォールクロックのホットスポットの監視が実行される間隔。 小さな値はオーバーヘッドを増加させる。 デフォルト値は 20 です。 単位:ミリ秒。

    profiling.wallclock.thread.filter

    PROFILING_WALLCLOCK_THREAD_FILTER

    ウォールクロックのホットスポットの監視に使用されるスレッドフィルタ。 デフォルト値: 0。これは、スレッドが関与していないことを示します。

    値の指定方法の例を次に示します。

    • 空: ""

    • 単一の糸: 123

    • 複数のスレッド: 122,123

    糸の範囲: 134に122

    profiling.wallclock.threads.per.tick

    PROFILING_WALLCLOCK_THREADS_PER_TICK

    ウォールクロックのホットスポットを監視するために使用されるスレッドの最大数。 デフォルト値: 8。

    profiling.alloc.engine

    PROFILING_ALLOC_ENGINE

    Allocホットスポット監視に使用されるエンジン。 デフォルト値:off 有効な値: auto、async_profiler、jfr、off。 Allocホットスポット監視は、メモリ要求ホットスポットの監視を指す。

    値offは、Allocホットスポット監視が無効であることを指定します。 その他の値は、Allocホットスポット監視を有効にすることを指定します。 値をautoに設定することを推奨します。

    profiling.alloc.interval

    PROFILING_ALLOC_INTERVAL

    Allocホットスポット監視が実行される間隔。 小さな値はオーバーヘッドを増加させる。 デフォルト値: 256 単位: キロバイト。

    profiling.jfr.max.size

    PROFILING_JFR_MAX_SIZE

    JFRファイルのサイズの上限。 サイズが上限に達すると、ファイル内のデータは自動的に破棄されます。 デフォルト値: 64m。 値の例: 256kおよび10m。

    profiling.jfr.max.age

    PROFILING_JFR_MAX_AGE

    JFRファイルの年齢の上限。 年齢が上限に達すると、ファイル内のデータは自動的に破棄されます。 デフォルト値: 10m。 値の例: 1m、1h、および1d。

    profiling.jfr.max.stack.de pth

    PROFILING_JFR_MAX_STACK_DEPTH

    JFRサンプリング中に許可される最大スタック深度。 デフォルト値: 64。

次のステップ

JavaプログラムからFull-stack Observabilityにパフォーマンスデータを収集した後、パフォーマンス監視機能を使用してパフォーマンスの問題をトラブルシューティングできます。 詳細については、「データクエリ」および「データ比較」をご参照ください。