- 重要な情報
- はじめに
- 用語集
- ガイド
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- Service Management
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
JMX にアクセスできることを確認するために、可能であれば JConsole または同等のものを使用してテストしてください。JConsole を使って接続できない場合、この記事が解決するのに役立つかもしれません。また、YAML に記載されているメトリクスと JConsole に記載されているメトリクスが 1:1 でない場合、これを修正する必要があります。
jmxterm
JAR は Agent に同梱されていません。jmxterm
をダウンロードして使用するには、アップストリームプロジェクトを参照してください。以下の例の /opt/datadog-agent/agent/checks/libs/jmxterm-1.0-DATADOG-uber.jar
を、アップストリームプロジェクトからダウンロードした jmxterm
JAR パスに変更します。JConsole で接続できた場合は、以下を実行します。
java -jar /opt/datadog-agent/agent/checks/libs/jmxterm-1.0-DATADOG-uber.jar -l localhost:<PORT> -u <USER> -p <PASSWORD>
上記のコマンドで接続できた場合は、beans
を実行し、上記の結果のコピーと以下の情報を Datadog サポートチームに送信してください。
/var/log/datadog/agent.log
の内容/var/log/datadog/jmxfetch.log
の内容ps aux | grep jmxfetch
の出力sudo -u dd-agent datadog-agent jmx list everything -l debug
の出力 (--flare
を付けると、バージョン 6.26.x/7.26.x の flare に出力が含まれます)/var/log/datadog/jmxfetch.log
の内容ps aux | grep jmxfetch
の出力sudo /etc/init.d/datadog-agent jmx list_everything
の出力注: いくつかのメトリクス (jvm.heap_memory
、jvm.non_heap_memory
など) を見ることができれば、それは JMXFetch が適切に動作している証拠です。他のアプリケーションをターゲットにしていて、関連するメトリクスが表示されない場合は、YAML の構成に誤りがある可能性があります。
これらのコマンドは、v6.2.0 から利用可能です。
コマンド | 説明 |
---|---|
sudo -u dd-agent datadog-agent jmx list matching | 1 つ以上のインスタンス構成に一致する属性をリストする。 |
sudo -u dd-agent datadog-agent jmx list limited | インスタンス構成の 1 つに一致するが、収集可能なメトリクス数を超えるために収集されない属性をリストする。 |
sudo -u dd-agent datadog-agent jmx list collected | 現在のインスタンス構成によって実際に収集される属性をリストする。 |
sudo -u dd-agent datadog-agent jmx list not-matching | どのインスタンス構成にも一致しない属性をリストする。 |
sudo -u dd-agent datadog-agent jmx list everything | JMXFetch でサポートされているタイプのすべての使用可能な属性をリストする。 |
sudo -u dd-agent datadog-agent jmx collect | 現在のコンフィギュレーションに基づいてメトリクスの収集を開始し、コンソールに表示します。 |
注:
デフォルトでは、これらのコマンドは、構成されたすべての JMX チェックで実行されます。コマンドを特定のチェックに限定するには、--checks
フラグを使用します。例:
sudo -u dd-agent datadog-agent jmx list collected --checks tomcat
Agent v6.26.+ / v7.26+ の場合、--flare
を付加すると、上記のコマンドの出力を /var/log/datadog/jmxinfo/
以下に書き込み、flare に含めます。
sudo -u dd-agent datadog-agent jmx list everything -l debug --flare
Agent 6 は JMXFetch を同梱しており、以下に示すものを除き、そのすべての機能をサポートしています。
Agent は、JMXFetch へのフル機能のインターフェイスを持っていないので、収集された Bean のリスト、JVM などをデバッグするために、いくつかのコマンドを手動で実行する必要があるかもしれません。典型的な手動呼び出しは、次のような形式になります。
/usr/bin/java -Xmx200m -Xms50m -classpath /usr/lib/jvm/java-8-oracle/lib/tools.jar:/opt/datadog-agent/bin/agent/dist/jmx/jmxfetch-0.18.2-jar-with-dependencies.jar org.datadog.jmxfetch.App --check <CHECK_LIST> --conf_directory /etc/datadog-agent/conf.d --log_level INFO --log_location /var/log/datadog/jmxfetch.log --reporter console <COMMAND>
このとき、<COMMAND>
は以下のいずれかです。
list_everything
list_collected_attributes
list_matching_attributes
list_not_matching_attributes
list_limited_attributes
list_jvms
また、<CHECK_LIST>
は /etc/datadog-agent/conf.d/
にある有効な yaml
構成のリストに相当します。例:
cassandra.d/conf.yaml
kafka.d/conf.yaml
jmx.d/conf.yaml
例:
/usr/bin/java -Xmx200m -Xms50m -classpath /usr/lib/jvm/java-8-oracle/lib/tools.jar:/opt/datadog-agent/bin/agent/dist/jmx/jmxfetch-0.18.2-jar-with-dependencies.jar org.datadog.jmxfetch.App --check cassandra.d/conf.yaml jmx.d/conf.yaml --conf_directory /etc/datadog-agent/conf.d --log_level INFO --log_location /var/log/datadog/jmxfetch.log --reporter console list_everything
注:
/usr/lib/jvm/java-8-oracle/lib/tools.jar
) は、お使いのシステムでは別の場所にあるかもしれません。sudo find / -type f -name 'tools.jar'
で見つけることができるはずです。-Xmx
、-Xms
の代わりに、JMXFetch のデフォルト値を指定することができます。コマンド | 説明 |
---|---|
sudo /etc/init.d/datadog-agent jmx list_matching_attributes | 1 つ以上のインスタンスコンフィギュレーションに一致する属性をリストします。 |
sudo /etc/init.d/datadog-agent jmx list_limited_attributes | インスタンス構成の 1 つに一致するが、収集可能なメトリクス数を超えるために収集されない属性をリストする。 |
sudo /etc/init.d/datadog-agent jmx list_collected_attributes | 現在のインスタンス構成によって実際に収集される属性をリストする。 |
sudo /etc/init.d/datadog-agent jmx list_not_matching_attributes | どのインスタンス構成にも一致しない属性をリストする。 |
sudo /etc/init.d/datadog-agent jmx list_everything | JMXFetch でサポートされているタイプのすべての使用可能な属性をリストする。 |
sudo /etc/init.d/datadog-agent jmx collect | 現在のコンフィギュレーションに基づいてメトリクスの収集を開始し、コンソールに表示します。 |
オートディスカバリーが JMX ベースのチェックをロードしているかどうかを確認するには、次のようにします。
$ docker exec -it <AGENT_CONTAINER_NAME> agent configcheck
Agent から JMX ベースのチェックのステータスを見るには
$ docker exec -it <AGENT_CONTAINER_NAME> agent status
Datadog は最大 350 のメトリクスを受け取ることができます。 ベストプラクティスは、収集したメトリクスを絞り込むフィルターを作成することによって、メトリクスを 350 未満に制限することです。
この上限を増やしたい場合は、Datadog サポートにご連絡ください。
デフォルトの Agent インストールには、バンドルされている JVM はなく、システムにインストールされているものを使用します。したがって、Agent を実行しているユーザーのパスに Java ホームディレクトリが存在することを確認する必要があります。
注:
gcr.io/datadoghq/agent:latest-jmx
Docker イメージは、Agent が jmxfetch を実行するために必要とする JVM を含んでいます。あるいは、インテグレーションの構成ファイルで、java_bin_path
パラメーターを使って、JVM のパスを指定することもできます。Datadog の Java APM ライブラリは、JMX インテグレーションなしで JVM メトリクスを収集することが可能です。詳細については、ランタイムメトリクスを参照してください。
Agent v5.6.0 以上では、次の手順を使用します。
JBoss/WildFly アプリケーションは、JMXFetch にデフォルトでバンドルされていない特定のプロトコル (Remoting JMX) を介して JMX を公開します。JMXFetch がこれらのアプリケーションに接続できるようにするには、以下のように構成します。
jboss-cli-client.jar
ファイルを探します (デフォルトでは、そのパスは $JBOSS_HOME/bin/client/jboss-cli-client.jar
になっています)。jboss-cli-client.jar
をホスト JMXFetch が実行されている場所にコピーします。init_config
セクションに追加します。 # Datadog Agent >= 5.6.0
init_config:
custom_jar_paths:
- /path/to/jboss-cli-client.jar
instances
セクションで、JMXFetch が接続するカスタム URL を指定します。 # Datadog Agent >= 5.6.0
# jmx_url は、使用している JBoss/WildFly のバージョンと、
# サーバーでの JMX の設定方法によって異なる場合があります
# 詳細は、JBoss/WildFly の関連ドキュメントを参照してください
instances:
- jmx_url: "service:jmx:remote://localhost:4447"
name: jboss-application # 必須ですが、任意の値を設定できます
# そのインスタンスから取得したメトリクスにタグ付けするために使用されます
注: Unable to instantiate or initialize instance <instance_name> for an unknown reason.Parameter 'name' may not be null
のような警告メッセージが表示された場合、$WILDFLY_HOME/bin/add-user.sh -a -u <user> -p <password>
で wildfly ユーザーを設定し、構成の instances
セクションで user
と password
を指定する必要があるかもしれません。
instances:
- jmx_url: <jmx_url>
name: <instance_name>
user: <username>
password: <password>
Agent v5.6.0 以上では、次の手順を使用します。
JMX リモートライフサイクルリスナーを有効にして Tomcat を使用している場合は (詳細については Tomcat マニュアルを参照)、JMXFetch が Tomcat アプリケーションに接続するために追加のセットアップが必要です。
catalina-jmx-remote.jar
ファイルを探します (デフォルトでは、パスは $CATALINA_HOME/lib
です)。catalina-jmx-remote.jar
をホスト JMXFetch が実行されている場所にコピーします。init_config
セクションに追加します。# Datadog Agent >= 5.6.0
init_config:
custom_jar_paths:
- /path/to/catalina-jmx-remote.jar
instances
セクションで、JMXFetch が接続するカスタム URL を指定します。# Datadog Agent >= 5.6.0
# jmx_url は、Tomcat サーバーの JMX のセットアップ方法によって異なります
instances:
- jmx_url: "service:jmx:rmi://:10002/jndi/rmi://:10001/jmxrmi"
name: tomcat-application # 必須ですが任意の値に設定できます。
# これは、インスタンスから取得されたメトリクスのタグ付けに使用されます
JMX が有効化され、Agent チェックが Datadog にメトリクスを正常に送信できるようになると、SSL ソケットを介したリモート接続を保護することができます。
注: JMX リモートユーザー/パスワード認証ファイルを使用せずに、JMX over SSL を保護することはできません。アプリケーションの実行にシステムレベルの権限を使用している場合、これらのファイルを追加し、起動時に実行してください。
この例では、Tomcat インテグレーションの Datadog の構成を示します。
conf.d/tomcat.d
にある Datadog Tomcat の conf.yaml
ファイルを更新します。instances:
- host: localhost
port: 9000
user: tomcat
password: tomcat
name: tomcat_webapp
trust_store_path: <KEYSTORE_PATH>
trust_store_password: <KEY_PASSWORD>
お役に立つドキュメント、リンクや記事: