def _test_check(elastic_check, instance, aggregator, cluster_tags, node_tags): config = from_instance(instance) es_version = elastic_check._get_es_version() # node stats, blacklist metrics that can't be tested in a small, single node instance blacklist = [ 'elasticsearch.indices.segments.index_writer_max_memory_in_bytes' ] blacklist.extend(ADDITIONAL_METRICS_1_x) for m_name in stats_for_version(es_version): if m_name in blacklist: continue aggregator.assert_metric(m_name, at_least=1, tags=node_tags) # cluster stats expected_metrics = health_stats_for_version(es_version) expected_metrics.update(CLUSTER_PENDING_TASKS) for m_name in expected_metrics: aggregator.assert_metric(m_name, at_least=1, tags=cluster_tags) aggregator.assert_service_check('elasticsearch.can_connect', status=ESCheck.OK, tags=config.service_check_tags) # Assert service metadata # self.assertServiceMetadata(['version'], count=3) # FIXME: 0.90.13 returns randomly a red status instead of yellow, # so we don't do a coverage test for it # Remove me when we stop supporting 0.90.x (not supported anymore by ES) if es_version != [0, 90, 13]: # Warning because elasticsearch status should be yellow, according to # http://chrissimpson.co.uk/elasticsearch-yellow-cluster-status-explained.html aggregator.assert_service_check('elasticsearch.cluster_health')
def test_disable_cluster_tag(dd_environment, instance, aggregator, new_cluster_tags): disable_instance = deepcopy(instance) disable_instance['disable_legacy_cluster_tag'] = True elastic_check = ESCheck('elastic', {}, instances=[disable_instance]) elastic_check.check(None) es_version = elastic_check._get_es_version() # cluster stats expected_metrics = health_stats_for_version(es_version) expected_metrics.update(CLUSTER_PENDING_TASKS) for m_name in expected_metrics: aggregator.assert_metric(m_name, at_least=1, tags=new_cluster_tags)
def test_health_stats_for_version(): # v0.90 metrics = health_stats_for_version([0, 90, 0]) assert len(metrics) == 8 # v0.90.5 metrics = health_stats_for_version([0, 90, 5]) assert len(metrics) == 8 # v0.90.10 metrics = health_stats_for_version([0, 90, 10]) assert len(metrics) == 8 # v1 metrics = health_stats_for_version([1, 0, 0]) assert len(metrics) == 8 # v1.3.0 metrics = health_stats_for_version([1, 3, 0]) assert len(metrics) == 8 # v1.4.0 metrics = health_stats_for_version([1, 4, 0]) assert len(metrics) == 8 # v1.5.0 metrics = health_stats_for_version([1, 5, 0]) assert len(metrics) == 8 # v1.6.0 metrics = health_stats_for_version([1, 6, 0]) assert len(metrics) == 8 # v2 metrics = health_stats_for_version([2, 0, 0]) assert len(metrics) == 8 # v2.1.0 metrics = health_stats_for_version([2, 1, 0]) assert len(metrics) == 8 # v5 metrics = health_stats_for_version([5, 0, 0]) assert len(metrics) == 9 # v6.3.0 metrics = health_stats_for_version([6, 3, 0]) assert len(metrics) == 9
def test_health_stats_for_version(version, expected_metric_count): metrics = health_stats_for_version(version) assert len(metrics) == expected_metric_count