- 필수 기능
- 시작하기
- Glossary
- 표준 속성
- Guides
- Agent
- 통합
- 개방형텔레메트리
- 개발자
- API
- Datadog Mobile App
- CoScreen
- Cloudcraft
- 앱 내
- 서비스 관리
- 인프라스트럭처
- 애플리케이션 성능
- APM
- Continuous Profiler
- 스팬 시각화
- 데이터 스트림 모니터링
- 데이터 작업 모니터링
- 디지털 경험
- 소프트웨어 제공
- 보안
- AI Observability
- 로그 관리
- 관리
To verify you have access to JMX, test using JConsole or equivalent if possible. If you’re unable to connect using JConsole this article may help to get you sorted. Also, if the metrics listed in your YAML aren’t 1:1 with those listed in JConsole you’ll need to correct this.
jmxterm
JAR is not shipped with the agent. To download and use jmxterm
, see the upstream project. Change /opt/datadog-agent/agent/checks/libs/jmxterm-1.0-DATADOG-uber.jar
in the examples below to the jmxterm
JAR path you downloaded from the upstream project.If you’re able to connect using JConsole, run the following:
java -jar /opt/datadog-agent/agent/checks/libs/jmxterm-1.0-DATADOG-uber.jar -l localhost:<PORT> -u <USER> -p <PASSWORD>
If you’re able to connect using the command above, run: beans
and send to the Datadog support team a copy of the results from above along with the following information:
/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
(Appending --flare
includes the output in the flare for version 6.26.x/7.26.x)/var/log/datadog/jmxfetch.log
ps aux | grep jmxfetch
sudo /etc/init.d/datadog-agent jmx list_everything
Note: If you’re able to see some metrics (jvm.heap_memory
, jvm.non_heap_memory
, etc.) it is a sign that JMXFetch is properly running. If you’re targeting another application and not seeing related metrics, the likely issue is a misconfiguration in your YAML.
These commands are available since v6.2.0:
Command | Description |
---|---|
sudo -u dd-agent datadog-agent jmx list matching | List attributes that match at least one of your instances configuration. |
sudo -u dd-agent datadog-agent jmx list limited | List attributes that do match one of your instances configuration but that are not being collected because it would exceed the number of metrics that can be collected. |
sudo -u dd-agent datadog-agent jmx list collected | List attributes that are actually collected by your current instances configuration. |
sudo -u dd-agent datadog-agent jmx list not-matching | List attributes that don’t match any of your instances configuration. |
sudo -u dd-agent datadog-agent jmx list everything | List every attributes available that has a type supported by JMXFetch. |
sudo -u dd-agent datadog-agent jmx collect | Start the collection of metrics based on your current configuration and display them in the console. |
Notes:
By default these commands run on all the configured JMX checks. To limit the commands to specific checks, use the --checks
flag, for example:
sudo -u dd-agent datadog-agent jmx list collected --checks tomcat
For Agent v6.26.+ / v7.26+, appending --flare
writes the output of the above commands under /var/log/datadog/jmxinfo/
, which is included in the flare.
sudo -u dd-agent datadog-agent jmx list everything -l debug --flare
The Agent 6 ships JMXFetch and supports all of its features, except those listed below.
The Agent doesn’t have a full featured interface to JMXFetch, so you may have to run some commands manually to debug the list of beans collected, JVMs, etc. A typical manual call will take the following form:
/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>
where <COMMAND>
is any of:
list_everything
list_collected_attributes
list_matching_attributes
list_not_matching_attributes
list_limited_attributes
list_jvms
and <CHECK_LIST>
corresponds to a list of valid yaml
configurations in /etc/datadog-agent/conf.d/
. For instance:
cassandra.d/conf.yaml
kafka.d/conf.yaml
jmx.d/conf.yaml
Example:
/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
Notes:
/usr/lib/jvm/java-8-oracle/lib/tools.jar
in the example) might reside elsewhere in your system. You should be able to find it with sudo find / -type f -name 'tools.jar'
.-Xmx
, -Xms
, the values used in the example correspond to the JMXFetch defaults.Command | Description |
---|---|
sudo /etc/init.d/datadog-agent jmx list_matching_attributes | List attributes that match at least one of your instance configurations. |
sudo /etc/init.d/datadog-agent jmx list_limited_attributes | List attributes that do match one of your instance configurations but that are not being collected because it would exceed the number of metrics that can be collected. |
sudo /etc/init.d/datadog-agent jmx list_collected_attributes | List attributes that are actually collected by your current instance configurations. |
sudo /etc/init.d/datadog-agent jmx list_not_matching_attributes | List attributes that don’t match any of your instance configurations. |
sudo /etc/init.d/datadog-agent jmx list_everything | List every attributes available that has a type supported by JMXFetch. |
sudo /etc/init.d/datadog-agent jmx collect | Start the collection of metrics based on your current configuration and display them in the console. |
To check whether Autodiscovery is loading JMX-based checks:
$ docker exec -it <AGENT_CONTAINER_NAME> agent configcheck
To see JMX-based checks status from the Agent:
$ docker exec -it <AGENT_CONTAINER_NAME> agent status
Datadog accepts a maximum of 350 metrics. A best practice is to limit your metrics to less than 350 by creating filters to refine those metrics collected; but if you need more than 350 metrics, it is possible to increase this limit by modifying a parameter in your JMX config file.
Please contact Datadog support if you would like to increase this limit.
The default Agent installation does not come with a bundled JVM and uses the one installed on your system. Therefore you must make sure that the Java home directory is present in the path of the user running the Agent.
Notes:
gcr.io/datadoghq/agent:latest-jmx
Docker image does include a JVM, which the Agent needs to run jmxfetch. Alternatively, you can specify the JVM path in the integration’s configuration file with the java_bin_path
parameter.Datadog’s Java APM library is capable of collecting JVM metrics without the JMX integration. See Runtime Metrics, for more details.
The following instructions work on Agent v5.6.0+.
JBoss/WildFly applications expose JMX over a specific protocol (Remoting JMX) that is not bundled by default with JMXFetch. To allow JMXFetch to connect to these applications, configure it as follows:
jboss-cli-client.jar
file on your JBoss/WildFly server (by default, its path should be $JBOSS_HOME/bin/client/jboss-cli-client.jar
).jboss-cli-client.jar
to a location on the host JMXFetch is running on.init_config
section of your configuration: # Datadog Agent >= 5.6.0
init_config:
custom_jar_paths:
- /path/to/jboss-cli-client.jar
instances
section of your configuration: # Datadog Agent >= 5.6.0
# The jmx_url may be different depending on the version of JBoss/WildFly you're using
# and the way you've set up JMX on your server
# Refer to the relevant documentation of JBoss/WildFly for more information
instances:
- jmx_url: "service:jmx:remote://localhost:4447"
name: jboss-application # Mandatory, but can be set to any value,
# is used to tag the metrics pulled from that instance
Note: If you run into warning message like Unable to instantiate or initialize instance <instance_name> for an unknown reason.Parameter 'name' may not be null
, you may need to set a wildfly user with $WILDFLY_HOME/bin/add-user.sh -a -u <user> -p <password>
and specify user
and password
in the instances
section of your configuration:
instances:
- jmx_url: <jmx_url>
name: <instance_name>
user: <username>
password: <password>
The following instructions work on Agent v5.6.0+.
If you’re using Tomcat with JMX remote lifecycle listener enabled (see the Tomcat documentation for more information), JMXFetch needs an additional setup to be able to connect to your Tomcat application.
catalina-jmx-remote.jar
file on your Tomcat server (by default, its path should be $CATALINA_HOME/lib
).catalina-jmx-remote.jar
to a location on the host JMXFetch is running on.init_config
section of your configuration:# Datadog Agent >= 5.6.0
init_config:
custom_jar_paths:
- /path/to/catalina-jmx-remote.jar
instances
section of your configuration:# Datadog Agent >= 5.6.0
# The jmx_url may be different depending on the way you've set up JMX on your Tomcat server
instances:
- jmx_url: "service:jmx:rmi://:10002/jndi/rmi://:10001/jmxrmi"
name: tomcat-application # Mandatory, but can be set to any arbitrary value,
# is used to tag the metrics pulled from that instance
Once JMX is enabled and your Agent check is successfully sending metrics to Datadog, you can secure the remote connection over an SSL Socket.
Note: You cannot secure JMX over SSL without using the JMX remote user/password authentication files. If you are using system level permissions to run your application, add these files and run them at startup.
This example shows the Datadog configuration for the Tomcat integration.
conf.yaml
file located in conf.d/tomcat.d
:instances:
- host: localhost
port: 9000
user: tomcat
password: tomcat
name: tomcat_webapp
trust_store_path: <KEYSTORE_PATH>
trust_store_password: <KEY_PASSWORD>
추가 유용한 문서, 링크 및 기사: