このトピックでは、データ収集環境をデプロイしてデータを収集する方法について説明します。
1. 事前チェックの実行
オンラインアプリケーションがないスタンドアロンサーバーにコレクターがデプロイされていることを確認します。
JAVA_HOMEおよびJDK 1.6以降が設定されていることを確認してください。
2. コレクターを開始するStart the collector
If you use a UNIX-based server, run the following command in the directory in which the collector is installed:
`./run.sh`
If you use a Windows-based server, run the following command in the directory in which the collector is installed:
`start /b java -jar javaagent-collector.jar`
collector/logs/collector.logファイルにログを表示します。 ログファイルに起動メッセージまたは成功メッセージが含まれている場合、コレクターがデプロイされます。
エラーを解決する方法については、「アプリケーションコレクターのFAQ」をご参照ください。
Javaエージェント
1. 起動前の設定
環境変数JAVA_HOMEが設定されていることを確認してください。 それ以外の場合は、attach.shファイルのJAVA_HOMEの値をJDKの絶対パスに設定します。 JDKの代わりにJREを使用する場合は、tools.jarファイルを ${JAVA_HOME}/lib /ディレクトリに手動でコピーする必要があります。
javaagent.configファイルを設定します。
profiler.collector.ip = 11.23.45.67
# コレクターのIPアドレスを指定します。profiler.collector.port = 9996
# コレクターポートを指定します。profiler.app.name = adamApp
# アプリケーション名を指定します。 アプリケーション名の長さは20文字未満で、英数字のみを使用する必要があります。profiler.app.port = 8080
# アプリケーションの起動ポートを指定します。 アプリケーションは、異なる機能に対して異なるポートを使用することができる。 要求されたポートのみを設定する必要があります。 JVM.profiler.applicationservertype = TOMCAT
内のアプリケーションの数に関係なく、1つのポートを設定します。# アプリケーションミドルウェアのコンテナタイプを指定します。 有効な値: TOMCAT、JBOSS、WEBLOGIC。
オプション設定
Configure prefixes for the directories in which the Java code to be tested resides. Replace the directories in the following example. Separate multiple directories with commas (,). Each directory must have at least two levels of subdirectories. We recommend that you specify no more than five directories.
If databases are changed, the collector can provide specific suggestions to modify application configurations based on the precise call stack information.
If some directories cannot be provided, you can leave this parameter unspecified. You can configure filters on the analysis page of the Alibaba Cloud Advanced Database & Application Migration (ADAM) console.
`profiler.classpath.whitelist = com.alibaba.javaagent,com.alibaba.adam`
If the preceding allowlist is specified, you can leave this parameter unspecified. You can also specify a denylist to filter out unnecessary call stack information.
`profiler.classpath.blacklist =org.apache,net.sf`
Specify the limit of the CPU utilization. When the limit is reached, data collection is paused.
`profiler.cpu.threshold = 85`
Specify the interval at which system information is collected. Unit: minutes. Default value: 15.
`profiler.sys.send.interval = 15`
Specify the interval at which dynamic SQL information is collected. Unit: minutes. Default value: 15.
`profiler.sql.dynamic.send.interval = 15`
2. 起動方法
方法1: アプリケーションを再起動せずに1回だけアプリケーションを監視する
javaagentディレクトリにシステム操作権限を追加します。 エージェントの起動に使用されるアカウントが、アプリケーションの起動に使用されるアカウントと同じであることを確認してください。 ${pid}
をアプリケーションのプロセスIDに置き換えて、次のコマンドを実行します。
If you use a UNIX-based server, run the following command:
`./attach.sh -p ${pid}`
If you use a Windows-based server, run the following command:
`java -cp "%JAVA_HOME%\lib\tools.jar;%cd%\javaagent-bootstrap.jar" com.alibaba.adam.javaagent.bootstrap.AgentAttacher -p ${pid}`
javaagentディレクトリのログファイルに成功メッセージが含まれている場合、エージェントは起動されています。 インバウンドトラフィックがアプリケーションによって受信され、コレクターディレクトリにデータを含むサブディレクトリが含まれている場合、エージェントは起動されており、コレクターにデータを送信しています。 エラーを解決する方法については、「アプリケーションコレクターのFAQ」をご参照ください。
取得したアプリケーションのプロセスIDが正しいか确认してください。
エージェントの起動に使用されるアカウントが、アプリケーションの起動に使用されるアカウントと同じであることを確認してください。 エージェントとアプリケーションのシステム操作権限が同じであることを确认してください。 それ以外の場合、エージェントはアプリケーションを監視できません。 Windowsレジストリをシステムユーザーとして表示してアプリケーションを起動した場合、アカウントの権限に矛盾があるため、方法1を使用してエージェントを起動できません。
方法2 :( 推奨) アプリケーションの起動時に監視を開始する
${javaagent_path}
を設定ファイルのjavaagentのディレクトリに置き換えてから、アプリケーションを再起動します。
UNIXオペレーティング・システム
Tomcat: Add the following code to the last CATALINA_OPTS configuration item in the catalina.sh startup file:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
JBoss: Add the following code to the last JAVA_OPTS configuration item in the run.conf startup file:
JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
WebLogic: Add the following code to the last JAVA_OPTIONS configuration item in the startWebLogic.sh startup file:
JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
WebSphere:
Method 1: Add JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar" to the configuration file.
Method 2: Add the following code to the common JVM parameters:
name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
Docker containers in Kubernetes clusters:
Place the javaagent directory into a Docker image, add the corresponding javaagent configuration file, and deploy the image.
Windows オペレーティングシステム
Tomcat: Add the following code to the last CATALINA_OPTS configuration item in the catalina.bat startup file:
CATALINA_OPTS="$CATALINA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
JBoss: Add the following code to the last JAVA_OPTS configuration item in the run.conf startup file:
JAVA_OPTS="$JAVA_OPTS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
WebLogic: Add the following code to the last JAVA_OPTIONS configuration item in the startWebLogic.cmd startup file:
JAVA_OPTIONS="$JAVA_OPTIONS -javaagent:${javaagent_path}/javaagent-bootstrap.jar"
WebSphere:
Method 1: Add JAVA_OPTS="$JAVA_OPTS -javaagent:/home/admin/javaagent/javaagent-bootstrap.jar" to the configuration file.
Method 2: Add the following code to the common JVM parameters:
name:javaagent value:/home/admin/javaagent/javaagent-bootstrap.jar
アプリケーションの起動後、アプリケーションログを表示します。 Javaエージェントの読み込みに成功!
が表示された場合、エージェントが起動されます。 エラーが発生した場合は、エラーメッセージに基づいてスクリプトを変更します。 エージェント情報が表示されていない場合, 設定パスが不正なため, エージェントは読み込まれませんでした。
方法の比較
起動方法 | メリット | 欠点 | シナリオ |
方法 1 | アプリケーションがエージェントによって監視されていない場合でも、アプリケーションを再起動せずにエージェントを設定できます。 | アプリケーションを再起動するたびに、エージェントを手動で起動する必要があります。 エージェントの起動に使用されるアカウントは、アプリケーションの起動に使用されるアカウントと同じである必要があります。 | この方法は、アプリケーションを長時間再起動せず、アプリケーションの再起動がビジネスに影響するシナリオに適用されます。 |
方法 2 | アプリケーションを再起動すると、エージェントは自動的に起動し、アプリケーションデータを継続的に収集します。 アカウントの権限を考慮する必要はありません。 | アプリケーションデータを初めて収集する場合は、アプリケーションを再起動してエージェントを起動する必要があります。 | この方法は、アプリケーションを再起動して、ビジネスに影響を与えずにデータを継続的に収集できるシナリオに適用されます。 |
使用上の注意
アプリケーションが停止すると、エージェントの起動に使用されたメソッドに関係なく、エージェントも停止します。
次の方法でエージェントを停止できます。
方法1を使用してエージェントを起動する場合は、アプリケーションを再起動するか、/attach.sh -p ${pid} -sコマンドを実行します。
方法2を使用してエージェントを起動する場合は、javaagentの設定を削除してアプリケーションを再起動してください。
エージェントの停止後にアプリケーションを監視する場合は、アプリケーションを再起動する必要があります。
方法1を使用してエージェントを起動する場合は、アプリケーションの再起動後に手動でエージェントを起動します。
方法2を使用してエージェントを起動する場合は、アプリケーションの再起動後にエージェントが自動的に起動するのを待ちます。
JBossクラスターは、Community EditionクラスターとEnterprise Editionクラスターに分かれています。 jboss.mo dules.system.pkgsの設定項目が存在する場合は、方法1と方法2のどちらを使用しても、com.alibaba.adam.javaagentディレクトリを追加し、アプリケーションを再起動して監視設定を検証する必要があります。
データの収集 (1〜7日間のデータ)
コレクターがインストールされているディレクトリに移動し、データ /ディレクトリ内のファイルをアプリケーション名でZIP形式で圧縮し、各アプリケーションプロファイルを個別にアップロードします。 各アプリケーションは1つのプロファイルに対応します。 異なるIPアドレスからアプリケーションに対して収集されたデータを1つのZIPファイルに圧縮できます。 ただし、異なるアプリケーションで収集されたデータを1つのZIPファイルに圧縮することはできません。 それ以外の場合は、アップロードエラーが発生します。
その後の操作については、「アプリケーションプロファイルの作成」をご参照ください。