- 重要な情報
- はじめに
- 用語集
- エージェント
- インテグレーション
- OpenTelemetry
- 開発者
- API
- CoScreen
- アプリ内
- インフラストラクチャー
- アプリケーションパフォーマンス
- 継続的インテグレーション
- ログ管理
- セキュリティ
- UX モニタリング
- 管理
インテグレーションオートディスカバリーアノテーションを活用するか、オートディスカバリーコンテナ識別子を使用して、Kubernetes のポッドから JMX アプリケーションのメトリクスを収集します。オートディスカバリーアノテーションは、Datadog-JMX インテグレーションを構成するための推奨される方法です。コンフィギュレーションパラメーターのセットが長すぎてアノテーションに収まらない場合は、オートディスカバリーコンテナ識別子メソッドを使用します。
オートディスカバリーアノテーションロジックは、Agent が JMX チェックコンフィギュレーション要素を「自動的に検出」し、それに応じて JMX チェックを構成できるように、アノテーションを介して JMX チェックコンフィギュレーション要素をポッドに適用します。
通常の gcr.io/datadoghq/agent:latest
ではなく、gcr.io/datadoghq/agent:latest-jmx
イメージ名を使用して、Kubernetes クラスターで Agent を起動します。
JMX アプリケーションを含むコンテナにオートディスカバリーアノテーションを適用します。
apiVersion: v1
kind: Pod
metadata:
name: <POD_NAME>
annotations:
ad.datadoghq.com/<CONTAINER_IDENTIFIER>.check_names: '["<INTEGRATION_NAME>"]'
ad.datadoghq.com/<CONTAINER_IDENTIFIER>.init_configs: '[{"is_jmx": true, "collect_default_metrics": true}]'
ad.datadoghq.com/<CONTAINER_IDENTIFIER>.instances: '[{"host": "%%host%%","port":"<JMX_PORT>"}]'
ad.datadoghq.com/<CONTAINER_IDENTIFIER>.logs: '[{"source":"<INTEGRATION_NAME>","service":"<INTEGRATION_NAME>"}]'
# (...)
spec:
containers:
- name: '<CONTAINER_IDENTIFIER>'
# (...)
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: JAVA_OPTS
value: >-
-Xms256m -Xmx6144m
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=<JMX_PORT>
-Dcom.sun.management.jmxremote.rmi.port=<JMX_PORT>
-Djava.rmi.server.hostname=$(POD_IP)
Agent が RMI レジストリに接続することを JMX サーバーが許可するように、JAVA_OPTS
環境変数を作成する必要があります。
注:
<JMX_PORT>
は、JMX メトリクスを公開するポートを参照します。ad.datadoghq.com/<CONTAINER_IDENTIFIER>.instances
アノテーションで "rmi_registry_ssl": true
を使用し、対応する Dcom.sun.management.jmxremote
を JAVA_OPTS
から削除します。JMX 対応のインテグレーション名 <INTEGRATION_NAME>
のリストは次のとおりです。
たとえば、ポート 9012
で JMX メトリクスを公開している Tomcat を実行している場合は、次のようにします。
apiVersion: v1
kind: Pod
metadata:
name: tomcat-test
annotations:
ad.datadoghq.com/tomcat.check_names: '["tomcat"]'
ad.datadoghq.com/tomcat.init_configs: '[{"is_jmx": true, "collect_default_metrics": true}]'
ad.datadoghq.com/tomcat.instances: '[{"host": "%%host%%","port":"9012"}]'
ad.datadoghq.com/tomcat.logs: '[{"source":"Tomcat","service":"Tomcat"}]'
spec:
containers:
- name: tomcat
image: tomcat:8.0
imagePullPolicy: Always
ports:
- containerPort: 9012
env:
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
- name: JAVA_OPTS
value: >-
-Xms256m -Xmx6144m
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.local.only=false
-Dcom.sun.management.jmxremote.port=9012
-Dcom.sun.management.jmxremote.rmi.port=9012
-Djava.rmi.server.hostname=$(POD_IP)
Datadog-JMX インテグレーションのより複雑なコンフィギュレーションを渡す必要がある場合は、オートディスカバリーコンテナ識別子を利用して、カスタムインテグレーションコンフィギュレーションファイルまたはカスタム metrics.yaml
ファイルを渡します。
Agent がクラスターのコンテナとして実行されているか、ホストで直接実行されているかを選択します。
Agent がクラスターで実行されており、JMX メトリクスを収集するためにコンテナを自動検出する場合:
通常の gcr.io/datadoghq/agent:latest
イメージではなく、必ず Agent イメージ gcr.io/datadoghq/agent:latest-jmx
を実行してください。
インテグレーションに関連付けられているコンフィギュレーションファイル conf.yaml
と metrics.yaml
を取得します。Datadog-JMX ベースのインテグレーションと関連するファイルのリストを以下に示します。
conf.yaml.example
ファイルの名前を conf.yaml
に変更します。
Agent オートディスカバリーロジックに適合するように、conf.yaml
のパラメーター値を置き換えます。コンフィギュレーションファイルにはデフォルトでホストパラメーター値があり、代わりにオートディスカバリーテンプレート変数ロジックを使用します。次の Tomcat チェックの例では、host
パラメーター値が localhost
から %%host%%
に変更されています。
init_config:
## @param is_jmx - boolean - required
## Whether or not this file is a configuration for a JMX integration.
#
is_jmx: true
## @param collect_default_metrics - boolean - required
## Whether or not the check should collect all default metrics.
#
collect_default_metrics: true
instances:
## @param host - string - required
## Tomcat JMX hostname to connect to.
#
- host: '%%host%%'
## @param port - integer - required
## Tomcat JMX port to connect to.
#
port: 9012
このコンフィギュレーションファイルをアプリケーションコンテナに適用する Agent に指定するには、conf.yaml
ファイルの先頭に ad_identifiers
パラメーターを構成します。
ad_identifiers:
- '<CUSTOM_AD_IDENTIFIER>'
init_config:
# (...)
instances:
# (...)
注: 上記の例ではカスタム ad_identifers
値を使用していますが、必要に応じて、コンテナショートイメージを ad_identifiers
として指定できます。
conf.d/<INTEGRATION_NAME>.d/
フォルダーの Agent にコンフィギュレーションファイル (conf.yaml
と metrics.yaml
) をマウントします。
(任意) - Agent コンテナ (AWS ECS など) で上記のファイルをマウントできない場合は、これら 2 つのコンフィギュレーションファイルを使用して Agent Docker イメージを再構築する必要があります。
FROM gcr.io/datadoghq/agent:latest-jmx
COPY <PATH_JMX_CONF_FILE> conf.d/tomcat.d/
COPY <PATH_JMX_METRICS_FILE> conf.d/tomcat.d/
その後、この新しいカスタムイメージを正規のコンテナ化された Agent として使用します。
Agent がホストで実行されており、JMX メトリクスを収集するためにコンテナを自動検出する場合:
Agent インテグレーションディレクトリの対応する conf.yaml.example
ファイルの名前を conf.yaml
に変更して、使用する JMX インテグレーションを有効にします。たとえば Tomcat の場合、/etc/datadog-agent/conf.d/tomcat.d/conf.yaml.example
の名前を /etc/datadog-agent/conf.d/tomcat.d/conf.yaml
に変更します。
Agent オートディスカバリーロジックに適合するように、conf.yaml
ファイルのパラメーター値を置き換えます。コンフィギュレーションファイルにはデフォルトでホストパラメーター値があり、代わりにオートディスカバリーテンプレート変数を使用します。次の Tomcat コンフィギュレーションの例では、host
パラメーター値が localhost
から %%host%%
に変更されています。
init_config:
## @param is_jmx - boolean - required
## Whether or not this file is a configuration for a JMX integration.
#
is_jmx: true
## @param collect_default_metrics - boolean - required
## Whether or not the check should collect all default metrics.
#
collect_default_metrics: true
instances:
## @param host - string - required
## Tomcat JMX hostname to connect to.
#
- host: '%%host%%'
## @param port - integer - required
## Tomcat JMX port to connect to.
#
port: 9012
このコンフィギュレーションファイルをアプリケーションコンテナに適用する Agent に指定するには、conf.yaml
ファイルの先頭に ad_identifiers
パラメーターを構成します。
ad_identifiers:
- '<CUSTOM_AD_IDENTIFIER>'
init_config:
# (...)
instances:
# (...)
注: 上記の例ではカスタム ad_identifers
値を使用していますが、必要に応じて、コンテナショートイメージを ad_identifiers
として指定できます。
Agent を構成して実行したら、アプリケーションコンテナの com.datadoghq.ad.check.id:"<CUSTOM_AD_IDENTIFIER>"
ラベルを使用して、オートディスカバリーからチェックコンフィギュレーションを適用します。
Dockerfile:
LABEL "com.datadoghq.ad.check.id"= '<CUSTOM_AD_IDENTIFIER>'
docker-compose.yaml:
labels:
com.datadoghq.ad.check.id: '<CUSTOM_AD_IDENTIFIER>'
docker run command:
-l com.datadoghq.ad.check.id= '<CUSTOM_AD_IDENTIFIER>'
Docker Swarm:
Docker Cloud の Swarm モードを使用する場合は、以下のようにラベルをイメージに適用する必要があります。
version: '1.0'
services:
# ...
project:
image: '<IMAGE_NAME>'
labels:
com.datadoghq.ad.check.id: '<CUSTOM_AD_IDENTIFIER>'
注: Agent と JMX コンテナが同じネットワークブリッジ上にある場合は、JMX サーバーを -Djava.rmi.server.hostname=<CONTAINER_NAME>"
でインスタンス化する必要があります。<CONTAINER_NAME>
は JMX アプリケーションコンテナ名です。