diff --git a/cassandra/tests/common.py b/cassandra/tests/common.py index 8a1911fc92c05..d9cb5b82a43af 100644 --- a/cassandra/tests/common.py +++ b/cassandra/tests/common.py @@ -2,6 +2,7 @@ # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) from datadog_checks.dev import get_docker_hostname, get_here +from datadog_checks.dev.jmx import JMX_E2E_METRICS, JVM_E2E_METRICS CHECK_NAME = "cassandra" @@ -16,94 +17,80 @@ "cassandra.total_blocked_tasks", """ -CASSANDRA_E2E_METRICS = [ - "cassandra.bloom_filter_false_ratio", - "cassandra.bytes_flushed.count", - "cassandra.cas_commit_latency.75th_percentile", - "cassandra.cas_commit_latency.95th_percentile", - "cassandra.cas_commit_latency.one_minute_rate", - "cassandra.cas_prepare_latency.75th_percentile", - "cassandra.cas_prepare_latency.95th_percentile", - "cassandra.cas_prepare_latency.one_minute_rate", - "cassandra.cas_propose_latency.75th_percentile", - "cassandra.cas_propose_latency.95th_percentile", - "cassandra.cas_propose_latency.one_minute_rate", - "cassandra.col_update_time_delta_histogram.75th_percentile", - "cassandra.col_update_time_delta_histogram.95th_percentile", - "cassandra.col_update_time_delta_histogram.min", - "cassandra.compaction_bytes_written.count", - "cassandra.compression_ratio", - "cassandra.currently_blocked_tasks.count", - "cassandra.db.droppable_tombstone_ratio", - "cassandra.dropped.one_minute_rate", - "cassandra.exceptions.count", - "cassandra.key_cache_hit_rate", - "cassandra.latency.75th_percentile", - "cassandra.latency.95th_percentile", - "cassandra.latency.one_minute_rate", - "cassandra.live_disk_space_used.count", - "cassandra.live_ss_table_count", - "cassandra.load.count", - "cassandra.max_partition_size", - "cassandra.max_row_size", - "cassandra.mean_partition_size", - "cassandra.mean_row_size", - "cassandra.net.down_endpoint_count", - "cassandra.net.up_endpoint_count", - "cassandra.pending_compactions", - "cassandra.pending_flushes.count", - "cassandra.pending_tasks", - "cassandra.range_latency.75th_percentile", - "cassandra.range_latency.95th_percentile", - "cassandra.range_latency.one_minute_rate", - "cassandra.read_latency.75th_percentile", - "cassandra.read_latency.95th_percentile", - "cassandra.read_latency.99th_percentile", - "cassandra.read_latency.one_minute_rate", - "cassandra.row_cache_hit.count", - "cassandra.row_cache_hit_out_of_range.count", - "cassandra.row_cache_miss.count", - "cassandra.snapshots_size", - "cassandra.ss_tables_per_read_histogram.75th_percentile", - "cassandra.ss_tables_per_read_histogram.95th_percentile", - "cassandra.tombstone_scanned_histogram.75th_percentile", - "cassandra.tombstone_scanned_histogram.95th_percentile", - "cassandra.total_blocked_tasks.count", - "cassandra.total_commit_log_size", - "cassandra.total_disk_space_used.count", - "cassandra.view_lock_acquire_time.75th_percentile", - "cassandra.view_lock_acquire_time.95th_percentile", - "cassandra.view_lock_acquire_time.one_minute_rate", - "cassandra.view_read_time.75th_percentile", - "cassandra.view_read_time.95th_percentile", - "cassandra.view_read_time.one_minute_rate", - "cassandra.waiting_on_free_memtable_space.75th_percentile", - "cassandra.waiting_on_free_memtable_space.95th_percentile", - "cassandra.write_latency.75th_percentile", - "cassandra.write_latency.95th_percentile", - "cassandra.write_latency.99th_percentile", - "cassandra.write_latency.one_minute_rate", - # JVM Metrics - "jvm.buffer_pool.direct.capacity", - "jvm.buffer_pool.direct.count", - "jvm.buffer_pool.direct.used", - "jvm.buffer_pool.mapped.capacity", - "jvm.buffer_pool.mapped.count", - "jvm.buffer_pool.mapped.used", - "jvm.cpu_load.process", - "jvm.cpu_load.system", - "jvm.gc.eden_size", - "jvm.gc.old_gen_size", - "jvm.gc.survivor_size", - "jvm.heap_memory", - "jvm.heap_memory_committed", - "jvm.heap_memory_init", - "jvm.heap_memory_max", - "jvm.loaded_classes", - "jvm.non_heap_memory", - "jvm.non_heap_memory_committed", - "jvm.non_heap_memory_init", - "jvm.non_heap_memory_max", - "jvm.os.open_file_descriptors", - "jvm.thread_count", -] +# For some reason, those two metrics are not provided by cassandra. +CASSANDRA_JVM_METRICS_NOT_PRESENT = {'jvm.gc.cms.count', 'jvm.gc.parnew.time'} + +CASSANDRA_JVM_E2E_METRICS = list(set(JVM_E2E_METRICS) - CASSANDRA_JVM_METRICS_NOT_PRESENT) + +CASSANDRA_E2E_METRICS = ( + [ + "cassandra.bloom_filter_false_ratio", + "cassandra.bytes_flushed.count", + "cassandra.cas_commit_latency.75th_percentile", + "cassandra.cas_commit_latency.95th_percentile", + "cassandra.cas_commit_latency.one_minute_rate", + "cassandra.cas_prepare_latency.75th_percentile", + "cassandra.cas_prepare_latency.95th_percentile", + "cassandra.cas_prepare_latency.one_minute_rate", + "cassandra.cas_propose_latency.75th_percentile", + "cassandra.cas_propose_latency.95th_percentile", + "cassandra.cas_propose_latency.one_minute_rate", + "cassandra.col_update_time_delta_histogram.75th_percentile", + "cassandra.col_update_time_delta_histogram.95th_percentile", + "cassandra.col_update_time_delta_histogram.min", + "cassandra.compaction_bytes_written.count", + "cassandra.compression_ratio", + "cassandra.currently_blocked_tasks.count", + "cassandra.db.droppable_tombstone_ratio", + "cassandra.dropped.one_minute_rate", + "cassandra.exceptions.count", + "cassandra.key_cache_hit_rate", + "cassandra.latency.75th_percentile", + "cassandra.latency.95th_percentile", + "cassandra.latency.one_minute_rate", + "cassandra.live_disk_space_used.count", + "cassandra.live_ss_table_count", + "cassandra.load.count", + "cassandra.max_partition_size", + "cassandra.max_row_size", + "cassandra.mean_partition_size", + "cassandra.mean_row_size", + "cassandra.net.down_endpoint_count", + "cassandra.net.up_endpoint_count", + "cassandra.pending_compactions", + "cassandra.pending_flushes.count", + "cassandra.pending_tasks", + "cassandra.range_latency.75th_percentile", + "cassandra.range_latency.95th_percentile", + "cassandra.range_latency.one_minute_rate", + "cassandra.read_latency.75th_percentile", + "cassandra.read_latency.95th_percentile", + "cassandra.read_latency.99th_percentile", + "cassandra.read_latency.one_minute_rate", + "cassandra.row_cache_hit.count", + "cassandra.row_cache_hit_out_of_range.count", + "cassandra.row_cache_miss.count", + "cassandra.snapshots_size", + "cassandra.ss_tables_per_read_histogram.75th_percentile", + "cassandra.ss_tables_per_read_histogram.95th_percentile", + "cassandra.tombstone_scanned_histogram.75th_percentile", + "cassandra.tombstone_scanned_histogram.95th_percentile", + "cassandra.total_blocked_tasks.count", + "cassandra.total_commit_log_size", + "cassandra.total_disk_space_used.count", + "cassandra.view_lock_acquire_time.75th_percentile", + "cassandra.view_lock_acquire_time.95th_percentile", + "cassandra.view_lock_acquire_time.one_minute_rate", + "cassandra.view_read_time.75th_percentile", + "cassandra.view_read_time.95th_percentile", + "cassandra.view_read_time.one_minute_rate", + "cassandra.waiting_on_free_memtable_space.75th_percentile", + "cassandra.waiting_on_free_memtable_space.95th_percentile", + "cassandra.write_latency.75th_percentile", + "cassandra.write_latency.95th_percentile", + "cassandra.write_latency.99th_percentile", + "cassandra.write_latency.one_minute_rate", + ] + + CASSANDRA_JVM_E2E_METRICS + + JMX_E2E_METRICS +) diff --git a/cassandra/tests/test_check.py b/cassandra/tests/test_check.py index 52a152c0823df..d2866940c0646 100644 --- a/cassandra/tests/test_check.py +++ b/cassandra/tests/test_check.py @@ -10,7 +10,7 @@ @pytest.mark.e2e def test(dd_agent_check): instance = {} - aggregator = dd_agent_check(instance) + aggregator = dd_agent_check(instance, rate=True) for metric in CASSANDRA_E2E_METRICS: aggregator.assert_metric(metric) diff --git a/datadog_checks_dev/datadog_checks/dev/jmx.py b/datadog_checks_dev/datadog_checks/dev/jmx.py index 5c0212941ceae..384c25c12bcc6 100644 --- a/datadog_checks_dev/datadog_checks/dev/jmx.py +++ b/datadog_checks_dev/datadog_checks/dev/jmx.py @@ -13,6 +13,7 @@ 'jvm.cpu_load.system', 'jvm.gc.cms.count', 'jvm.gc.eden_size', + 'jvm.gc.metaspace_size', 'jvm.gc.old_gen_size', 'jvm.gc.parnew.time', 'jvm.gc.survivor_size', @@ -28,3 +29,10 @@ 'jvm.os.open_file_descriptors', 'jvm.thread_count', ] + +JMX_E2E_METRICS = [ + 'jmx.gc.major_collection_count', + 'jmx.gc.major_collection_time', + 'jmx.gc.minor_collection_count', + 'jmx.gc.minor_collection_time', +] diff --git a/hazelcast/tests/metrics.py b/hazelcast/tests/metrics.py index ee40152112995..c9752b97f12a2 100644 --- a/hazelcast/tests/metrics.py +++ b/hazelcast/tests/metrics.py @@ -1,7 +1,9 @@ # (C) Datadog, Inc. 2020-present # All rights reserved # Licensed under a 3-clause BSD style license (see LICENSE) -METRICS = ( +from datadog_checks.dev.jmx import JVM_E2E_METRICS + +METRICS = [ 'hazelcast.imap.local_backup_count', 'hazelcast.imap.local_backup_entry_count', 'hazelcast.imap.local_backup_entry_memory_cost', @@ -223,28 +225,4 @@ 'hazelcast.member.used_metadata', 'hazelcast.member.used_native', 'hazelcast.member.write_queue_size', - 'jvm.buffer_pool.direct.capacity', - 'jvm.buffer_pool.direct.count', - 'jvm.buffer_pool.direct.used', - 'jvm.buffer_pool.mapped.capacity', - 'jvm.buffer_pool.mapped.count', - 'jvm.buffer_pool.mapped.used', - 'jvm.cpu_load.process', - 'jvm.cpu_load.system', - 'jvm.gc.cms.count', - 'jvm.gc.eden_size', - 'jvm.gc.old_gen_size', - 'jvm.gc.parnew.time', - 'jvm.gc.survivor_size', - 'jvm.heap_memory', - 'jvm.heap_memory_committed', - 'jvm.heap_memory_init', - 'jvm.heap_memory_max', - 'jvm.loaded_classes', - 'jvm.non_heap_memory', - 'jvm.non_heap_memory_committed', - 'jvm.non_heap_memory_init', - 'jvm.non_heap_memory_max', - 'jvm.os.open_file_descriptors', - 'jvm.thread_count', -) +] + JVM_E2E_METRICS diff --git a/ignite/tests/common.py b/ignite/tests/common.py index 796b1f39cc204..e72b6341b78b8 100644 --- a/ignite/tests/common.py +++ b/ignite/tests/common.py @@ -1,32 +1,9 @@ # (C) Datadog, Inc. 2020-present # All rights reserved # Licensed under Simplified BSD License (see LICENSE) +from datadog_checks.dev.jmx import JVM_E2E_METRICS GAUGES = [ - 'jvm.thread_count', - 'jvm.gc.survivor_size', - 'jvm.heap_memory_committed', - 'jvm.non_heap_memory_committed', - 'jvm.buffer_pool.direct.count', - 'jvm.cpu_load.process', - 'jvm.non_heap_memory_max', - 'jvm.gc.cms.count', - 'jvm.gc.eden_size', - 'jvm.heap_memory', - 'jvm.buffer_pool.mapped.count', - 'jvm.buffer_pool.mapped.capacity', - 'jvm.non_heap_memory_init', - 'jvm.buffer_pool.direct.capacity', - 'jvm.os.open_file_descriptors', - 'jvm.loaded_classes', - 'jvm.gc.parnew.time', - 'jvm.non_heap_memory', - 'jvm.buffer_pool.direct.used', - 'jvm.buffer_pool.mapped.used', - 'jvm.heap_memory_init', - 'jvm.gc.old_gen_size', - 'jvm.cpu_load.system', - 'jvm.heap_memory_max', 'ignite.cache.offheap_miss_percentage', 'ignite.jobs.wait_time.maximum', 'ignite.cache.size', @@ -176,7 +153,7 @@ 'ignite.jobs.waiting.average', 'ignite.checkpoint.last_copied_on_write_pages', 'ignite.wal.last_rollover', -] +] + JVM_E2E_METRICS COUNTS = [ "ignite.cache.commits", diff --git a/jboss_wildfly/tests/test_check.py b/jboss_wildfly/tests/test_check.py index 3a502dc99374f..c1d8a717be192 100644 --- a/jboss_wildfly/tests/test_check.py +++ b/jboss_wildfly/tests/test_check.py @@ -4,55 +4,40 @@ import pytest +from datadog_checks.dev.jmx import JVM_E2E_METRICS + @pytest.mark.e2e def test_e2e(dd_agent_check): instance = {} aggregator = dd_agent_check(instance) metrics = [ - 'jvm.non_heap_memory_max', + 'jboss.jdbc_connections.active', + 'jboss.jdbc_connections.count', + 'jboss.jdbc_connections.idle', + 'jboss.jdbc_connections.request_wait', + 'jboss.jdbc_preparedstatementcache.hit', + 'jboss.jdbc_preparedstatementcache.miss', 'jboss.jdbc_preparedstatementcache.size', - 'jvm.heap_memory_committed', - 'jvm.gc.eden_size', + 'jboss.jdbc_xacommit.count', 'jboss.jdbc_xarecover.count', + 'jboss.jdbc_xarollback.count', 'jboss.transactions.aborted', - 'jvm.heap_memory', - 'jboss.transactions.resource_rollbacks', - 'jboss.jdbc_xacommit.count', - 'jvm.loaded_classes', - 'jvm.gc.parnew.time', - 'jboss.transactions.timed_out', + 'jboss.transactions.application_rollbacks', + 'jboss.transactions.committed', + 'jboss.transactions.count', 'jboss.transactions.heuristics', - 'jboss.transactions.nested', - 'jboss.undertow_listener.request_count', - 'jboss.undertow_listener.error_count', - 'jboss.jdbc_connections.count', - 'jvm.cpu_load.system', - 'jvm.non_heap_memory_init', 'jboss.transactions.inflight', - 'jvm.thread_count', - 'jvm.os.open_file_descriptors', - 'jboss.jdbc_preparedstatementcache.hit', - 'jvm.non_heap_memory', + 'jboss.transactions.nested', + 'jboss.transactions.resource_rollbacks', 'jboss.transactions.system_rollbacks', + 'jboss.transactions.timed_out', 'jboss.undertow_listener.bytes_received', - 'jboss.jdbc_connections.idle', - 'jboss.undertow_listener.processing_time', - 'jboss.transactions.application_rollbacks', - 'jvm.cpu_load.process', 'jboss.undertow_listener.bytes_sent', - 'jboss.jdbc_xarollback.count', - 'jboss.transactions.committed', - 'jvm.gc.survivor_size', - 'jvm.non_heap_memory_committed', - 'jboss.jdbc_preparedstatementcache.miss', - 'jboss.jdbc_connections.active', - 'jboss.transactions.count', - 'jvm.heap_memory_init', - 'jvm.heap_memory_max', - 'jboss.jdbc_connections.request_wait', - 'jvm.gc.cms.count', - ] + 'jboss.undertow_listener.error_count', + 'jboss.undertow_listener.processing_time', + 'jboss.undertow_listener.request_count', + ] + JVM_E2E_METRICS for metric in metrics: aggregator.assert_metric(metric) diff --git a/kafka/tests/common.py b/kafka/tests/common.py index 99ab4b1d37012..50702a9f762c0 100644 --- a/kafka/tests/common.py +++ b/kafka/tests/common.py @@ -4,6 +4,7 @@ import socket from datadog_checks.dev import get_docker_hostname, get_here +from datadog_checks.dev.jmx import JVM_E2E_METRICS CHECK_NAME = "kafka" @@ -59,29 +60,4 @@ "kafka.session.zookeeper.expire.rate", "kafka.session.zookeeper.readonly.rate", "kafka.session.zookeeper.sync.rate", - # JVM metrics: - "jvm.buffer_pool.direct.capacity", - "jvm.buffer_pool.direct.count", - "jvm.buffer_pool.direct.used", - "jvm.buffer_pool.mapped.capacity", - "jvm.buffer_pool.mapped.count", - "jvm.buffer_pool.mapped.used", - "jvm.cpu_load.process", - "jvm.cpu_load.system", - "jvm.gc.cms.count", - "jvm.gc.eden_size", - "jvm.gc.old_gen_size", - "jvm.gc.parnew.time", - "jvm.gc.survivor_size", - "jvm.heap_memory", - "jvm.heap_memory_committed", - "jvm.heap_memory_init", - "jvm.heap_memory_max", - "jvm.loaded_classes", - "jvm.non_heap_memory", - "jvm.non_heap_memory_committed", - "jvm.non_heap_memory_init", - "jvm.non_heap_memory_max", - "jvm.os.open_file_descriptors", - "jvm.thread_count", -] +] + JVM_E2E_METRICS diff --git a/solr/tests/common.py b/solr/tests/common.py index a89fb9e7add45..c74fab2b81d83 100644 --- a/solr/tests/common.py +++ b/solr/tests/common.py @@ -11,35 +11,6 @@ SOLR_VERSION_RAW = os.environ['SOLR_VERSION'] SOLR_VERSION = version.parse(SOLR_VERSION_RAW) -JVM_METRICS = [ - "jvm.thread_count", - "jvm.gc.cms.count", - "jvm.gc.parnew.time", - "jvm.buffer_pool.mapped.count", - "jvm.buffer_pool.mapped.capacity", - "jvm.buffer_pool.mapped.used", - "jvm.gc.cms.count", - "jvm.gc.parnew.time", - "jvm.gc.survivor_size", - "jvm.gc.old_gen_size", - "jvm.buffer_pool.direct.count", - "jvm.buffer_pool.direct.capacity", - "jvm.buffer_pool.direct.used", - "jvm.os.open_file_descriptors", - "jvm.cpu_load.system", - "jvm.cpu_load.process", - "jvm.loaded_classes", - "jvm.gc.eden_size", - "jvm.heap_memory_init", - "jvm.heap_memory_committed", - "jvm.heap_memory_max", - "jvm.heap_memory", - "jvm.non_heap_memory_init", - "jvm.non_heap_memory_committed", - "jvm.non_heap_memory_max", - "jvm.non_heap_memory", -] - SOLR_COMMON_METRICS = [ "solr.search_handler.errors", "solr.search_handler.requests", diff --git a/solr/tests/test_check.py b/solr/tests/test_check.py index cf0d710393061..85ce71f93276a 100644 --- a/solr/tests/test_check.py +++ b/solr/tests/test_check.py @@ -5,9 +5,10 @@ import pytest from datadog_checks.base.stubs.aggregator import AggregatorStub +from datadog_checks.dev.jmx import JVM_E2E_METRICS from datadog_checks.dev.utils import get_metadata_metrics -from .common import JVM_METRICS, SOLR_METRICS +from .common import SOLR_METRICS @pytest.mark.e2e @@ -15,10 +16,10 @@ def test_e2e(dd_agent_check): instance = {} aggregator = dd_agent_check(instance, rate=True) # type: AggregatorStub - for metric in SOLR_METRICS + JVM_METRICS: + for metric in SOLR_METRICS + JVM_E2E_METRICS: aggregator.assert_metric(metric) aggregator.assert_all_metrics_covered() # TODO: At the moment, JMX reported metrics are NOT in-app metrics, hence we can't assert the type yet. - aggregator.assert_metrics_using_metadata(get_metadata_metrics(), check_metric_type=False, exclude=JVM_METRICS) + aggregator.assert_metrics_using_metadata(get_metadata_metrics(), check_metric_type=False, exclude=JVM_E2E_METRICS) diff --git a/tomcat/tests/common.py b/tomcat/tests/common.py index b7acd93713094..c43000ef9a448 100644 --- a/tomcat/tests/common.py +++ b/tomcat/tests/common.py @@ -2,6 +2,7 @@ # All rights reserved # Licensed under Simplified BSD License (see LICENSE) from datadog_checks.dev import get_here +from datadog_checks.dev.jmx import JVM_E2E_METRICS CHECK_NAME = "tomcat" @@ -28,29 +29,4 @@ "tomcat.string_cache.hit_count", "tomcat.web.cache.hit_count", "tomcat.web.cache.lookup_count", - # JVM - "jvm.buffer_pool.direct.capacity", - "jvm.buffer_pool.direct.count", - "jvm.buffer_pool.direct.used", - "jvm.buffer_pool.mapped.capacity", - "jvm.buffer_pool.mapped.count", - "jvm.buffer_pool.mapped.used", - "jvm.cpu_load.process", - "jvm.cpu_load.system", - "jvm.gc.cms.count", - "jvm.gc.eden_size", - "jvm.gc.old_gen_size", - "jvm.gc.parnew.time", - "jvm.gc.survivor_size", - "jvm.heap_memory", - "jvm.heap_memory_committed", - "jvm.heap_memory_init", - "jvm.heap_memory_max", - "jvm.loaded_classes", - "jvm.non_heap_memory", - "jvm.non_heap_memory_committed", - "jvm.non_heap_memory_init", - "jvm.non_heap_memory_max", - "jvm.os.open_file_descriptors", - "jvm.thread_count", -] +] + JVM_E2E_METRICS diff --git a/tomcat/tests/test_check.py b/tomcat/tests/test_check.py index 6accc550a2a94..e563debf0c704 100644 --- a/tomcat/tests/test_check.py +++ b/tomcat/tests/test_check.py @@ -4,37 +4,11 @@ import pytest +from datadog_checks.dev.jmx import JVM_E2E_METRICS from datadog_checks.dev.utils import get_metadata_metrics from .common import TOMCAT_E2E_METRICS -JVM_METRICS = [ - 'jvm.buffer_pool.direct.capacity', - 'jvm.buffer_pool.direct.count', - 'jvm.buffer_pool.direct.used', - 'jvm.buffer_pool.mapped.capacity', - 'jvm.buffer_pool.mapped.count', - 'jvm.buffer_pool.mapped.used', - 'jvm.cpu_load.process', - 'jvm.cpu_load.system', - 'jvm.gc.cms.count', - 'jvm.gc.eden_size', - 'jvm.gc.old_gen_size', - 'jvm.gc.parnew.time', - 'jvm.gc.survivor_size', - 'jvm.heap_memory_committed', - 'jvm.heap_memory_init', - 'jvm.heap_memory_max', - 'jvm.heap_memory', - 'jvm.loaded_classes', - 'jvm.non_heap_memory_committed', - 'jvm.non_heap_memory_init', - 'jvm.non_heap_memory_max', - 'jvm.non_heap_memory', - 'jvm.os.open_file_descriptors', - 'jvm.thread_count', -] - COUNTER_METRICS = [ # TODO: JMXFetch is not reporting in-app type for JMX `counter` type. # Remove this exclusion list when fixed. @@ -65,4 +39,4 @@ def test(dd_agent_check): aggregator.assert_all_metrics_covered() - aggregator.assert_metrics_using_metadata(get_metadata_metrics(), exclude=JVM_METRICS + COUNTER_METRICS) + aggregator.assert_metrics_using_metadata(get_metadata_metrics(), exclude=JVM_E2E_METRICS + COUNTER_METRICS)