1- # Every rule in the JMX configuration is covered by one expected metric.
1+ # Native Prometheus metrics test
2+ # We use a raw string for "expected_metrics" but still have to escape special regex characters "[", "]", "{" and "}"
3+ # that we expect to be in the metrics string.
24
35import re
46import sys
810
911
1012def check_metrics (
11- namespace : str , role : str , port : int , expected_metrics : list [str ]
13+ namespace : str ,
14+ role : str ,
15+ port : int ,
16+ expected_metrics : list [str ]
1217) -> None :
13- response : requests . Response = requests .get (
18+ response = requests .get (
1419 f"http://hdfs-{ role } -default-metrics.{ namespace } .svc.cluster.local:{ port } /prom" ,
1520 timeout = 10 ,
1621 )
17- assert response .ok , "Requesting metrics failed"
22+ assert response .ok , "Requesting metrics failed for {role}. "
1823
1924 for metric in expected_metrics :
20- assert re .search (f"^{ metric } " , response .text , re .MULTILINE ) is not None , (
21- f"Metric '{ metric } ' not found for { role } "
22- )
25+ regex = re .compile (metric , re .MULTILINE )
26+ assert regex .search (response .text ) is not None , f"Metric '{ metric } ' not found for { role } "
2327
2428
25- def check_namenode_metrics (
26- namespace : str ,
27- ) -> None :
28- expected_metrics : list [str ] = [
29- 'metrics_system_num_active_sources{context="metricssystem",hostname="hdfs-namenode-default-' ,
30- 'namenode_total_file_ops{processname="NameNode",sessionid="null",context="dfs",hostname="hdfs-namenode-default' ,
31- 'namenode_files_created{processname="NameNode",sessionid="null",context="dfs",hostname="hdfs-namenode-default-' ,
32- 'namenode_files_deleted{processname="NameNode",sessionid="null",context="dfs",hostname="hdfs-namenode-default-' ,
29+ def check_namenode_metrics (namespace : str ) -> None :
30+ expected_metrics = [
31+ r'metrics_system_num_active_sources\{context="metricssystem",hostname="hdfs-namenode-default-\d+"\}' ,
32+ r'namenode_total_file_ops\{processname="NameNode",sessionid="null",context="dfs",hostname="hdfs-namenode-default-\d+"\}' ,
33+ r'namenode_files_created\{processname="NameNode",sessionid="null",context="dfs",hostname="hdfs-namenode-default-\d+"\}' ,
34+ r'namenode_files_deleted\{processname="NameNode",sessionid="null",context="dfs",hostname="hdfs-namenode-default-\d+"\}' ,
3335 ]
3436
3537 check_metrics (namespace , "namenode" , 9870 , expected_metrics )
@@ -39,12 +41,12 @@ def check_datanode_metrics(
3941 namespace : str ,
4042) -> None :
4143 expected_metrics : list [str ] = [
42- 'metrics_system_num_active_sources{context="metricssystem",hostname="hdfs-datanode-default-0"} ' ,
43- 'org_apache_hadoop_hdfs_server_datanode_fsdataset_impl_fs_dataset_impl_capacity{context="FSDatasetState",storageinfo="FSDataset{dirpath=\' [/stackable/data/data/datanode]\' }",hostname="hdfs-datanode-default-0" }' ,
44- 'org_apache_hadoop_hdfs_server_datanode_fsdataset_impl_fs_dataset_impl_estimated_capacity_lost_total{context="FSDatasetState",storageinfo="FSDataset{dirpath=\' [/stackable/data/data/datanode]\' }",hostname="hdfs-datanode-default-0" }' ,
45- 'datanode_blocks_get_local_path_info{sessionid="null",context="dfs",hostname="hdfs-datanode-default-0" }' ,
46- 'datanode_blocks_read{sessionid="null",context="dfs",hostname="hdfs-datanode-default-0" }' ,
47- 'jvm_metrics_gc_count{context="jvm",processname="DataNode",sessionid="null",hostname="hdfs-datanode-default-0" }' ,
44+ r 'metrics_system_num_active_sources\ {context="metricssystem",hostname="hdfs-datanode-default-\d+ ' ,
45+ r 'org_apache_hadoop_hdfs_server_datanode_fsdataset_impl_fs_dataset_impl_capacity\ {context="FSDatasetState",storageinfo="FSDataset\ {dirpath=\'\ [/stackable/data/data/datanode]\'\ }",hostname="hdfs-datanode-default-\d+"\ }' ,
46+ r 'org_apache_hadoop_hdfs_server_datanode_fsdataset_impl_fs_dataset_impl_estimated_capacity_lost_total\ {context="FSDatasetState",storageinfo="FSDataset\ {dirpath=\'\ [/stackable/data/data/datanode]\'\ }",hostname="hdfs-datanode-default-\d+"\ }' ,
47+ r 'datanode_blocks_get_local_path_info\ {sessionid="null",context="dfs",hostname="hdfs-datanode-default-\d+"\ }' ,
48+ r 'datanode_blocks_read\ {sessionid="null",context="dfs",hostname="hdfs-datanode-default-\d+"\ }' ,
49+ r 'jvm_metrics_gc_count\ {context="jvm",processname="DataNode",sessionid="null",hostname="hdfs-datanode-default-\d+"\ }' ,
4850 ]
4951
5052 check_metrics (namespace , "datanode" , 9864 , expected_metrics )
@@ -54,8 +56,8 @@ def check_journalnode_metrics(
5456 namespace : str ,
5557) -> None :
5658 expected_metrics : list [str ] = [
57- 'metrics_system_num_active_sources{context="metricssystem",hostname="hdfs-journalnode-default-0" }' ,
58- 'journal_node_bytes_written{context="dfs",journalid="hdfs",hostname="hdfs-journalnode-default-0" }' ,
59+ r 'metrics_system_num_active_sources\ {context="metricssystem",hostname="hdfs-journalnode-default-\d+"\ }' ,
60+ r 'journal_node_bytes_written\ {context="dfs",journalid="hdfs",hostname="hdfs-journalnode-default-\d+"\ }' ,
5961 ]
6062
6163 check_metrics (namespace , "journalnode" , 8480 , expected_metrics )
0 commit comments