Init commit
Copied source: https://github.com/braedon/prometheus-es-exporter
with last commit: 05c52723859bfcc2fa2f9614743ac3f9380f4f64
Related-bug: PROD-27906 (PROD:27906)
Change-Id: I264c92d794c4554303873231a72284a24f2c55b1
(cherry picked from commit a16d07eaa4db83da68a1dcb1f301913fa94cb9f7)
diff --git a/tests/__init__.py b/tests/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/__init__.py
diff --git a/tests/test_cluster_health_parser.py b/tests/test_cluster_health_parser.py
new file mode 100644
index 0000000..b5c4ddd
--- /dev/null
+++ b/tests/test_cluster_health_parser.py
@@ -0,0 +1,147 @@
+import unittest
+
+from prometheus_es_exporter.cluster_health_parser import parse_response
+from tests.utils import convert_result
+
+
+# Sample responses generated by querying the endpoint on a Elasticsearch
+# server populated with the following data (http command = Httpie utility):
+# > http -v POST localhost:9200/foo/bar/1 val:=1 group1=a group2=a
+# > http -v POST localhost:9200/foo/bar/2 val:=2 group1=a group2=b
+# > http -v POST localhost:9200/foo/bar/3 val:=3 group1=b group2=b
+class Test(unittest.TestCase):
+ maxDiff = None
+
+ def test_endpoint(self):
+ # Endpoint: /_cluster/health?pretty&level=shards
+ response = {
+ 'cluster_name': 'elasticsearch',
+ 'status': 'yellow',
+ 'timed_out': False,
+ 'number_of_nodes': 1,
+ 'number_of_data_nodes': 1,
+ 'active_primary_shards': 5,
+ 'active_shards': 5,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 5,
+ 'delayed_unassigned_shards': 0,
+ 'number_of_pending_tasks': 0,
+ 'number_of_in_flight_fetch': 0,
+ 'task_max_waiting_in_queue_millis': 0,
+ 'active_shards_percent_as_number': 50.0,
+ 'indices': {
+ 'foo': {
+ 'status': 'yellow',
+ 'number_of_shards': 5,
+ 'number_of_replicas': 1,
+ 'active_primary_shards': 5,
+ 'active_shards': 5,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 5,
+ 'shards': {
+ '0': {
+ 'status': 'yellow',
+ 'primary_active': True,
+ 'active_shards': 1,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 1
+ },
+ '1': {
+ 'status': 'yellow',
+ 'primary_active': True,
+ 'active_shards': 1,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 1
+ },
+ '2': {
+ 'status': 'yellow',
+ 'primary_active': True,
+ 'active_shards': 1,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 1
+ },
+ '3': {
+ 'status': 'yellow',
+ 'primary_active': True,
+ 'active_shards': 1,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 1
+ },
+ '4': {
+ 'status': 'yellow',
+ 'primary_active': True,
+ 'active_shards': 1,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 1
+ }
+ }
+ }
+ }
+ }
+
+ expected = {
+ 'status': 1,
+ 'number_of_nodes': 1,
+ 'number_of_data_nodes': 1,
+ 'active_primary_shards': 5,
+ 'active_shards': 5,
+ 'relocating_shards': 0,
+ 'initializing_shards': 0,
+ 'unassigned_shards': 5,
+ 'delayed_unassigned_shards': 0,
+ 'number_of_pending_tasks': 0,
+ 'number_of_in_flight_fetch': 0,
+ 'task_max_waiting_in_queue_millis': 0,
+ 'active_shards_percent_as_number': 50.0,
+ 'indices_status{index="foo"}': 1,
+ 'indices_number_of_shards{index="foo"}': 5,
+ 'indices_number_of_replicas{index="foo"}': 1,
+ 'indices_active_primary_shards{index="foo"}': 5,
+ 'indices_active_shards{index="foo"}': 5,
+ 'indices_relocating_shards{index="foo"}': 0,
+ 'indices_initializing_shards{index="foo"}': 0,
+ 'indices_unassigned_shards{index="foo"}': 5,
+ 'indices_shards_status{index="foo",shard="0"}': 1,
+ 'indices_shards_primary_active{index="foo",shard="0"}': 1,
+ 'indices_shards_active_shards{index="foo",shard="0"}': 1,
+ 'indices_shards_relocating_shards{index="foo",shard="0"}': 0,
+ 'indices_shards_initializing_shards{index="foo",shard="0"}': 0,
+ 'indices_shards_unassigned_shards{index="foo",shard="0"}': 1,
+ 'indices_shards_status{index="foo",shard="1"}': 1,
+ 'indices_shards_primary_active{index="foo",shard="1"}': 1,
+ 'indices_shards_active_shards{index="foo",shard="1"}': 1,
+ 'indices_shards_relocating_shards{index="foo",shard="1"}': 0,
+ 'indices_shards_initializing_shards{index="foo",shard="1"}': 0,
+ 'indices_shards_unassigned_shards{index="foo",shard="1"}': 1,
+ 'indices_shards_status{index="foo",shard="2"}': 1,
+ 'indices_shards_primary_active{index="foo",shard="2"}': 1,
+ 'indices_shards_active_shards{index="foo",shard="2"}': 1,
+ 'indices_shards_relocating_shards{index="foo",shard="2"}': 0,
+ 'indices_shards_initializing_shards{index="foo",shard="2"}': 0,
+ 'indices_shards_unassigned_shards{index="foo",shard="2"}': 1,
+ 'indices_shards_status{index="foo",shard="3"}': 1,
+ 'indices_shards_primary_active{index="foo",shard="3"}': 1,
+ 'indices_shards_active_shards{index="foo",shard="3"}': 1,
+ 'indices_shards_relocating_shards{index="foo",shard="3"}': 0,
+ 'indices_shards_initializing_shards{index="foo",shard="3"}': 0,
+ 'indices_shards_unassigned_shards{index="foo",shard="3"}': 1,
+ 'indices_shards_status{index="foo",shard="4"}': 1,
+ 'indices_shards_primary_active{index="foo",shard="4"}': 1,
+ 'indices_shards_active_shards{index="foo",shard="4"}': 1,
+ 'indices_shards_relocating_shards{index="foo",shard="4"}': 0,
+ 'indices_shards_initializing_shards{index="foo",shard="4"}': 0,
+ 'indices_shards_unassigned_shards{index="foo",shard="4"}': 1,
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/tests/test_indices_stats_parser.py b/tests/test_indices_stats_parser.py
new file mode 100644
index 0000000..ae41c62
--- /dev/null
+++ b/tests/test_indices_stats_parser.py
@@ -0,0 +1,883 @@
+import unittest
+
+from prometheus_es_exporter.indices_stats_parser import parse_response
+from tests.utils import convert_result
+
+
+# Sample responses generated by querying the endpoint on a Elasticsearch
+# server populated with the following data (http command = Httpie utility):
+# > http -v POST localhost:9200/foo/bar/1 val:=1 group1=a group2=a
+# > http -v POST localhost:9200/foo/bar/2 val:=2 group1=a group2=b
+# > http -v POST localhost:9200/foo/bar/3 val:=3 group1=b group2=b
+# Some details are instance specific, so mileage may vary!
+class Test(unittest.TestCase):
+ maxDiff = None
+
+ # Endpoint: /_stats?pretty
+ response = {
+ '_shards': {
+ 'total': 10,
+ 'successful': 5,
+ 'failed': 0
+ },
+ '_all': {
+ 'primaries': {
+ 'docs': {
+ 'count': 3,
+ 'deleted': 0
+ },
+ 'store': {
+ 'size_in_bytes': 12690,
+ 'throttle_time_in_millis': 0
+ },
+ 'indexing': {
+ 'index_total': 3,
+ 'index_time_in_millis': 45,
+ 'index_current': 0,
+ 'index_failed': 0,
+ 'delete_total': 0,
+ 'delete_time_in_millis': 0,
+ 'delete_current': 0,
+ 'noop_update_total': 0,
+ 'is_throttled': False,
+ 'throttle_time_in_millis': 0
+ },
+ 'get': {
+ 'total': 0,
+ 'time_in_millis': 0,
+ 'exists_total': 0,
+ 'exists_time_in_millis': 0,
+ 'missing_total': 0,
+ 'missing_time_in_millis': 0,
+ 'current': 0
+ },
+ 'search': {
+ 'open_contexts': 0,
+ 'query_total': 0,
+ 'query_time_in_millis': 0,
+ 'query_current': 0,
+ 'fetch_total': 0,
+ 'fetch_time_in_millis': 0,
+ 'fetch_current': 0,
+ 'scroll_total': 0,
+ 'scroll_time_in_millis': 0,
+ 'scroll_current': 0,
+ 'suggest_total': 0,
+ 'suggest_time_in_millis': 0,
+ 'suggest_current': 0
+ },
+ 'merges': {
+ 'current': 0,
+ 'current_docs': 0,
+ 'current_size_in_bytes': 0,
+ 'total': 0,
+ 'total_time_in_millis': 0,
+ 'total_docs': 0,
+ 'total_size_in_bytes': 0,
+ 'total_stopped_time_in_millis': 0,
+ 'total_throttled_time_in_millis': 0,
+ 'total_auto_throttle_in_bytes': 104857600
+ },
+ 'refresh': {
+ 'total': 3,
+ 'total_time_in_millis': 107
+ },
+ 'flush': {
+ 'total': 0,
+ 'total_time_in_millis': 0
+ },
+ 'warmer': {
+ 'current': 0,
+ 'total': 8,
+ 'total_time_in_millis': 6
+ },
+ 'query_cache': {
+ 'memory_size_in_bytes': 0,
+ 'total_count': 0,
+ 'hit_count': 0,
+ 'miss_count': 0,
+ 'cache_size': 0,
+ 'cache_count': 0,
+ 'evictions': 0
+ },
+ 'fielddata': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'fields': {
+ 'group1': {
+ 'memory_size_in_bytes': 1024
+ },
+ 'group2': {
+ 'memory_size_in_bytes': 2048
+ }
+ }
+ },
+ 'completion': {
+ 'size_in_bytes': 0
+ },
+ 'segments': {
+ 'count': 3,
+ 'memory_in_bytes': 7908,
+ 'terms_memory_in_bytes': 5976,
+ 'stored_fields_memory_in_bytes': 936,
+ 'term_vectors_memory_in_bytes': 0,
+ 'norms_memory_in_bytes': 576,
+ 'points_memory_in_bytes': 144,
+ 'doc_values_memory_in_bytes': 276,
+ 'index_writer_memory_in_bytes': 0,
+ 'version_map_memory_in_bytes': 0,
+ 'fixed_bit_set_memory_in_bytes': 0,
+ 'max_unsafe_auto_id_timestamp': -1,
+ 'file_sizes': {}
+ },
+ 'translog': {
+ 'operations': 3,
+ 'size_in_bytes': 491
+ },
+ 'request_cache': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'hit_count': 0,
+ 'miss_count': 0
+ },
+ 'recovery': {
+ 'current_as_source': 0,
+ 'current_as_target': 0,
+ 'throttle_time_in_millis': 0
+ }
+ },
+ 'total': {
+ 'docs': {
+ 'count': 3,
+ 'deleted': 0
+ },
+ 'store': {
+ 'size_in_bytes': 12690,
+ 'throttle_time_in_millis': 0
+ },
+ 'indexing': {
+ 'index_total': 3,
+ 'index_time_in_millis': 45,
+ 'index_current': 0,
+ 'index_failed': 0,
+ 'delete_total': 0,
+ 'delete_time_in_millis': 0,
+ 'delete_current': 0,
+ 'noop_update_total': 0,
+ 'is_throttled': False,
+ 'throttle_time_in_millis': 0
+ },
+ 'get': {
+ 'total': 0,
+ 'time_in_millis': 0,
+ 'exists_total': 0,
+ 'exists_time_in_millis': 0,
+ 'missing_total': 0,
+ 'missing_time_in_millis': 0,
+ 'current': 0
+ },
+ 'search': {
+ 'open_contexts': 0,
+ 'query_total': 0,
+ 'query_time_in_millis': 0,
+ 'query_current': 0,
+ 'fetch_total': 0,
+ 'fetch_time_in_millis': 0,
+ 'fetch_current': 0,
+ 'scroll_total': 0,
+ 'scroll_time_in_millis': 0,
+ 'scroll_current': 0,
+ 'suggest_total': 0,
+ 'suggest_time_in_millis': 0,
+ 'suggest_current': 0
+ },
+ 'merges': {
+ 'current': 0,
+ 'current_docs': 0,
+ 'current_size_in_bytes': 0,
+ 'total': 0,
+ 'total_time_in_millis': 0,
+ 'total_docs': 0,
+ 'total_size_in_bytes': 0,
+ 'total_stopped_time_in_millis': 0,
+ 'total_throttled_time_in_millis': 0,
+ 'total_auto_throttle_in_bytes': 104857600
+ },
+ 'refresh': {
+ 'total': 3,
+ 'total_time_in_millis': 107
+ },
+ 'flush': {
+ 'total': 0,
+ 'total_time_in_millis': 0
+ },
+ 'warmer': {
+ 'current': 0,
+ 'total': 8,
+ 'total_time_in_millis': 6
+ },
+ 'query_cache': {
+ 'memory_size_in_bytes': 0,
+ 'total_count': 0,
+ 'hit_count': 0,
+ 'miss_count': 0,
+ 'cache_size': 0,
+ 'cache_count': 0,
+ 'evictions': 0
+ },
+ 'fielddata': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'fields': {
+ 'group1': {
+ 'memory_size_in_bytes': 1024
+ },
+ 'group2': {
+ 'memory_size_in_bytes': 2048
+ }
+ }
+ },
+ 'completion': {
+ 'size_in_bytes': 0
+ },
+ 'segments': {
+ 'count': 3,
+ 'memory_in_bytes': 7908,
+ 'terms_memory_in_bytes': 5976,
+ 'stored_fields_memory_in_bytes': 936,
+ 'term_vectors_memory_in_bytes': 0,
+ 'norms_memory_in_bytes': 576,
+ 'points_memory_in_bytes': 144,
+ 'doc_values_memory_in_bytes': 276,
+ 'index_writer_memory_in_bytes': 0,
+ 'version_map_memory_in_bytes': 0,
+ 'fixed_bit_set_memory_in_bytes': 0,
+ 'max_unsafe_auto_id_timestamp': -1,
+ 'file_sizes': {}
+ },
+ 'translog': {
+ 'operations': 3,
+ 'size_in_bytes': 491
+ },
+ 'request_cache': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'hit_count': 0,
+ 'miss_count': 0
+ },
+ 'recovery': {
+ 'current_as_source': 0,
+ 'current_as_target': 0,
+ 'throttle_time_in_millis': 0
+ }
+ }
+ },
+ 'indices': {
+ 'foo': {
+ 'primaries': {
+ 'docs': {
+ 'count': 3,
+ 'deleted': 0
+ },
+ 'store': {
+ 'size_in_bytes': 12690,
+ 'throttle_time_in_millis': 0
+ },
+ 'indexing': {
+ 'index_total': 3,
+ 'index_time_in_millis': 45,
+ 'index_current': 0,
+ 'index_failed': 0,
+ 'delete_total': 0,
+ 'delete_time_in_millis': 0,
+ 'delete_current': 0,
+ 'noop_update_total': 0,
+ 'is_throttled': False,
+ 'throttle_time_in_millis': 0
+ },
+ 'get': {
+ 'total': 0,
+ 'time_in_millis': 0,
+ 'exists_total': 0,
+ 'exists_time_in_millis': 0,
+ 'missing_total': 0,
+ 'missing_time_in_millis': 0,
+ 'current': 0
+ },
+ 'search': {
+ 'open_contexts': 0,
+ 'query_total': 0,
+ 'query_time_in_millis': 0,
+ 'query_current': 0,
+ 'fetch_total': 0,
+ 'fetch_time_in_millis': 0,
+ 'fetch_current': 0,
+ 'scroll_total': 0,
+ 'scroll_time_in_millis': 0,
+ 'scroll_current': 0,
+ 'suggest_total': 0,
+ 'suggest_time_in_millis': 0,
+ 'suggest_current': 0
+ },
+ 'merges': {
+ 'current': 0,
+ 'current_docs': 0,
+ 'current_size_in_bytes': 0,
+ 'total': 0,
+ 'total_time_in_millis': 0,
+ 'total_docs': 0,
+ 'total_size_in_bytes': 0,
+ 'total_stopped_time_in_millis': 0,
+ 'total_throttled_time_in_millis': 0,
+ 'total_auto_throttle_in_bytes': 104857600
+ },
+ 'refresh': {
+ 'total': 3,
+ 'total_time_in_millis': 107
+ },
+ 'flush': {
+ 'total': 0,
+ 'total_time_in_millis': 0
+ },
+ 'warmer': {
+ 'current': 0,
+ 'total': 8,
+ 'total_time_in_millis': 6
+ },
+ 'query_cache': {
+ 'memory_size_in_bytes': 0,
+ 'total_count': 0,
+ 'hit_count': 0,
+ 'miss_count': 0,
+ 'cache_size': 0,
+ 'cache_count': 0,
+ 'evictions': 0
+ },
+ 'fielddata': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'fields': {
+ 'group1': {
+ 'memory_size_in_bytes': 1024
+ },
+ 'group2': {
+ 'memory_size_in_bytes': 2048
+ }
+ }
+ },
+ 'completion': {
+ 'size_in_bytes': 0
+ },
+ 'segments': {
+ 'count': 3,
+ 'memory_in_bytes': 7908,
+ 'terms_memory_in_bytes': 5976,
+ 'stored_fields_memory_in_bytes': 936,
+ 'term_vectors_memory_in_bytes': 0,
+ 'norms_memory_in_bytes': 576,
+ 'points_memory_in_bytes': 144,
+ 'doc_values_memory_in_bytes': 276,
+ 'index_writer_memory_in_bytes': 0,
+ 'version_map_memory_in_bytes': 0,
+ 'fixed_bit_set_memory_in_bytes': 0,
+ 'max_unsafe_auto_id_timestamp': -1,
+ 'file_sizes': {}
+ },
+ 'translog': {
+ 'operations': 3,
+ 'size_in_bytes': 491
+ },
+ 'request_cache': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'hit_count': 0,
+ 'miss_count': 0
+ },
+ 'recovery': {
+ 'current_as_source': 0,
+ 'current_as_target': 0,
+ 'throttle_time_in_millis': 0
+ }
+ },
+ 'total': {
+ 'docs': {
+ 'count': 3,
+ 'deleted': 0
+ },
+ 'store': {
+ 'size_in_bytes': 12690,
+ 'throttle_time_in_millis': 0
+ },
+ 'indexing': {
+ 'index_total': 3,
+ 'index_time_in_millis': 45,
+ 'index_current': 0,
+ 'index_failed': 0,
+ 'delete_total': 0,
+ 'delete_time_in_millis': 0,
+ 'delete_current': 0,
+ 'noop_update_total': 0,
+ 'is_throttled': False,
+ 'throttle_time_in_millis': 0
+ },
+ 'get': {
+ 'total': 0,
+ 'time_in_millis': 0,
+ 'exists_total': 0,
+ 'exists_time_in_millis': 0,
+ 'missing_total': 0,
+ 'missing_time_in_millis': 0,
+ 'current': 0
+ },
+ 'search': {
+ 'open_contexts': 0,
+ 'query_total': 0,
+ 'query_time_in_millis': 0,
+ 'query_current': 0,
+ 'fetch_total': 0,
+ 'fetch_time_in_millis': 0,
+ 'fetch_current': 0,
+ 'scroll_total': 0,
+ 'scroll_time_in_millis': 0,
+ 'scroll_current': 0,
+ 'suggest_total': 0,
+ 'suggest_time_in_millis': 0,
+ 'suggest_current': 0
+ },
+ 'merges': {
+ 'current': 0,
+ 'current_docs': 0,
+ 'current_size_in_bytes': 0,
+ 'total': 0,
+ 'total_time_in_millis': 0,
+ 'total_docs': 0,
+ 'total_size_in_bytes': 0,
+ 'total_stopped_time_in_millis': 0,
+ 'total_throttled_time_in_millis': 0,
+ 'total_auto_throttle_in_bytes': 104857600
+ },
+ 'refresh': {
+ 'total': 3,
+ 'total_time_in_millis': 107
+ },
+ 'flush': {
+ 'total': 0,
+ 'total_time_in_millis': 0
+ },
+ 'warmer': {
+ 'current': 0,
+ 'total': 8,
+ 'total_time_in_millis': 6
+ },
+ 'query_cache': {
+ 'memory_size_in_bytes': 0,
+ 'total_count': 0,
+ 'hit_count': 0,
+ 'miss_count': 0,
+ 'cache_size': 0,
+ 'cache_count': 0,
+ 'evictions': 0
+ },
+ 'fielddata': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'fields': {
+ 'group1': {
+ 'memory_size_in_bytes': 1024
+ },
+ 'group2': {
+ 'memory_size_in_bytes': 2048
+ }
+ }
+ },
+ 'completion': {
+ 'size_in_bytes': 0
+ },
+ 'segments': {
+ 'count': 3,
+ 'memory_in_bytes': 7908,
+ 'terms_memory_in_bytes': 5976,
+ 'stored_fields_memory_in_bytes': 936,
+ 'term_vectors_memory_in_bytes': 0,
+ 'norms_memory_in_bytes': 576,
+ 'points_memory_in_bytes': 144,
+ 'doc_values_memory_in_bytes': 276,
+ 'index_writer_memory_in_bytes': 0,
+ 'version_map_memory_in_bytes': 0,
+ 'fixed_bit_set_memory_in_bytes': 0,
+ 'max_unsafe_auto_id_timestamp': -1,
+ 'file_sizes': {}
+ },
+ 'translog': {
+ 'operations': 3,
+ 'size_in_bytes': 491
+ },
+ 'request_cache': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'hit_count': 0,
+ 'miss_count': 0
+ },
+ 'recovery': {
+ 'current_as_source': 0,
+ 'current_as_target': 0,
+ 'throttle_time_in_millis': 0
+ }
+ }
+ }
+ }
+ }
+
+ def test_endpoint_cluster(self):
+
+ expected = {
+ 'primaries_docs_count{index="_all"}': 3,
+ 'primaries_docs_deleted{index="_all"}': 0,
+ 'primaries_store_size_in_bytes{index="_all"}': 12690,
+ 'primaries_store_throttle_time_in_millis{index="_all"}': 0,
+ 'primaries_indexing_index_total{index="_all"}': 3,
+ 'primaries_indexing_index_time_in_millis{index="_all"}': 45,
+ 'primaries_indexing_index_current{index="_all"}': 0,
+ 'primaries_indexing_index_failed{index="_all"}': 0,
+ 'primaries_indexing_delete_total{index="_all"}': 0,
+ 'primaries_indexing_delete_time_in_millis{index="_all"}': 0,
+ 'primaries_indexing_delete_current{index="_all"}': 0,
+ 'primaries_indexing_noop_update_total{index="_all"}': 0,
+ 'primaries_indexing_is_throttled{index="_all"}': 0,
+ 'primaries_indexing_throttle_time_in_millis{index="_all"}': 0,
+ 'primaries_get_total{index="_all"}': 0,
+ 'primaries_get_time_in_millis{index="_all"}': 0,
+ 'primaries_get_exists_total{index="_all"}': 0,
+ 'primaries_get_exists_time_in_millis{index="_all"}': 0,
+ 'primaries_get_missing_total{index="_all"}': 0,
+ 'primaries_get_missing_time_in_millis{index="_all"}': 0,
+ 'primaries_get_current{index="_all"}': 0,
+ 'primaries_search_open_contexts{index="_all"}': 0,
+ 'primaries_search_query_total{index="_all"}': 0,
+ 'primaries_search_query_time_in_millis{index="_all"}': 0,
+ 'primaries_search_query_current{index="_all"}': 0,
+ 'primaries_search_fetch_total{index="_all"}': 0,
+ 'primaries_search_fetch_time_in_millis{index="_all"}': 0,
+ 'primaries_search_fetch_current{index="_all"}': 0,
+ 'primaries_search_scroll_total{index="_all"}': 0,
+ 'primaries_search_scroll_time_in_millis{index="_all"}': 0,
+ 'primaries_search_scroll_current{index="_all"}': 0,
+ 'primaries_search_suggest_total{index="_all"}': 0,
+ 'primaries_search_suggest_time_in_millis{index="_all"}': 0,
+ 'primaries_search_suggest_current{index="_all"}': 0,
+ 'primaries_merges_current{index="_all"}': 0,
+ 'primaries_merges_current_docs{index="_all"}': 0,
+ 'primaries_merges_current_size_in_bytes{index="_all"}': 0,
+ 'primaries_merges_total{index="_all"}': 0,
+ 'primaries_merges_total_time_in_millis{index="_all"}': 0,
+ 'primaries_merges_total_docs{index="_all"}': 0,
+ 'primaries_merges_total_size_in_bytes{index="_all"}': 0,
+ 'primaries_merges_total_stopped_time_in_millis{index="_all"}': 0,
+ 'primaries_merges_total_throttled_time_in_millis{index="_all"}': 0,
+ 'primaries_merges_total_auto_throttle_in_bytes{index="_all"}': 104857600,
+ 'primaries_refresh_total{index="_all"}': 3,
+ 'primaries_refresh_total_time_in_millis{index="_all"}': 107,
+ 'primaries_flush_total{index="_all"}': 0,
+ 'primaries_flush_total_time_in_millis{index="_all"}': 0,
+ 'primaries_warmer_current{index="_all"}': 0,
+ 'primaries_warmer_total{index="_all"}': 8,
+ 'primaries_warmer_total_time_in_millis{index="_all"}': 6,
+ 'primaries_query_cache_memory_size_in_bytes{index="_all"}': 0,
+ 'primaries_query_cache_total_count{index="_all"}': 0,
+ 'primaries_query_cache_hit_count{index="_all"}': 0,
+ 'primaries_query_cache_miss_count{index="_all"}': 0,
+ 'primaries_query_cache_cache_size{index="_all"}': 0,
+ 'primaries_query_cache_cache_count{index="_all"}': 0,
+ 'primaries_query_cache_evictions{index="_all"}': 0,
+ 'primaries_fielddata_memory_size_in_bytes{index="_all"}': 0,
+ 'primaries_fielddata_evictions{index="_all"}': 0,
+ 'primaries_fielddata_fields_memory_size_in_bytes{index="_all",field="group1"}': 1024,
+ 'primaries_fielddata_fields_memory_size_in_bytes{index="_all",field="group2"}': 2048,
+ 'primaries_completion_size_in_bytes{index="_all"}': 0,
+ 'primaries_segments_count{index="_all"}': 3,
+ 'primaries_segments_memory_in_bytes{index="_all"}': 7908,
+ 'primaries_segments_terms_memory_in_bytes{index="_all"}': 5976,
+ 'primaries_segments_stored_fields_memory_in_bytes{index="_all"}': 936,
+ 'primaries_segments_term_vectors_memory_in_bytes{index="_all"}': 0,
+ 'primaries_segments_norms_memory_in_bytes{index="_all"}': 576,
+ 'primaries_segments_points_memory_in_bytes{index="_all"}': 144,
+ 'primaries_segments_doc_values_memory_in_bytes{index="_all"}': 276,
+ 'primaries_segments_index_writer_memory_in_bytes{index="_all"}': 0,
+ 'primaries_segments_version_map_memory_in_bytes{index="_all"}': 0,
+ 'primaries_segments_fixed_bit_set_memory_in_bytes{index="_all"}': 0,
+ 'primaries_segments_max_unsafe_auto_id_timestamp{index="_all"}': -1,
+ 'primaries_translog_operations{index="_all"}': 3,
+ 'primaries_translog_size_in_bytes{index="_all"}': 491,
+ 'primaries_request_cache_memory_size_in_bytes{index="_all"}': 0,
+ 'primaries_request_cache_evictions{index="_all"}': 0,
+ 'primaries_request_cache_hit_count{index="_all"}': 0,
+ 'primaries_request_cache_miss_count{index="_all"}': 0,
+ 'primaries_recovery_current_as_source{index="_all"}': 0,
+ 'primaries_recovery_current_as_target{index="_all"}': 0,
+ 'primaries_recovery_throttle_time_in_millis{index="_all"}': 0,
+ 'total_docs_count{index="_all"}': 3,
+ 'total_docs_deleted{index="_all"}': 0,
+ 'total_store_size_in_bytes{index="_all"}': 12690,
+ 'total_store_throttle_time_in_millis{index="_all"}': 0,
+ 'total_indexing_index_total{index="_all"}': 3,
+ 'total_indexing_index_time_in_millis{index="_all"}': 45,
+ 'total_indexing_index_current{index="_all"}': 0,
+ 'total_indexing_index_failed{index="_all"}': 0,
+ 'total_indexing_delete_total{index="_all"}': 0,
+ 'total_indexing_delete_time_in_millis{index="_all"}': 0,
+ 'total_indexing_delete_current{index="_all"}': 0,
+ 'total_indexing_noop_update_total{index="_all"}': 0,
+ 'total_indexing_is_throttled{index="_all"}': 0,
+ 'total_indexing_throttle_time_in_millis{index="_all"}': 0,
+ 'total_get_total{index="_all"}': 0,
+ 'total_get_time_in_millis{index="_all"}': 0,
+ 'total_get_exists_total{index="_all"}': 0,
+ 'total_get_exists_time_in_millis{index="_all"}': 0,
+ 'total_get_missing_total{index="_all"}': 0,
+ 'total_get_missing_time_in_millis{index="_all"}': 0,
+ 'total_get_current{index="_all"}': 0,
+ 'total_search_open_contexts{index="_all"}': 0,
+ 'total_search_query_total{index="_all"}': 0,
+ 'total_search_query_time_in_millis{index="_all"}': 0,
+ 'total_search_query_current{index="_all"}': 0,
+ 'total_search_fetch_total{index="_all"}': 0,
+ 'total_search_fetch_time_in_millis{index="_all"}': 0,
+ 'total_search_fetch_current{index="_all"}': 0,
+ 'total_search_scroll_total{index="_all"}': 0,
+ 'total_search_scroll_time_in_millis{index="_all"}': 0,
+ 'total_search_scroll_current{index="_all"}': 0,
+ 'total_search_suggest_total{index="_all"}': 0,
+ 'total_search_suggest_time_in_millis{index="_all"}': 0,
+ 'total_search_suggest_current{index="_all"}': 0,
+ 'total_merges_current{index="_all"}': 0,
+ 'total_merges_current_docs{index="_all"}': 0,
+ 'total_merges_current_size_in_bytes{index="_all"}': 0,
+ 'total_merges_total{index="_all"}': 0,
+ 'total_merges_total_time_in_millis{index="_all"}': 0,
+ 'total_merges_total_docs{index="_all"}': 0,
+ 'total_merges_total_size_in_bytes{index="_all"}': 0,
+ 'total_merges_total_stopped_time_in_millis{index="_all"}': 0,
+ 'total_merges_total_throttled_time_in_millis{index="_all"}': 0,
+ 'total_merges_total_auto_throttle_in_bytes{index="_all"}': 104857600,
+ 'total_refresh_total{index="_all"}': 3,
+ 'total_refresh_total_time_in_millis{index="_all"}': 107,
+ 'total_flush_total{index="_all"}': 0,
+ 'total_flush_total_time_in_millis{index="_all"}': 0,
+ 'total_warmer_current{index="_all"}': 0,
+ 'total_warmer_total{index="_all"}': 8,
+ 'total_warmer_total_time_in_millis{index="_all"}': 6,
+ 'total_query_cache_memory_size_in_bytes{index="_all"}': 0,
+ 'total_query_cache_total_count{index="_all"}': 0,
+ 'total_query_cache_hit_count{index="_all"}': 0,
+ 'total_query_cache_miss_count{index="_all"}': 0,
+ 'total_query_cache_cache_size{index="_all"}': 0,
+ 'total_query_cache_cache_count{index="_all"}': 0,
+ 'total_query_cache_evictions{index="_all"}': 0,
+ 'total_fielddata_memory_size_in_bytes{index="_all"}': 0,
+ 'total_fielddata_evictions{index="_all"}': 0,
+ 'total_fielddata_fields_memory_size_in_bytes{index="_all",field="group1"}': 1024,
+ 'total_fielddata_fields_memory_size_in_bytes{index="_all",field="group2"}': 2048,
+ 'total_completion_size_in_bytes{index="_all"}': 0,
+ 'total_segments_count{index="_all"}': 3,
+ 'total_segments_memory_in_bytes{index="_all"}': 7908,
+ 'total_segments_terms_memory_in_bytes{index="_all"}': 5976,
+ 'total_segments_stored_fields_memory_in_bytes{index="_all"}': 936,
+ 'total_segments_term_vectors_memory_in_bytes{index="_all"}': 0,
+ 'total_segments_norms_memory_in_bytes{index="_all"}': 576,
+ 'total_segments_points_memory_in_bytes{index="_all"}': 144,
+ 'total_segments_doc_values_memory_in_bytes{index="_all"}': 276,
+ 'total_segments_index_writer_memory_in_bytes{index="_all"}': 0,
+ 'total_segments_version_map_memory_in_bytes{index="_all"}': 0,
+ 'total_segments_fixed_bit_set_memory_in_bytes{index="_all"}': 0,
+ 'total_segments_max_unsafe_auto_id_timestamp{index="_all"}': -1,
+ 'total_translog_operations{index="_all"}': 3,
+ 'total_translog_size_in_bytes{index="_all"}': 491,
+ 'total_request_cache_memory_size_in_bytes{index="_all"}': 0,
+ 'total_request_cache_evictions{index="_all"}': 0,
+ 'total_request_cache_hit_count{index="_all"}': 0,
+ 'total_request_cache_miss_count{index="_all"}': 0,
+ 'total_recovery_current_as_source{index="_all"}': 0,
+ 'total_recovery_current_as_target{index="_all"}': 0,
+ 'total_recovery_throttle_time_in_millis{index="_all"}': 0,
+ }
+ result = convert_result(parse_response(self.response, parse_indices=False))
+ self.assertEqual(expected, result)
+
+ def test_endpoint_indices(self):
+
+ expected = {
+ 'primaries_docs_count{index="foo"}': 3,
+ 'primaries_docs_deleted{index="foo"}': 0,
+ 'primaries_store_size_in_bytes{index="foo"}': 12690,
+ 'primaries_store_throttle_time_in_millis{index="foo"}': 0,
+ 'primaries_indexing_index_total{index="foo"}': 3,
+ 'primaries_indexing_index_time_in_millis{index="foo"}': 45,
+ 'primaries_indexing_index_current{index="foo"}': 0,
+ 'primaries_indexing_index_failed{index="foo"}': 0,
+ 'primaries_indexing_delete_total{index="foo"}': 0,
+ 'primaries_indexing_delete_time_in_millis{index="foo"}': 0,
+ 'primaries_indexing_delete_current{index="foo"}': 0,
+ 'primaries_indexing_noop_update_total{index="foo"}': 0,
+ 'primaries_indexing_is_throttled{index="foo"}': 0,
+ 'primaries_indexing_throttle_time_in_millis{index="foo"}': 0,
+ 'primaries_get_total{index="foo"}': 0,
+ 'primaries_get_time_in_millis{index="foo"}': 0,
+ 'primaries_get_exists_total{index="foo"}': 0,
+ 'primaries_get_exists_time_in_millis{index="foo"}': 0,
+ 'primaries_get_missing_total{index="foo"}': 0,
+ 'primaries_get_missing_time_in_millis{index="foo"}': 0,
+ 'primaries_get_current{index="foo"}': 0,
+ 'primaries_search_open_contexts{index="foo"}': 0,
+ 'primaries_search_query_total{index="foo"}': 0,
+ 'primaries_search_query_time_in_millis{index="foo"}': 0,
+ 'primaries_search_query_current{index="foo"}': 0,
+ 'primaries_search_fetch_total{index="foo"}': 0,
+ 'primaries_search_fetch_time_in_millis{index="foo"}': 0,
+ 'primaries_search_fetch_current{index="foo"}': 0,
+ 'primaries_search_scroll_total{index="foo"}': 0,
+ 'primaries_search_scroll_time_in_millis{index="foo"}': 0,
+ 'primaries_search_scroll_current{index="foo"}': 0,
+ 'primaries_search_suggest_total{index="foo"}': 0,
+ 'primaries_search_suggest_time_in_millis{index="foo"}': 0,
+ 'primaries_search_suggest_current{index="foo"}': 0,
+ 'primaries_merges_current{index="foo"}': 0,
+ 'primaries_merges_current_docs{index="foo"}': 0,
+ 'primaries_merges_current_size_in_bytes{index="foo"}': 0,
+ 'primaries_merges_total{index="foo"}': 0,
+ 'primaries_merges_total_time_in_millis{index="foo"}': 0,
+ 'primaries_merges_total_docs{index="foo"}': 0,
+ 'primaries_merges_total_size_in_bytes{index="foo"}': 0,
+ 'primaries_merges_total_stopped_time_in_millis{index="foo"}': 0,
+ 'primaries_merges_total_throttled_time_in_millis{index="foo"}': 0,
+ 'primaries_merges_total_auto_throttle_in_bytes{index="foo"}': 104857600,
+ 'primaries_refresh_total{index="foo"}': 3,
+ 'primaries_refresh_total_time_in_millis{index="foo"}': 107,
+ 'primaries_flush_total{index="foo"}': 0,
+ 'primaries_flush_total_time_in_millis{index="foo"}': 0,
+ 'primaries_warmer_current{index="foo"}': 0,
+ 'primaries_warmer_total{index="foo"}': 8,
+ 'primaries_warmer_total_time_in_millis{index="foo"}': 6,
+ 'primaries_query_cache_memory_size_in_bytes{index="foo"}': 0,
+ 'primaries_query_cache_total_count{index="foo"}': 0,
+ 'primaries_query_cache_hit_count{index="foo"}': 0,
+ 'primaries_query_cache_miss_count{index="foo"}': 0,
+ 'primaries_query_cache_cache_size{index="foo"}': 0,
+ 'primaries_query_cache_cache_count{index="foo"}': 0,
+ 'primaries_query_cache_evictions{index="foo"}': 0,
+ 'primaries_fielddata_memory_size_in_bytes{index="foo"}': 0,
+ 'primaries_fielddata_evictions{index="foo"}': 0,
+ 'primaries_fielddata_fields_memory_size_in_bytes{index="foo",field="group1"}': 1024,
+ 'primaries_fielddata_fields_memory_size_in_bytes{index="foo",field="group2"}': 2048,
+ 'primaries_completion_size_in_bytes{index="foo"}': 0,
+ 'primaries_segments_count{index="foo"}': 3,
+ 'primaries_segments_memory_in_bytes{index="foo"}': 7908,
+ 'primaries_segments_terms_memory_in_bytes{index="foo"}': 5976,
+ 'primaries_segments_stored_fields_memory_in_bytes{index="foo"}': 936,
+ 'primaries_segments_term_vectors_memory_in_bytes{index="foo"}': 0,
+ 'primaries_segments_norms_memory_in_bytes{index="foo"}': 576,
+ 'primaries_segments_points_memory_in_bytes{index="foo"}': 144,
+ 'primaries_segments_doc_values_memory_in_bytes{index="foo"}': 276,
+ 'primaries_segments_index_writer_memory_in_bytes{index="foo"}': 0,
+ 'primaries_segments_version_map_memory_in_bytes{index="foo"}': 0,
+ 'primaries_segments_fixed_bit_set_memory_in_bytes{index="foo"}': 0,
+ 'primaries_segments_max_unsafe_auto_id_timestamp{index="foo"}': -1,
+ 'primaries_translog_operations{index="foo"}': 3,
+ 'primaries_translog_size_in_bytes{index="foo"}': 491,
+ 'primaries_request_cache_memory_size_in_bytes{index="foo"}': 0,
+ 'primaries_request_cache_evictions{index="foo"}': 0,
+ 'primaries_request_cache_hit_count{index="foo"}': 0,
+ 'primaries_request_cache_miss_count{index="foo"}': 0,
+ 'primaries_recovery_current_as_source{index="foo"}': 0,
+ 'primaries_recovery_current_as_target{index="foo"}': 0,
+ 'primaries_recovery_throttle_time_in_millis{index="foo"}': 0,
+ 'total_docs_count{index="foo"}': 3,
+ 'total_docs_deleted{index="foo"}': 0,
+ 'total_store_size_in_bytes{index="foo"}': 12690,
+ 'total_store_throttle_time_in_millis{index="foo"}': 0,
+ 'total_indexing_index_total{index="foo"}': 3,
+ 'total_indexing_index_time_in_millis{index="foo"}': 45,
+ 'total_indexing_index_current{index="foo"}': 0,
+ 'total_indexing_index_failed{index="foo"}': 0,
+ 'total_indexing_delete_total{index="foo"}': 0,
+ 'total_indexing_delete_time_in_millis{index="foo"}': 0,
+ 'total_indexing_delete_current{index="foo"}': 0,
+ 'total_indexing_noop_update_total{index="foo"}': 0,
+ 'total_indexing_is_throttled{index="foo"}': 0,
+ 'total_indexing_throttle_time_in_millis{index="foo"}': 0,
+ 'total_get_total{index="foo"}': 0,
+ 'total_get_time_in_millis{index="foo"}': 0,
+ 'total_get_exists_total{index="foo"}': 0,
+ 'total_get_exists_time_in_millis{index="foo"}': 0,
+ 'total_get_missing_total{index="foo"}': 0,
+ 'total_get_missing_time_in_millis{index="foo"}': 0,
+ 'total_get_current{index="foo"}': 0,
+ 'total_search_open_contexts{index="foo"}': 0,
+ 'total_search_query_total{index="foo"}': 0,
+ 'total_search_query_time_in_millis{index="foo"}': 0,
+ 'total_search_query_current{index="foo"}': 0,
+ 'total_search_fetch_total{index="foo"}': 0,
+ 'total_search_fetch_time_in_millis{index="foo"}': 0,
+ 'total_search_fetch_current{index="foo"}': 0,
+ 'total_search_scroll_total{index="foo"}': 0,
+ 'total_search_scroll_time_in_millis{index="foo"}': 0,
+ 'total_search_scroll_current{index="foo"}': 0,
+ 'total_search_suggest_total{index="foo"}': 0,
+ 'total_search_suggest_time_in_millis{index="foo"}': 0,
+ 'total_search_suggest_current{index="foo"}': 0,
+ 'total_merges_current{index="foo"}': 0,
+ 'total_merges_current_docs{index="foo"}': 0,
+ 'total_merges_current_size_in_bytes{index="foo"}': 0,
+ 'total_merges_total{index="foo"}': 0,
+ 'total_merges_total_time_in_millis{index="foo"}': 0,
+ 'total_merges_total_docs{index="foo"}': 0,
+ 'total_merges_total_size_in_bytes{index="foo"}': 0,
+ 'total_merges_total_stopped_time_in_millis{index="foo"}': 0,
+ 'total_merges_total_throttled_time_in_millis{index="foo"}': 0,
+ 'total_merges_total_auto_throttle_in_bytes{index="foo"}': 104857600,
+ 'total_refresh_total{index="foo"}': 3,
+ 'total_refresh_total_time_in_millis{index="foo"}': 107,
+ 'total_flush_total{index="foo"}': 0,
+ 'total_flush_total_time_in_millis{index="foo"}': 0,
+ 'total_warmer_current{index="foo"}': 0,
+ 'total_warmer_total{index="foo"}': 8,
+ 'total_warmer_total_time_in_millis{index="foo"}': 6,
+ 'total_query_cache_memory_size_in_bytes{index="foo"}': 0,
+ 'total_query_cache_total_count{index="foo"}': 0,
+ 'total_query_cache_hit_count{index="foo"}': 0,
+ 'total_query_cache_miss_count{index="foo"}': 0,
+ 'total_query_cache_cache_size{index="foo"}': 0,
+ 'total_query_cache_cache_count{index="foo"}': 0,
+ 'total_query_cache_evictions{index="foo"}': 0,
+ 'total_fielddata_memory_size_in_bytes{index="foo"}': 0,
+ 'total_fielddata_evictions{index="foo"}': 0,
+ 'total_fielddata_fields_memory_size_in_bytes{index="foo",field="group1"}': 1024,
+ 'total_fielddata_fields_memory_size_in_bytes{index="foo",field="group2"}': 2048,
+ 'total_completion_size_in_bytes{index="foo"}': 0,
+ 'total_segments_count{index="foo"}': 3,
+ 'total_segments_memory_in_bytes{index="foo"}': 7908,
+ 'total_segments_terms_memory_in_bytes{index="foo"}': 5976,
+ 'total_segments_stored_fields_memory_in_bytes{index="foo"}': 936,
+ 'total_segments_term_vectors_memory_in_bytes{index="foo"}': 0,
+ 'total_segments_norms_memory_in_bytes{index="foo"}': 576,
+ 'total_segments_points_memory_in_bytes{index="foo"}': 144,
+ 'total_segments_doc_values_memory_in_bytes{index="foo"}': 276,
+ 'total_segments_index_writer_memory_in_bytes{index="foo"}': 0,
+ 'total_segments_version_map_memory_in_bytes{index="foo"}': 0,
+ 'total_segments_fixed_bit_set_memory_in_bytes{index="foo"}': 0,
+ 'total_segments_max_unsafe_auto_id_timestamp{index="foo"}': -1,
+ 'total_translog_operations{index="foo"}': 3,
+ 'total_translog_size_in_bytes{index="foo"}': 491,
+ 'total_request_cache_memory_size_in_bytes{index="foo"}': 0,
+ 'total_request_cache_evictions{index="foo"}': 0,
+ 'total_request_cache_hit_count{index="foo"}': 0,
+ 'total_request_cache_miss_count{index="foo"}': 0,
+ 'total_recovery_current_as_source{index="foo"}': 0,
+ 'total_recovery_current_as_target{index="foo"}': 0,
+ 'total_recovery_throttle_time_in_millis{index="foo"}': 0,
+ }
+ result = convert_result(parse_response(self.response, parse_indices=True))
+ self.assertEqual(expected, result)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/tests/test_nodes_stats_parser.py b/tests/test_nodes_stats_parser.py
new file mode 100644
index 0000000..3432b7c
--- /dev/null
+++ b/tests/test_nodes_stats_parser.py
@@ -0,0 +1,748 @@
+import unittest
+
+from prometheus_es_exporter.nodes_stats_parser import parse_response
+from tests.utils import convert_result
+
+
+# Sample responses generated by querying the endpoint on a Elasticsearch
+# server populated with the following data (http command = Httpie utility):
+# > http -v POST localhost:9200/foo/bar/1 val:=1 group1=a group2=a
+# > http -v POST localhost:9200/foo/bar/2 val:=2 group1=a group2=b
+# > http -v POST localhost:9200/foo/bar/3 val:=3 group1=b group2=b
+# Some details are instance specific, so mileage may vary!
+class Test(unittest.TestCase):
+ maxDiff = None
+
+ def test_endpoint(self):
+ # Endpoint: /_nodes/stats?pretty
+ response = {
+ '_nodes': {
+ 'total': 1,
+ 'successful': 1,
+ 'failed': 0
+ },
+ 'cluster_name': 'elasticsearch',
+ 'nodes': {
+ 'bRcKq5zUTAuwNf4qvnXzIQ': {
+ 'timestamp': 1484861642281,
+ 'name': 'bRcKq5z',
+ 'transport_address': '127.0.0.1:9300',
+ 'host': '127.0.0.1',
+ 'ip': '127.0.0.1:9300',
+ 'roles': [
+ 'master',
+ 'data',
+ 'ingest'
+ ],
+ 'indices': {
+ 'docs': {
+ 'count': 3,
+ 'deleted': 0
+ },
+ 'store': {
+ 'size_in_bytes': 12972,
+ 'throttle_time_in_millis': 0
+ },
+ 'indexing': {
+ 'index_total': 3,
+ 'index_time_in_millis': 95,
+ 'index_current': 0,
+ 'index_failed': 0,
+ 'delete_total': 0,
+ 'delete_time_in_millis': 0,
+ 'delete_current': 0,
+ 'noop_update_total': 0,
+ 'is_throttled': False,
+ 'throttle_time_in_millis': 0
+ },
+ 'get': {
+ 'total': 0,
+ 'time_in_millis': 0,
+ 'exists_total': 0,
+ 'exists_time_in_millis': 0,
+ 'missing_total': 0,
+ 'missing_time_in_millis': 0,
+ 'current': 0
+ },
+ 'search': {
+ 'open_contexts': 0,
+ 'query_total': 0,
+ 'query_time_in_millis': 0,
+ 'query_current': 0,
+ 'fetch_total': 0,
+ 'fetch_time_in_millis': 0,
+ 'fetch_current': 0,
+ 'scroll_total': 0,
+ 'scroll_time_in_millis': 0,
+ 'scroll_current': 0,
+ 'suggest_total': 0,
+ 'suggest_time_in_millis': 0,
+ 'suggest_current': 0
+ },
+ 'merges': {
+ 'current': 0,
+ 'current_docs': 0,
+ 'current_size_in_bytes': 0,
+ 'total': 0,
+ 'total_time_in_millis': 0,
+ 'total_docs': 0,
+ 'total_size_in_bytes': 0,
+ 'total_stopped_time_in_millis': 0,
+ 'total_throttled_time_in_millis': 0,
+ 'total_auto_throttle_in_bytes': 104857600
+ },
+ 'refresh': {
+ 'total': 6,
+ 'total_time_in_millis': 304
+ },
+ 'flush': {
+ 'total': 3,
+ 'total_time_in_millis': 72
+ },
+ 'warmer': {
+ 'current': 0,
+ 'total': 14,
+ 'total_time_in_millis': 19
+ },
+ 'query_cache': {
+ 'memory_size_in_bytes': 0,
+ 'total_count': 0,
+ 'hit_count': 0,
+ 'miss_count': 0,
+ 'cache_size': 0,
+ 'cache_count': 0,
+ 'evictions': 0
+ },
+ 'fielddata': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0
+ },
+ 'completion': {
+ 'size_in_bytes': 0
+ },
+ 'segments': {
+ 'count': 3,
+ 'memory_in_bytes': 7908,
+ 'terms_memory_in_bytes': 5976,
+ 'stored_fields_memory_in_bytes': 936,
+ 'term_vectors_memory_in_bytes': 0,
+ 'norms_memory_in_bytes': 576,
+ 'points_memory_in_bytes': 144,
+ 'doc_values_memory_in_bytes': 276,
+ 'index_writer_memory_in_bytes': 0,
+ 'version_map_memory_in_bytes': 0,
+ 'fixed_bit_set_memory_in_bytes': 0,
+ 'max_unsafe_auto_id_timestamp': -1,
+ 'file_sizes': {}
+ },
+ 'translog': {
+ 'operations': 0,
+ 'size_in_bytes': 215
+ },
+ 'request_cache': {
+ 'memory_size_in_bytes': 0,
+ 'evictions': 0,
+ 'hit_count': 0,
+ 'miss_count': 0
+ },
+ 'recovery': {
+ 'current_as_source': 0,
+ 'current_as_target': 0,
+ 'throttle_time_in_millis': 0
+ }
+ },
+ 'os': {
+ 'timestamp': 1484861642359,
+ 'cpu': {
+ 'percent': 53,
+ 'load_average': {
+ '1m': 2.53,
+ '5m': 2.3,
+ '15m': 2.23
+ }
+ },
+ 'mem': {
+ 'total_in_bytes': 16703762432,
+ 'free_in_bytes': 164323328,
+ 'used_in_bytes': 16539439104,
+ 'free_percent': 1,
+ 'used_percent': 99
+ },
+ 'swap': {
+ 'total_in_bytes': 17054035968,
+ 'free_in_bytes': 12281872384,
+ 'used_in_bytes': 4772163584
+ }
+ },
+ 'process': {
+ 'timestamp': 1484861642360,
+ 'open_file_descriptors': 180,
+ 'max_file_descriptors': 1048576,
+ 'cpu': {
+ 'percent': 0,
+ 'total_in_millis': 28270
+ },
+ 'mem': {
+ 'total_virtual_in_bytes': 5947977728
+ }
+ },
+ 'jvm': {
+ 'timestamp': 1484861642361,
+ 'uptime_in_millis': 614767,
+ 'mem': {
+ 'heap_used_in_bytes': 233688144,
+ 'heap_used_percent': 11,
+ 'heap_committed_in_bytes': 2112618496,
+ 'heap_max_in_bytes': 2112618496,
+ 'non_heap_used_in_bytes': 67167936,
+ 'non_heap_committed_in_bytes': 71741440,
+ 'pools': {
+ 'young': {
+ 'used_in_bytes': 189809608,
+ 'max_in_bytes': 279183360,
+ 'peak_used_in_bytes': 279183360,
+ 'peak_max_in_bytes': 279183360
+ },
+ 'survivor': {
+ 'used_in_bytes': 34865136,
+ 'max_in_bytes': 34865152,
+ 'peak_used_in_bytes': 34865136,
+ 'peak_max_in_bytes': 34865152
+ },
+ 'old': {
+ 'used_in_bytes': 9013400,
+ 'max_in_bytes': 1798569984,
+ 'peak_used_in_bytes': 9013400,
+ 'peak_max_in_bytes': 1798569984
+ }
+ }
+ },
+ 'threads': {
+ 'count': 40,
+ 'peak_count': 46
+ },
+ 'gc': {
+ 'collectors': {
+ 'young': {
+ 'collection_count': 2,
+ 'collection_time_in_millis': 189
+ },
+ 'old': {
+ 'collection_count': 1,
+ 'collection_time_in_millis': 143
+ }
+ }
+ },
+ 'buffer_pools': {
+ 'direct': {
+ 'count': 29,
+ 'used_in_bytes': 87069546,
+ 'total_capacity_in_bytes': 87069545
+ },
+ 'mapped': {
+ 'count': 3,
+ 'used_in_bytes': 9658,
+ 'total_capacity_in_bytes': 9658
+ }
+ },
+ 'classes': {
+ 'current_loaded_count': 10236,
+ 'total_loaded_count': 10236,
+ 'total_unloaded_count': 0
+ }
+ },
+ 'thread_pool': {
+ 'bulk': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'fetch_shard_started': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'fetch_shard_store': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'flush': {
+ 'threads': 2,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 2,
+ 'completed': 6
+ },
+ 'force_merge': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'generic': {
+ 'threads': 4,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 4,
+ 'completed': 73
+ },
+ 'get': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'index': {
+ 'threads': 3,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 3,
+ 'completed': 3
+ },
+ 'listener': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'management': {
+ 'threads': 3,
+ 'queue': 0,
+ 'active': 1,
+ 'rejected': 0,
+ 'largest': 3,
+ 'completed': 77
+ },
+ 'refresh': {
+ 'threads': 1,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 1,
+ 'completed': 588
+ },
+ 'search': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'snapshot': {
+ 'threads': 0,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 0,
+ 'completed': 0
+ },
+ 'warmer': {
+ 'threads': 1,
+ 'queue': 0,
+ 'active': 0,
+ 'rejected': 0,
+ 'largest': 1,
+ 'completed': 9
+ }
+ },
+ 'fs': {
+ 'timestamp': 1484861642369,
+ 'total': {
+ 'total_in_bytes': 233134567424,
+ 'free_in_bytes': 92206276608,
+ 'available_in_bytes': 80292356096,
+ 'spins': 'true'
+ },
+ 'data': [
+ {
+ 'path': '/usr/share/elasticsearch/data/nodes/0',
+ 'mount': '/usr/share/elasticsearch/data (/dev/mapper/ubuntu--vg-root)',
+ 'type': 'ext4',
+ 'total_in_bytes': 233134567424,
+ 'free_in_bytes': 92206276608,
+ 'available_in_bytes': 80292356096,
+ 'spins': 'true'
+ }
+ ],
+ 'io_stats': {
+ 'devices': [
+ {
+ 'device_name': 'dm-0',
+ 'operations': 22045,
+ 'read_operations': 14349,
+ 'write_operations': 7696,
+ 'read_kilobytes': 294732,
+ 'write_kilobytes': 113424
+ }
+ ],
+ 'total': {
+ 'operations': 22045,
+ 'read_operations': 14349,
+ 'write_operations': 7696,
+ 'read_kilobytes': 294732,
+ 'write_kilobytes': 113424
+ }
+ }
+ },
+ 'transport': {
+ 'server_open': 0,
+ 'rx_count': 8,
+ 'rx_size_in_bytes': 3607,
+ 'tx_count': 8,
+ 'tx_size_in_bytes': 3607
+ },
+ 'http': {
+ 'current_open': 1,
+ 'total_opened': 4
+ },
+ 'breakers': {
+ 'request': {
+ 'limit_size_in_bytes': 1267571097,
+ 'limit_size': '1.1gb',
+ 'estimated_size_in_bytes': 0,
+ 'estimated_size': '0b',
+ 'overhead': 1.0,
+ 'tripped': 0
+ },
+ 'fielddata': {
+ 'limit_size_in_bytes': 1267571097,
+ 'limit_size': '1.1gb',
+ 'estimated_size_in_bytes': 0,
+ 'estimated_size': '0b',
+ 'overhead': 1.03,
+ 'tripped': 0
+ },
+ 'in_flight_requests': {
+ 'limit_size_in_bytes': 2112618496,
+ 'limit_size': '1.9gb',
+ 'estimated_size_in_bytes': 0,
+ 'estimated_size': '0b',
+ 'overhead': 1.0,
+ 'tripped': 0
+ },
+ 'parent': {
+ 'limit_size_in_bytes': 1478832947,
+ 'limit_size': '1.3gb',
+ 'estimated_size_in_bytes': 0,
+ 'estimated_size': '0b',
+ 'overhead': 1.0,
+ 'tripped': 0
+ }
+ },
+ 'script': {
+ 'compilations': 0,
+ 'cache_evictions': 0
+ },
+ 'discovery': {
+ 'cluster_state_queue': {
+ 'total': 0,
+ 'pending': 0,
+ 'committed': 0
+ }
+ },
+ 'ingest': {
+ 'total': {
+ 'count': 0,
+ 'time_in_millis': 0,
+ 'current': 0,
+ 'failed': 0
+ },
+ 'pipelines': {}
+ }
+ }
+ }
+ }
+
+ expected = {
+ 'indices_docs_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 3,
+ 'indices_docs_deleted{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_store_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 12972,
+ 'indices_store_throttle_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_index_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 3,
+ 'indices_indexing_index_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 95,
+ 'indices_indexing_index_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_index_failed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_delete_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_delete_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_delete_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_noop_update_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_is_throttled{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_indexing_throttle_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_get_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_get_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_get_exists_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_get_exists_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_get_missing_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_get_missing_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_get_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_open_contexts{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_query_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_query_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_query_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_fetch_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_fetch_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_fetch_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_scroll_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_scroll_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_scroll_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_suggest_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_suggest_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_search_suggest_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_current_docs{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_current_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_total_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_total_docs{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_total_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_total_stopped_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_total_throttled_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_merges_total_auto_throttle_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 104857600,
+ 'indices_refresh_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 6,
+ 'indices_refresh_total_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 304,
+ 'indices_flush_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 3,
+ 'indices_flush_total_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 72,
+ 'indices_warmer_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 14,
+ 'indices_warmer_total_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 19,
+ 'indices_warmer_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_query_cache_memory_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_query_cache_total_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_query_cache_hit_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_query_cache_miss_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_query_cache_cache_size{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_query_cache_cache_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_query_cache_evictions{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_fielddata_memory_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_fielddata_evictions{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_completion_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_segments_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 3,
+ 'indices_segments_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 7908,
+ 'indices_segments_terms_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 5976,
+ 'indices_segments_stored_fields_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 936,
+ 'indices_segments_term_vectors_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_segments_norms_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 576,
+ 'indices_segments_points_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 144,
+ 'indices_segments_doc_values_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 276,
+ 'indices_segments_index_writer_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_segments_version_map_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_segments_fixed_bit_set_memory_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_segments_max_unsafe_auto_id_timestamp{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': -1,
+ 'indices_translog_operations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_translog_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 215,
+ 'indices_request_cache_memory_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_request_cache_evictions{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_request_cache_hit_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_request_cache_miss_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_recovery_current_as_source{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_recovery_current_as_target{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'indices_recovery_throttle_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'os_cpu_percent{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 53,
+ 'os_cpu_load_average_1m{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 2.53,
+ 'os_cpu_load_average_5m{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 2.3,
+ 'os_cpu_load_average_15m{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 2.23,
+ 'os_mem_total_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 16703762432,
+ 'os_mem_free_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 164323328,
+ 'os_mem_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 16539439104,
+ 'os_mem_free_percent{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1,
+ 'os_mem_used_percent{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 99,
+ 'os_swap_free_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 12281872384,
+ 'os_swap_total_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 17054035968,
+ 'os_swap_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 4772163584,
+ 'process_open_file_descriptors{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 180,
+ 'process_max_file_descriptors{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1048576,
+ 'process_cpu_percent{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'process_cpu_total_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 28270,
+ 'process_mem_total_virtual_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 5947977728,
+ 'jvm_uptime_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 614767,
+ 'jvm_mem_heap_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 233688144,
+ 'jvm_mem_heap_used_percent{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 11,
+ 'jvm_mem_heap_committed_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 2112618496,
+ 'jvm_mem_heap_max_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 2112618496,
+ 'jvm_mem_non_heap_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 67167936,
+ 'jvm_mem_non_heap_committed_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 71741440,
+ 'jvm_mem_pools_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="young"}': 189809608,
+ 'jvm_mem_pools_max_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="young"}': 279183360,
+ 'jvm_mem_pools_peak_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="young"}': 279183360,
+ 'jvm_mem_pools_peak_max_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="young"}': 279183360,
+ 'jvm_mem_pools_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="survivor"}': 34865136,
+ 'jvm_mem_pools_max_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="survivor"}': 34865152,
+ 'jvm_mem_pools_peak_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="survivor"}': 34865136,
+ 'jvm_mem_pools_peak_max_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="survivor"}': 34865152,
+ 'jvm_mem_pools_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="old"}': 9013400,
+ 'jvm_mem_pools_max_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="old"}': 1798569984,
+ 'jvm_mem_pools_peak_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="old"}': 9013400,
+ 'jvm_mem_pools_peak_max_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",pool="old"}': 1798569984,
+ 'jvm_threads_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 40,
+ 'jvm_threads_peak_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 46,
+ 'jvm_gc_collectors_collection_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",collector="young"}': 2,
+ 'jvm_gc_collectors_collection_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",collector="young"}': 189,
+ 'jvm_gc_collectors_collection_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",collector="old"}': 1,
+ 'jvm_gc_collectors_collection_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",collector="old"}': 143,
+ 'jvm_buffer_pools_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",buffer_pool="direct"}': 29,
+ 'jvm_buffer_pools_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",buffer_pool="direct"}': 87069546,
+ 'jvm_buffer_pools_total_capacity_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",buffer_pool="direct"}': 87069545,
+ 'jvm_buffer_pools_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",buffer_pool="mapped"}': 3,
+ 'jvm_buffer_pools_used_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",buffer_pool="mapped"}': 9658,
+ 'jvm_buffer_pools_total_capacity_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",buffer_pool="mapped"}': 9658,
+ 'jvm_classes_current_loaded_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 10236,
+ 'jvm_classes_total_loaded_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 10236,
+ 'jvm_classes_total_unloaded_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="bulk"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="bulk"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="bulk"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="bulk"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="bulk"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="bulk"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_started"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_started"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_started"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_started"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_started"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_started"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_store"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_store"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_store"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_store"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_store"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="fetch_shard_store"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="flush"}': 2,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="flush"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="flush"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="flush"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="flush"}': 2,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="flush"}': 6,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="force_merge"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="force_merge"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="force_merge"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="force_merge"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="force_merge"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="force_merge"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="generic"}': 4,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="generic"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="generic"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="generic"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="generic"}': 4,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="generic"}': 73,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="get"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="get"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="get"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="get"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="get"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="get"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="index"}': 3,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="index"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="index"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="index"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="index"}': 3,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="index"}': 3,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="listener"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="listener"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="listener"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="listener"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="listener"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="listener"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="management"}': 3,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="management"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="management"}': 1,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="management"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="management"}': 3,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="management"}': 77,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="refresh"}': 1,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="refresh"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="refresh"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="refresh"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="refresh"}': 1,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="refresh"}': 588,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="search"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="search"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="search"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="search"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="search"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="search"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="snapshot"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="snapshot"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="snapshot"}': 0,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="snapshot"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="snapshot"}': 0,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="snapshot"}': 0,
+ 'thread_pool_threads{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="warmer"}': 1,
+ 'thread_pool_rejected{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="warmer"}': 0,
+ 'thread_pool_active{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="warmer"}': 0,
+ 'thread_pool_queue{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="warmer"}': 0,
+ 'thread_pool_largest{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="warmer"}': 1,
+ 'thread_pool_completed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",thread_pool="warmer"}': 9,
+ 'fs_total_total_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 233134567424,
+ 'fs_total_free_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 92206276608,
+ 'fs_total_available_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 80292356096,
+ 'fs_data_total_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",path="/usr/share/elasticsearch/data/nodes/0"}': 233134567424,
+ 'fs_data_free_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",path="/usr/share/elasticsearch/data/nodes/0"}': 92206276608,
+ 'fs_data_available_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",path="/usr/share/elasticsearch/data/nodes/0"}': 80292356096,
+ 'fs_io_stats_devices_operations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",device_name="dm-0"}': 22045,
+ 'fs_io_stats_devices_read_operations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",device_name="dm-0"}': 14349,
+ 'fs_io_stats_devices_write_operations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",device_name="dm-0"}': 7696,
+ 'fs_io_stats_devices_read_kilobytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",device_name="dm-0"}': 294732,
+ 'fs_io_stats_devices_write_kilobytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z",device_name="dm-0"}': 113424,
+ 'fs_io_stats_total_operations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 22045,
+ 'fs_io_stats_total_read_operations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 14349,
+ 'fs_io_stats_total_write_operations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 7696,
+ 'fs_io_stats_total_read_kilobytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 294732,
+ 'fs_io_stats_total_write_kilobytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 113424,
+ 'transport_server_open{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'transport_rx_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 8,
+ 'transport_rx_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 3607,
+ 'transport_tx_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 8,
+ 'transport_tx_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 3607,
+ 'http_current_open{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1,
+ 'http_total_opened{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 4,
+ 'breakers_request_limit_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1267571097,
+ 'breakers_request_estimated_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'breakers_request_overhead{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1.0,
+ 'breakers_request_tripped{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'breakers_fielddata_limit_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1267571097,
+ 'breakers_fielddata_estimated_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'breakers_fielddata_overhead{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1.03,
+ 'breakers_fielddata_tripped{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'breakers_in_flight_requests_limit_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 2112618496,
+ 'breakers_in_flight_requests_estimated_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'breakers_in_flight_requests_overhead{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1.0,
+ 'breakers_in_flight_requests_tripped{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'breakers_parent_limit_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1478832947,
+ 'breakers_parent_estimated_size_in_bytes{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'breakers_parent_overhead{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 1.0,
+ 'breakers_parent_tripped{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'script_compilations{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'script_cache_evictions{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'discovery_cluster_state_queue_total{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'discovery_cluster_state_queue_pending{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'discovery_cluster_state_queue_committed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'ingest_total_count{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'ingest_total_time_in_millis{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'ingest_total_current{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ 'ingest_total_failed{node_id="bRcKq5zUTAuwNf4qvnXzIQ",node_name="bRcKq5z"}': 0,
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/tests/test_parser.py b/tests/test_parser.py
new file mode 100644
index 0000000..ed5de99
--- /dev/null
+++ b/tests/test_parser.py
@@ -0,0 +1,778 @@
+import unittest
+
+from prometheus_es_exporter.parser import parse_response
+from tests.utils import convert_result
+
+
+# Sample responses generated by running the provided queries on a Elasticsearch
+# server populated with the following data (http command = Httpie utility):
+# > http -v POST localhost:9200/foo/bar/1 val:=1 group1=a group2=a
+# > http -v POST localhost:9200/foo/bar/2 val:=2 group1=a group2=b
+# > http -v POST localhost:9200/foo/bar/3 val:=3 group1=b group2=b
+class Test(unittest.TestCase):
+ maxDiff = None
+
+ def test_query(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ # effectively tests other singe-value metrics: max,min,sum,cardinality
+ def test_avg(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "val_avg": {
+ # "avg": {"field": "val"}
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "val_avg": {
+ "value": 2.0
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ 'val_avg_value': 2
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ # effecively tests other mult-value metrics: percentile_ranks
+ def test_percentiles(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "val_percentiles": {
+ # "percentiles": {"field": "val"}
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "val_percentiles": {
+ "values": {
+ "1.0": 1.02,
+ "25.0": 1.5,
+ "5.0": 1.1,
+ "50.0": 2.0,
+ "75.0": 2.5,
+ "95.0": 2.9,
+ "99.0": 2.98
+ }
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ 'val_percentiles_values_1_0': 1.02,
+ 'val_percentiles_values_5_0': 1.1,
+ 'val_percentiles_values_25_0': 1.5,
+ 'val_percentiles_values_50_0': 2.0,
+ 'val_percentiles_values_75_0': 2.5,
+ 'val_percentiles_values_95_0': 2.9,
+ 'val_percentiles_values_99_0': 2.98
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_stats(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "val_stats": {
+ # "stats": {"field": "val"}
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "val_stats": {
+ "avg": 2.0,
+ "count": 3,
+ "max": 3.0,
+ "min": 1.0,
+ "sum": 6.0
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ 'val_stats_avg': 2.0,
+ 'val_stats_count': 3,
+ 'val_stats_max': 3.0,
+ 'val_stats_min': 1.0,
+ 'val_stats_sum': 6.0
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_extended_stats(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "val_extended_stats": {
+ # "extended_stats": {"field": "val"}
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "val_extended_stats": {
+ "avg": 2.0,
+ "count": 3,
+ "max": 3.0,
+ "min": 1.0,
+ "std_deviation": 0.816496580927726,
+ "std_deviation_bounds": {
+ "lower": 0.36700683814454793,
+ "upper": 3.632993161855452
+ },
+ "sum": 6.0,
+ "sum_of_squares": 14.0,
+ "variance": 0.6666666666666666
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ 'val_extended_stats_avg': 2.0,
+ 'val_extended_stats_count': 3,
+ 'val_extended_stats_max': 3.0,
+ 'val_extended_stats_min': 1.0,
+ 'val_extended_stats_sum': 6.0,
+ 'val_extended_stats_std_deviation': 0.816496580927726,
+ 'val_extended_stats_std_deviation_bounds_lower': 0.36700683814454793,
+ 'val_extended_stats_std_deviation_bounds_upper': 3.632993161855452,
+ 'val_extended_stats_sum_of_squares': 14.0,
+ 'val_extended_stats_variance': 0.6666666666666666
+
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_filter(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "group1_filter": {
+ # "filter": {"term": {"group1": "a"}},
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # }
+ # }
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "group1_filter": {
+ "doc_count": 2,
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ 'group1_filter_doc_count': 2,
+ 'group1_filter_val_sum_value': 3.0
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_filters(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "group_filter": {
+ # "filters": {
+ # "filters": {
+ # "group_a": {"term": {"group1": "a"}},
+ # "group_b": {"term": {"group1": "b"}}
+ # }
+ # },
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # }
+ # }
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "group_filter": {
+ "buckets": {
+ "group_a": {
+ "doc_count": 2,
+ "val_sum": {
+ "value": 3.0
+ }
+ },
+ "group_b": {
+ "doc_count": 1,
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ }
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ 'group_filter_doc_count{group_filter="group_a"}': 2,
+ 'group_filter_doc_count{group_filter="group_b"}': 1,
+ 'group_filter_val_sum_value{group_filter="group_a"}': 3.0,
+ 'group_filter_val_sum_value{group_filter="group_b"}': 3.0
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_filters_anonymous(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "group_filter": {
+ # "filters": {
+ # "filters": [
+ # {"term": {"group1": "a"}},
+ # {"term": {"group1": "b"}}
+ # ]
+ # },
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # }
+ # }
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "group_filter": {
+ "buckets": [
+ {
+ "doc_count": 2,
+ "val_sum": {
+ "value": 3.0
+ }
+ },
+ {
+ "doc_count": 1,
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ ]
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ 'group_filter_doc_count{group_filter="filter_0"}': 2,
+ 'group_filter_doc_count{group_filter="filter_1"}': 1,
+ 'group_filter_val_sum_value{group_filter="filter_0"}': 3.0,
+ 'group_filter_val_sum_value{group_filter="filter_1"}': 3.0
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_terms(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "group1_term": {
+ # "terms": {"field": "group1"},
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # }
+ # }
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "group1_term": {
+ "buckets": [
+ {
+ "doc_count": 2,
+ "key": "a",
+ "val_sum": {
+ "value": 3.0
+ }
+ },
+ {
+ "doc_count": 1,
+ "key": "b",
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ ],
+ "doc_count_error_upper_bound": 0,
+ "sum_other_doc_count": 0
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 2
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 2,
+ 'group1_term_doc_count_error_upper_bound': 0,
+ 'group1_term_sum_other_doc_count': 0,
+ 'group1_term_doc_count{group1_term="a"}': 2,
+ 'group1_term_val_sum_value{group1_term="a"}': 3.0,
+ 'group1_term_doc_count{group1_term="b"}': 1,
+ 'group1_term_val_sum_value{group1_term="b"}': 3.0
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_terms_numeric(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "val_terms": {
+ # "terms": {"field": "val"},
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # }
+ # }
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "total": 5,
+ "successful": 5,
+ "failed": 0
+ },
+ "aggregations": {
+ "val_terms": {
+ "doc_count_error_upper_bound": 0,
+ "sum_other_doc_count": 0,
+ "buckets": [
+ {
+ "key": 1,
+ "doc_count": 1,
+ "val_sum": {
+ "value": 1.0
+ }
+ },
+ {
+ "key": 2,
+ "doc_count": 1,
+ "val_sum": {
+ "value": 2.0
+ }
+ },
+ {
+ "key": 3,
+ "doc_count": 1,
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ ]
+ }
+ },
+ "hits": {
+ "total": 3,
+ "max_score": 0.0,
+ "hits": []
+ },
+ "timed_out": False,
+ "took": 4
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 4,
+ 'val_terms_doc_count_error_upper_bound': 0,
+ 'val_terms_sum_other_doc_count': 0,
+ 'val_terms_doc_count{val_terms="1"}': 1,
+ 'val_terms_val_sum_value{val_terms="1"}': 1.0,
+ 'val_terms_doc_count{val_terms="2"}': 1,
+ 'val_terms_val_sum_value{val_terms="2"}': 2.0,
+ 'val_terms_doc_count{val_terms="3"}': 1,
+ 'val_terms_val_sum_value{val_terms="3"}': 3.0
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ def test_nested_terms(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "group1_term": {
+ # "terms": {"field": "group1"},
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # },
+ # "group2_term": {
+ # "terms": {"field": "group2"},
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # }
+ # }
+ # }
+ # }
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "group1_term": {
+ "buckets": [
+ {
+ "doc_count": 2,
+ "group2_term": {
+ "buckets": [
+ {
+ "doc_count": 1,
+ "key": "a",
+ "val_sum": {
+ "value": 1.0
+ }
+ },
+ {
+ "doc_count": 1,
+ "key": "b",
+ "val_sum": {
+ "value": 2.0
+ }
+ }
+ ],
+ "doc_count_error_upper_bound": 0,
+ "sum_other_doc_count": 0
+ },
+ "key": "a",
+ "val_sum": {
+ "value": 3.0
+ }
+ },
+ {
+ "doc_count": 1,
+ "group2_term": {
+ "buckets": [
+ {
+ "doc_count": 1,
+ "key": "b",
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ ],
+ "doc_count_error_upper_bound": 0,
+ "sum_other_doc_count": 0
+ },
+ "key": "b",
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ ],
+ "doc_count_error_upper_bound": 0,
+ "sum_other_doc_count": 0
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 2
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 2,
+ 'group1_term_doc_count_error_upper_bound': 0,
+ 'group1_term_sum_other_doc_count': 0,
+ 'group1_term_doc_count{group1_term="a"}': 2,
+ 'group1_term_val_sum_value{group1_term="a"}': 3.0,
+ 'group1_term_group2_term_doc_count_error_upper_bound{group1_term="a"}': 0,
+ 'group1_term_group2_term_sum_other_doc_count{group1_term="a"}': 0,
+ 'group1_term_group2_term_doc_count{group1_term="a",group2_term="a"}': 1,
+ 'group1_term_group2_term_val_sum_value{group1_term="a",group2_term="a"}': 1.0,
+ 'group1_term_group2_term_doc_count{group1_term="a",group2_term="b"}': 1,
+ 'group1_term_group2_term_val_sum_value{group1_term="a",group2_term="b"}': 2.0,
+ 'group1_term_doc_count{group1_term="b"}': 1,
+ 'group1_term_val_sum_value{group1_term="b"}': 3.0,
+ 'group1_term_group2_term_doc_count_error_upper_bound{group1_term="b"}': 0,
+ 'group1_term_group2_term_sum_other_doc_count{group1_term="b"}': 0,
+ 'group1_term_group2_term_doc_count{group1_term="b",group2_term="b"}': 1,
+ 'group1_term_group2_term_val_sum_value{group1_term="b",group2_term="b"}': 3.0,
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+ # Tests handling of disallowed characters in labels and metric names
+ # The '-'s in the aggregation name aren't allowed in metric names or
+ # label keys, so need to be substituted.
+ # The number at the start of the aggregation name isn't allowed at
+ # the start of metric names or label keys.
+ # A double '_' at the start of the label key (post substitutions)
+ # is also not allowed.
+ def test_bad_chars(self):
+ # Query:
+ # {
+ # "size": 0,
+ # "query": {
+ # "match_all": {}
+ # },
+ # "aggs": {
+ # "1-group-filter-1": {
+ # "filters": {
+ # "filters": {
+ # "group_a": {"term": {"group1": "a"}},
+ # "group_b": {"term": {"group1": "b"}}
+ # }
+ # },
+ # "aggs": {
+ # "val_sum": {
+ # "sum": {"field": "val"}
+ # }
+ # }
+ # }
+ # }
+ # }
+ response = {
+ "_shards": {
+ "failed": 0,
+ "successful": 5,
+ "total": 5
+ },
+ "aggregations": {
+ "1-group-filter-1": {
+ "buckets": {
+ "group_a": {
+ "doc_count": 2,
+ "val_sum": {
+ "value": 3.0
+ }
+ },
+ "group_b": {
+ "doc_count": 1,
+ "val_sum": {
+ "value": 3.0
+ }
+ }
+ }
+ }
+ },
+ "hits": {
+ "hits": [],
+ "max_score": 0.0,
+ "total": 3
+ },
+ "timed_out": False,
+ "took": 1
+ }
+
+ expected = {
+ 'hits': 3,
+ 'took_milliseconds': 1,
+ '__group_filter_1_doc_count{_group_filter_1="group_a"}': 2,
+ '__group_filter_1_doc_count{_group_filter_1="group_b"}': 1,
+ '__group_filter_1_val_sum_value{_group_filter_1="group_a"}': 3.0,
+ '__group_filter_1_val_sum_value{_group_filter_1="group_b"}': 3.0
+ }
+ result = convert_result(parse_response(response))
+ self.assertEqual(expected, result)
+
+
+if __name__ == '__main__':
+ unittest.main()
diff --git a/tests/utils.py b/tests/utils.py
new file mode 100644
index 0000000..c81177f
--- /dev/null
+++ b/tests/utils.py
@@ -0,0 +1,36 @@
+from prometheus_es_exporter import group_metrics
+
+
+def format_label(key, value):
+ return key + '="' + value + '"'
+
+
+def format_metrics(metric_name, label_keys, value_dict):
+ metrics = {}
+
+ for label_values, value in value_dict.items():
+ if len(label_keys) > 0:
+ # sorted_keys = sorted(label_keys)
+ labels = '{'
+ labels += ','.join([format_label(label_keys[i], label_values[i])
+ for i in range(len(label_keys))])
+ labels += '}'
+ else:
+ labels = ''
+
+ metrics[metric_name + labels] = value
+
+ return metrics
+
+
+# Converts the parse_response() result into a psuedo-prometheus format
+# that is useful for comparing results in tests.
+# Uses the 'group_metrics()' function used by the exporter, so effectively
+# tests that function.
+def convert_result(result):
+ metric_dict = group_metrics(result)
+ return {
+ metric: value
+ for metric_name, (label_keys, value_dict) in metric_dict.items()
+ for metric, value in format_metrics(metric_name, label_keys, value_dict).items()
+ }