This is an automated email from the ASF dual-hosted git repository.

lichaoyong pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-doris.git


The following commit(s) were added to refs/heads/master by this push:
     new b58b1b3  [metrics] Make DorisMetrics to be a real singleton (#3417)
b58b1b3 is described below

commit b58b1b395350530a7cc85b4692b688ee3ca01cb5
Author: Yingchun Lai <405403...@qq.com>
AuthorDate: Mon May 4 09:20:53 2020 +0800

    [metrics] Make DorisMetrics to be a real singleton (#3417)
---
 be/src/agent/task_worker_pool.cpp                  |  42 ++--
 be/src/common/daemon.cpp                           |  34 +--
 be/src/exec/broker_scan_node.cpp                   |   2 +-
 be/src/exec/hash_table.cpp                         |  19 +-
 be/src/exec/olap_scanner.cpp                       |   4 +-
 be/src/exec/partitioned_hash_table.cc              |   4 -
 be/src/http/action/stream_load.cpp                 |   8 +-
 be/src/olap/base_compaction.cpp                    |   4 +-
 be/src/olap/cumulative_compaction.cpp              |   4 +-
 be/src/olap/fs/block_manager_metrics.cpp           |  18 +-
 be/src/olap/memtable.cpp                           |   4 +-
 be/src/olap/olap_meta.cpp                          |  12 +-
 be/src/olap/rowset/segment_v2/segment_iterator.cpp |   8 +-
 be/src/olap/storage_engine.cpp                     |   8 +-
 be/src/olap/tablet_manager.cpp                     |  18 +-
 be/src/olap/task/engine_alter_tablet_task.cpp      |   4 +-
 be/src/olap/task/engine_batch_load_task.cpp        |  18 +-
 be/src/olap/task/engine_storage_migration_task.cpp |   2 +-
 be/src/runtime/buffered_block_mgr2.cc              |   5 -
 be/src/runtime/disk_io_mgr.cc                      |  53 -----
 be/src/runtime/disk_io_mgr_scan_range.cc           |  10 -
 be/src/runtime/exec_env_init.cpp                   |  12 +-
 be/src/runtime/fragment_mgr.cpp                    |   4 +-
 be/src/runtime/mem_pool.cpp                        |   6 +-
 be/src/runtime/memory/chunk_allocator.cpp          |   3 +-
 be/src/runtime/memory/chunk_allocator.h            |   2 +-
 .../runtime/stream_load/stream_load_executor.cpp   |  12 +-
 be/src/runtime/test_env.cc                         |   1 -
 be/src/service/http_service.cpp                    |   2 +-
 be/src/util/doris_metrics.cpp                      | 224 ++++--------------
 be/src/util/doris_metrics.h                        | 257 +++++++++++----------
 be/src/util/system_metrics.h                       |   1 +
 be/test/exec/tablet_sink_test.cpp                  |   2 -
 be/test/http/stream_load_test.cpp                  |   2 -
 be/test/olap/delete_handler_test.cpp               |   2 -
 be/test/olap/delta_writer_test.cpp                 |   2 -
 be/test/olap/olap_snapshot_converter_test.cpp      |   2 -
 be/test/olap/rowset/alpha_rowset_test.cpp          |   2 -
 be/test/olap/rowset/beta_rowset_test.cpp           |   2 -
 be/test/olap/rowset/rowset_converter_test.cpp      |   2 -
 be/test/olap/rowset/rowset_meta_manager_test.cpp   |   2 -
 .../rowset/segment_v2/binary_prefix_page_test.cpp  |   2 +-
 .../rowset/unique_rowset_id_generator_test.cpp     |   9 -
 be/test/olap/tablet_mgr_test.cpp                   |   2 -
 be/test/olap/txn_manager_test.cpp                  |   2 -
 be/test/runtime/external_scan_context_mgr_test.cpp |   2 -
 be/test/runtime/fragment_mgr_test.cpp              |   2 -
 be/test/runtime/load_channel_mgr_test.cpp          |   2 -
 be/test/runtime/memory/chunk_allocator_test.cpp    |   1 -
 be/test/runtime/memory_scratch_sink_test.cpp       |   2 -
 be/test/runtime/result_queue_mgr_test.cpp          |  12 -
 .../runtime/routine_load_task_executor_test.cpp    |   2 -
 be/test/runtime/small_file_mgr_test.cpp            |   2 -
 be/test/util/arrow/arrow_row_batch_test.cpp        |   4 -
 be/test/util/arrow/arrow_work_flow_test.cpp        |   2 -
 be/test/util/doris_metrics_test.cpp                |  55 +++--
 be/test/util/zip_util_test.cpp                     |   2 +-
 run-ut.sh                                          |   1 +
 58 files changed, 320 insertions(+), 607 deletions(-)

diff --git a/be/src/agent/task_worker_pool.cpp 
b/be/src/agent/task_worker_pool.cpp
index 94094a1..42f178a 100644
--- a/be/src/agent/task_worker_pool.cpp
+++ b/be/src/agent/task_worker_pool.cpp
@@ -267,14 +267,14 @@ void TaskWorkerPool::_finish_task(const 
TFinishTaskRequest& finish_task_request)
     uint32_t try_time = 0;
 
     while (try_time < TASK_FINISH_MAX_RETRY) {
-        DorisMetrics::finish_task_requests_total.increment(1);
+        DorisMetrics::instance()->finish_task_requests_total.increment(1);
         AgentStatus client_status = 
_master_client->finish_task(finish_task_request, &result);
 
         if (client_status == DORIS_SUCCESS) {
             LOG(INFO) << "finish task success.";
             break;
         } else {
-            DorisMetrics::finish_task_requests_failed.increment(1);
+            DorisMetrics::instance()->finish_task_requests_failed.increment(1);
             LOG(WARNING) << "finish task failed. status_code=" << 
result.status.status_code;
             try_time += 1;
         }
@@ -694,7 +694,7 @@ void* 
TaskWorkerPool::_publish_version_worker_thread_callback(void* arg_this) {
             worker_pool_this->_tasks.pop_front();
         }
 
-        DorisMetrics::publish_task_request_total.increment(1);
+        DorisMetrics::instance()->publish_task_request_total.increment(1);
         LOG(INFO) << "get publish version task, signature:" << 
agent_task_req.signature;
 
         Status st;
@@ -718,7 +718,7 @@ void* 
TaskWorkerPool::_publish_version_worker_thread_callback(void* arg_this) {
 
         TFinishTaskRequest finish_task_request;
         if (res != OLAP_SUCCESS) {
-            DorisMetrics::publish_task_failed_total.increment(1);
+            DorisMetrics::instance()->publish_task_failed_total.increment(1);
             // if publish failed, return failed, FE will ignore this error and
             // check error tablet ids and FE will also republish this task
             LOG(WARNING) << "publish version failed. signature:" << 
agent_task_req.signature
@@ -891,7 +891,7 @@ void* TaskWorkerPool::_clone_worker_thread_callback(void* 
arg_this) {
             worker_pool_this->_tasks.pop_front();
         }
 
-        DorisMetrics::clone_requests_total.increment(1);
+        DorisMetrics::instance()->clone_requests_total.increment(1);
         LOG(INFO) << "get clone task. signature:" << agent_task_req.signature;
 
         vector<string> error_msgs;
@@ -908,7 +908,7 @@ void* TaskWorkerPool::_clone_worker_thread_callback(void* 
arg_this) {
 
         TStatusCode::type status_code = TStatusCode::OK;
         if (status != DORIS_SUCCESS && status != DORIS_CREATE_TABLE_EXIST) {
-            DorisMetrics::clone_requests_failed.increment(1);
+            DorisMetrics::instance()->clone_requests_failed.increment(1);
             status_code = TStatusCode::RUNTIME_ERROR;
             LOG(WARNING) << "clone failed. signature: " << 
agent_task_req.signature;
             error_msgs.push_back("clone failed.");
@@ -1052,12 +1052,12 @@ void* 
TaskWorkerPool::_report_task_worker_thread_callback(void* arg_this) {
             request.__set_tasks(_s_task_signatures);
         }
 
-        DorisMetrics::report_task_requests_total.increment(1);
+        DorisMetrics::instance()->report_task_requests_total.increment(1);
         TMasterResult result;
         AgentStatus status = worker_pool_this->_master_client->report(request, 
&result);
 
         if (status != DORIS_SUCCESS) {
-            DorisMetrics::report_task_requests_failed.increment(1);
+            DorisMetrics::instance()->report_task_requests_failed.increment(1);
             LOG(WARNING) << "finish report task failed. status:" << status << 
", master host:"
                          << 
worker_pool_this->_master_info.network_address.hostname
                          << "port:" << 
worker_pool_this->_master_info.network_address.port;
@@ -1104,23 +1104,23 @@ void* 
TaskWorkerPool::_report_disk_state_worker_thread_callback(void* arg_this)
             disk.__set_used(root_path_info.is_used);
             disks[root_path_info.path] = disk;
 
-            DorisMetrics::disks_total_capacity.set_metric(root_path_info.path,
-                                                          
root_path_info.disk_capacity);
-            DorisMetrics::disks_avail_capacity.set_metric(root_path_info.path,
-                                                          
root_path_info.available);
-            
DorisMetrics::disks_data_used_capacity.set_metric(root_path_info.path,
-                                                              
root_path_info.data_used_capacity);
-            DorisMetrics::disks_state.set_metric(root_path_info.path,
-                                                 root_path_info.is_used ? 1L : 
0L);
+            DorisMetrics::instance()->disks_total_capacity.set_metric(
+                root_path_info.path, root_path_info.disk_capacity);
+            DorisMetrics::instance()->disks_avail_capacity.set_metric(
+                root_path_info.path, root_path_info.available);
+            DorisMetrics::instance()->disks_data_used_capacity.set_metric(
+                root_path_info.path, root_path_info.data_used_capacity);
+            DorisMetrics::instance()->disks_state.set_metric(
+                root_path_info.path, root_path_info.is_used ? 1L : 0L);
         }
         request.__set_disks(disks);
 
-        DorisMetrics::report_disk_requests_total.increment(1);
+        DorisMetrics::instance()->report_disk_requests_total.increment(1);
         TMasterResult result;
         AgentStatus status = worker_pool_this->_master_client->report(request, 
&result);
 
         if (status != DORIS_SUCCESS) {
-            DorisMetrics::report_disk_requests_failed.increment(1);
+            DorisMetrics::instance()->report_disk_requests_failed.increment(1);
             LOG(WARNING) << "finish report disk state failed. status:" << 
status << ", master host:"
                          << 
worker_pool_this->_master_info.network_address.hostname
                          << ", port:" << 
worker_pool_this->_master_info.network_address.port;
@@ -1174,15 +1174,15 @@ void* 
TaskWorkerPool::_report_tablet_worker_thread_callback(void* arg_this) {
 #endif
         }
         int64_t max_compaction_score =
-                
std::max(DorisMetrics::tablet_cumulative_max_compaction_score.value(),
-                         
DorisMetrics::tablet_base_max_compaction_score.value());
+                
std::max(DorisMetrics::instance()->tablet_cumulative_max_compaction_score.value(),
+                         
DorisMetrics::instance()->tablet_base_max_compaction_score.value());
         request.__set_tablet_max_compaction_score(max_compaction_score);
 
         TMasterResult result;
         status = worker_pool_this->_master_client->report(request, &result);
 
         if (status != DORIS_SUCCESS) {
-            DorisMetrics::report_all_tablets_requests_failed.increment(1);
+            
DorisMetrics::instance()->report_all_tablets_requests_failed.increment(1);
             LOG(WARNING) << "finish report olap table state failed. status:" 
<< status
                          << ", master host:"
                          << 
worker_pool_this->_master_info.network_address.hostname
diff --git a/be/src/common/daemon.cpp b/be/src/common/daemon.cpp
index db7838d..e8c9d77 100644
--- a/be/src/common/daemon.cpp
+++ b/be/src/common/daemon.cpp
@@ -134,48 +134,48 @@ void* calculate_metrics(void* dummy) {
     std::map<std::string, int64_t> lst_net_receive_bytes;
 
     while (true) {
-        DorisMetrics::metrics()->trigger_hook();
+        DorisMetrics::instance()->metrics()->trigger_hook();
 
         if (last_ts == -1L) {
             last_ts = GetCurrentTimeMicros() / 1000;
-            lst_push_bytes = DorisMetrics::push_request_write_bytes.value();
-            lst_query_bytes = DorisMetrics::query_scan_bytes.value();
-            
DorisMetrics::system_metrics()->get_disks_io_time(&lst_disks_io_time);
-            
DorisMetrics::system_metrics()->get_network_traffic(&lst_net_send_bytes, 
&lst_net_receive_bytes);
+            lst_push_bytes = 
DorisMetrics::instance()->push_request_write_bytes.value();
+            lst_query_bytes = 
DorisMetrics::instance()->query_scan_bytes.value();
+            
DorisMetrics::instance()->system_metrics()->get_disks_io_time(&lst_disks_io_time);
+            
DorisMetrics::instance()->system_metrics()->get_network_traffic(&lst_net_send_bytes,
 &lst_net_receive_bytes);
         } else {
             int64_t current_ts = GetCurrentTimeMicros() / 1000;
             long interval = (current_ts - last_ts) / 1000;
             last_ts = current_ts;
 
             // 1. push bytes per second
-            int64_t current_push_bytes = 
DorisMetrics::push_request_write_bytes.value();
+            int64_t current_push_bytes = 
DorisMetrics::instance()->push_request_write_bytes.value();
             int64_t pps = (current_push_bytes - lst_push_bytes) / (interval + 
1);
-            DorisMetrics::push_request_write_bytes_per_second.set_value(
+            
DorisMetrics::instance()->push_request_write_bytes_per_second.set_value(
                 pps < 0 ? 0 : pps);
             lst_push_bytes = current_push_bytes;
 
             // 2. query bytes per second
-            int64_t current_query_bytes = 
DorisMetrics::query_scan_bytes.value();
+            int64_t current_query_bytes = 
DorisMetrics::instance()->query_scan_bytes.value();
             int64_t qps = (current_query_bytes - lst_query_bytes) / (interval 
+ 1);
-            DorisMetrics::query_scan_bytes_per_second.set_value(
+            DorisMetrics::instance()->query_scan_bytes_per_second.set_value(
                 qps < 0 ? 0 : qps);
             lst_query_bytes = current_query_bytes;
 
             // 3. max disk io util
-            DorisMetrics::max_disk_io_util_percent.set_value(
-                
DorisMetrics::system_metrics()->get_max_io_util(lst_disks_io_time, 15));
+            DorisMetrics::instance()->max_disk_io_util_percent.set_value(
+                
DorisMetrics::instance()->system_metrics()->get_max_io_util(lst_disks_io_time, 
15));
             // update lst map
-            
DorisMetrics::system_metrics()->get_disks_io_time(&lst_disks_io_time);
+            
DorisMetrics::instance()->system_metrics()->get_disks_io_time(&lst_disks_io_time);
 
             // 4. max network traffic
             int64_t max_send = 0;
             int64_t max_receive = 0;
-            DorisMetrics::system_metrics()->get_max_net_traffic(
+            DorisMetrics::instance()->system_metrics()->get_max_net_traffic(
                 lst_net_send_bytes, lst_net_receive_bytes, 15, &max_send, 
&max_receive);
-            DorisMetrics::max_network_send_bytes_rate.set_value(max_send);
-            
DorisMetrics::max_network_receive_bytes_rate.set_value(max_receive);
+            
DorisMetrics::instance()->max_network_send_bytes_rate.set_value(max_send);
+            
DorisMetrics::instance()->max_network_receive_bytes_rate.set_value(max_receive);
             // update lst map
-            
DorisMetrics::system_metrics()->get_network_traffic(&lst_net_send_bytes, 
&lst_net_receive_bytes);
+            
DorisMetrics::instance()->system_metrics()->get_network_traffic(&lst_net_send_bytes,
 &lst_net_receive_bytes);
         }
 
         sleep(15); // 15 seconds
@@ -205,7 +205,7 @@ static void init_doris_metrics(const 
std::vector<StorePath>& store_paths) {
         }
     }
     DorisMetrics::instance()->initialize(
-        "doris_be", paths, init_system_metrics, disk_devices, 
network_interfaces);
+        paths, init_system_metrics, disk_devices, network_interfaces);
 
     if (config::enable_metric_calculator) {
         pthread_t calculator_pid;
diff --git a/be/src/exec/broker_scan_node.cpp b/be/src/exec/broker_scan_node.cpp
index 8fba064..d7fc1b4 100644
--- a/be/src/exec/broker_scan_node.cpp
+++ b/be/src/exec/broker_scan_node.cpp
@@ -420,7 +420,7 @@ void BrokerScanNode::scanner_worker(int start_idx, int 
length) {
             _scan_ranges[start_idx + i].scan_range.broker_scan_range;
         status = scanner_scan(scan_range, scanner_expr_ctxs, 
partition_expr_ctxs, &counter);
         if (!status.ok()) {
-            LOG(WARNING) << "Scanner[" << start_idx + i << "] prcess failed. 
status="
+            LOG(WARNING) << "Scanner[" << start_idx + i << "] process failed. 
status="
                 << status.get_error_msg();
         }
     }
diff --git a/be/src/exec/hash_table.cpp b/be/src/exec/hash_table.cpp
index 706318a..eab95d4 100644
--- a/be/src/exec/hash_table.cpp
+++ b/be/src/exec/hash_table.cpp
@@ -67,12 +67,6 @@ HashTable::HashTable(const vector<ExprContext*>& 
build_expr_ctxs,
     _nodes = reinterpret_cast<uint8_t*>(malloc(_nodes_capacity * 
_node_byte_size));
     memset(_nodes, 0, _nodes_capacity * _node_byte_size);
 
-#if 0
-    if (DorisMetrics::hash_table_total_bytes() != NULL) {
-        DorisMetrics::hash_table_total_bytes()->increment(_nodes_capacity * 
_node_byte_size);
-    }
-#endif
-
     _mem_tracker->consume(_nodes_capacity * _node_byte_size);
     if (_mem_tracker->limit_exceeded()) {
         mem_limit_exceeded(_nodes_capacity * _node_byte_size);
@@ -87,11 +81,6 @@ void HashTable::close() {
     delete[] _expr_values_buffer;
     delete[] _expr_value_null_bits;
     free(_nodes);
-#if 0
-    if (DorisMetrics::hash_table_total_bytes() != NULL) {
-        DorisMetrics::hash_table_total_bytes()->increment(-_nodes_capacity * 
_node_byte_size);
-    }
-#endif
     _mem_tracker->release(_nodes_capacity * _node_byte_size);
     _mem_tracker->release(_buckets.size() * sizeof(Bucket));
 }
@@ -257,13 +246,7 @@ void HashTable::grow_node_array() {
     memset(new_nodes, 0, new_size);
     memcpy(new_nodes, _nodes, old_size);
     free(_nodes);
-    _nodes = new_nodes; 
-
-#if 0
-    if (DorisMetrics::hash_table_total_bytes() != NULL) {
-        DorisMetrics::hash_table_total_bytes()->increment(new_size - old_size);
-    }
-#endif
+    _nodes = new_nodes;
 
     _mem_tracker->consume(new_size - old_size);
     if (_mem_tracker->limit_exceeded()) {
diff --git a/be/src/exec/olap_scanner.cpp b/be/src/exec/olap_scanner.cpp
index fbf3bf3..e62a60c 100644
--- a/be/src/exec/olap_scanner.cpp
+++ b/be/src/exec/olap_scanner.cpp
@@ -477,8 +477,8 @@ void OlapScanner::update_counter() {
     COUNTER_UPDATE(_parent->_bitmap_index_filter_timer, 
_reader->stats().bitmap_index_filter_timer);
     COUNTER_UPDATE(_parent->_block_seek_counter, 
_reader->stats().block_seek_num);
 
-    DorisMetrics::query_scan_bytes.increment(_compressed_bytes_read);
-    DorisMetrics::query_scan_rows.increment(_raw_rows_read);
+    
DorisMetrics::instance()->query_scan_bytes.increment(_compressed_bytes_read);
+    DorisMetrics::instance()->query_scan_rows.increment(_raw_rows_read);
 
     _has_update_counter = true;
 }
diff --git a/be/src/exec/partitioned_hash_table.cc 
b/be/src/exec/partitioned_hash_table.cc
index 9c50754..c6484fc 100644
--- a/be/src/exec/partitioned_hash_table.cc
+++ b/be/src/exec/partitioned_hash_table.cc
@@ -466,9 +466,6 @@ void PartitionedHashTable::Close() {
   if ((num_buckets_ > LARGE_HT) || (num_probes_ > HEAVILY_USED)) VLOG(2) << 
PrintStats();
   for (auto& data_page : data_pages_) allocator_->Free(move(data_page));
   data_pages_.clear();
-  //if (DorisMetrics::hash_table_total_bytes() != NULL) {
-  //  
DorisMetrics::hash_table_total_bytes()->increment(-total_data_page_size_);
-  //}
   if (bucket_allocation_ != nullptr) 
allocator_->Free(move(bucket_allocation_));
 }
 
@@ -546,7 +543,6 @@ bool PartitionedHashTable::GrowNodeArray(Status* status) {
   if (!status->ok() || allocation == nullptr) return false;
   next_node_ = reinterpret_cast<DuplicateNode*>(allocation->data());
   data_pages_.push_back(std::move(allocation));
-  //DorisMetrics::hash_table_total_bytes()->increment(DATA_PAGE_SIZE);
   node_remaining_current_page_ = DATA_PAGE_SIZE / sizeof(DuplicateNode);
   total_data_page_size_ += DATA_PAGE_SIZE;
   return true;
diff --git a/be/src/http/action/stream_load.cpp 
b/be/src/http/action/stream_load.cpp
index 9df80c6..4686d0d 100644
--- a/be/src/http/action/stream_load.cpp
+++ b/be/src/http/action/stream_load.cpp
@@ -85,13 +85,13 @@ static bool 
is_format_support_streaming(TFileFormatType::type format) {
 }
 
 StreamLoadAction::StreamLoadAction(ExecEnv* exec_env) : _exec_env(exec_env) {
-    DorisMetrics::metrics()->register_metric("streaming_load_requests_total",
+    
DorisMetrics::instance()->metrics()->register_metric("streaming_load_requests_total",
                                             &k_streaming_load_requests_total);
-    DorisMetrics::metrics()->register_metric("streaming_load_bytes",
+    
DorisMetrics::instance()->metrics()->register_metric("streaming_load_bytes",
                                             &k_streaming_load_bytes);
-    DorisMetrics::metrics()->register_metric("streaming_load_duration_ms",
+    
DorisMetrics::instance()->metrics()->register_metric("streaming_load_duration_ms",
                                             &k_streaming_load_duration_ms);
-    
DorisMetrics::metrics()->register_metric("streaming_load_current_processing",
+    
DorisMetrics::instance()->metrics()->register_metric("streaming_load_current_processing",
                                             
&k_streaming_load_current_processing);
 }
 
diff --git a/be/src/olap/base_compaction.cpp b/be/src/olap/base_compaction.cpp
index 322eeb6..fe244d9 100644
--- a/be/src/olap/base_compaction.cpp
+++ b/be/src/olap/base_compaction.cpp
@@ -50,8 +50,8 @@ OLAPStatus BaseCompaction::compact() {
     RETURN_NOT_OK(gc_unused_rowsets());
 
     // 5. add metric to base compaction
-    
DorisMetrics::base_compaction_deltas_total.increment(_input_rowsets.size());
-    DorisMetrics::base_compaction_bytes_total.increment(_input_rowsets_size);
+    
DorisMetrics::instance()->base_compaction_deltas_total.increment(_input_rowsets.size());
+    
DorisMetrics::instance()->base_compaction_bytes_total.increment(_input_rowsets_size);
 
     return OLAP_SUCCESS;
 }
diff --git a/be/src/olap/cumulative_compaction.cpp 
b/be/src/olap/cumulative_compaction.cpp
index 5aa6a8d..a96e8f4 100755
--- a/be/src/olap/cumulative_compaction.cpp
+++ b/be/src/olap/cumulative_compaction.cpp
@@ -58,8 +58,8 @@ OLAPStatus CumulativeCompaction::compact() {
     RETURN_NOT_OK(gc_unused_rowsets());
 
     // 7. add metric to cumulative compaction
-    
DorisMetrics::cumulative_compaction_deltas_total.increment(_input_rowsets.size());
-    
DorisMetrics::cumulative_compaction_bytes_total.increment(_input_rowsets_size);
+    
DorisMetrics::instance()->cumulative_compaction_deltas_total.increment(_input_rowsets.size());
+    
DorisMetrics::instance()->cumulative_compaction_bytes_total.increment(_input_rowsets_size);
 
     return OLAP_SUCCESS;
 }
diff --git a/be/src/olap/fs/block_manager_metrics.cpp 
b/be/src/olap/fs/block_manager_metrics.cpp
index 446148e..dabc93d 100644
--- a/be/src/olap/fs/block_manager_metrics.cpp
+++ b/be/src/olap/fs/block_manager_metrics.cpp
@@ -24,16 +24,16 @@ namespace fs {
 namespace internal {
 
 BlockManagerMetrics::BlockManagerMetrics() {
-    blocks_open_reading = &DorisMetrics::blocks_open_reading;
-    blocks_open_writing = &DorisMetrics::blocks_open_writing;
+    blocks_open_reading = &DorisMetrics::instance()->blocks_open_reading;
+    blocks_open_writing = &DorisMetrics::instance()->blocks_open_writing;
 
-    total_readable_blocks = &DorisMetrics::readable_blocks_total;
-    total_writable_blocks = &DorisMetrics::writable_blocks_total;
-    total_blocks_created = &DorisMetrics::blocks_created_total;
-    total_blocks_deleted = &DorisMetrics::blocks_deleted_total;
-    total_bytes_read = &DorisMetrics::bytes_read_total;
-    total_bytes_written = &DorisMetrics::bytes_written_total;
-    total_disk_sync = &DorisMetrics::disk_sync_total;
+    total_readable_blocks = &DorisMetrics::instance()->readable_blocks_total;
+    total_writable_blocks = &DorisMetrics::instance()->writable_blocks_total;
+    total_blocks_created = &DorisMetrics::instance()->blocks_created_total;
+    total_blocks_deleted = &DorisMetrics::instance()->blocks_deleted_total;
+    total_bytes_read = &DorisMetrics::instance()->bytes_read_total;
+    total_bytes_written = &DorisMetrics::instance()->bytes_written_total;
+    total_disk_sync = &DorisMetrics::instance()->disk_sync_total;
 }
 
 } // namespace internal
diff --git a/be/src/olap/memtable.cpp b/be/src/olap/memtable.cpp
index a66df8f..2dd059b 100644
--- a/be/src/olap/memtable.cpp
+++ b/be/src/olap/memtable.cpp
@@ -125,8 +125,8 @@ OLAPStatus MemTable::flush() {
         }
         RETURN_NOT_OK(_rowset_writer->flush());
     }
-    DorisMetrics::memtable_flush_total.increment(1);
-    DorisMetrics::memtable_flush_duration_us.increment(duration_ns / 1000);
+    DorisMetrics::instance()->memtable_flush_total.increment(1);
+    DorisMetrics::instance()->memtable_flush_duration_us.increment(duration_ns 
/ 1000);
     return OLAP_SUCCESS;
 }
 
diff --git a/be/src/olap/olap_meta.cpp b/be/src/olap/olap_meta.cpp
index 22f7d7e..a912f4f 100755
--- a/be/src/olap/olap_meta.cpp
+++ b/be/src/olap/olap_meta.cpp
@@ -86,7 +86,7 @@ OLAPStatus OlapMeta::init() {
 }
 
 OLAPStatus OlapMeta::get(const int column_family_index, const std::string& 
key, std::string* value) {
-    DorisMetrics::meta_read_request_total.increment(1);
+    DorisMetrics::instance()->meta_read_request_total.increment(1);
     rocksdb::ColumnFamilyHandle* handle = _handles[column_family_index];
     int64_t duration_ns = 0;
     rocksdb::Status s;
@@ -94,7 +94,7 @@ OLAPStatus OlapMeta::get(const int column_family_index, const 
std::string& key,
         SCOPED_RAW_TIMER(&duration_ns);
         s = _db->Get(ReadOptions(), handle, Slice(key), value);
     }
-    DorisMetrics::meta_read_request_duration_us.increment(duration_ns / 1000);
+    
DorisMetrics::instance()->meta_read_request_duration_us.increment(duration_ns / 
1000);
     if (s.IsNotFound()) {
         return OLAP_ERR_META_KEY_NOT_FOUND;
     } else if (!s.ok()) {
@@ -105,7 +105,7 @@ OLAPStatus OlapMeta::get(const int column_family_index, 
const std::string& key,
 }
 
 OLAPStatus OlapMeta::put(const int column_family_index, const std::string& 
key, const std::string& value) {
-    DorisMetrics::meta_write_request_total.increment(1);
+    DorisMetrics::instance()->meta_write_request_total.increment(1);
     rocksdb::ColumnFamilyHandle* handle = _handles[column_family_index];
     int64_t duration_ns = 0;
     rocksdb::Status s;
@@ -115,7 +115,7 @@ OLAPStatus OlapMeta::put(const int column_family_index, 
const std::string& key,
         write_options.sync = config::sync_tablet_meta;
         s = _db->Put(write_options, handle, Slice(key), Slice(value));
     }
-    DorisMetrics::meta_write_request_duration_us.increment(duration_ns / 1000);
+    
DorisMetrics::instance()->meta_write_request_duration_us.increment(duration_ns 
/ 1000);
     if (!s.ok()) {
         LOG(WARNING) << "rocks db put key:" << key << " failed, reason:" << 
s.ToString();
         return OLAP_ERR_META_PUT;
@@ -124,7 +124,7 @@ OLAPStatus OlapMeta::put(const int column_family_index, 
const std::string& key,
 }
 
 OLAPStatus OlapMeta::remove(const int column_family_index, const std::string& 
key) {
-    DorisMetrics::meta_write_request_total.increment(1);
+    DorisMetrics::instance()->meta_write_request_total.increment(1);
     rocksdb::ColumnFamilyHandle* handle = _handles[column_family_index];
     rocksdb::Status s;
     int64_t duration_ns = 0;
@@ -134,7 +134,7 @@ OLAPStatus OlapMeta::remove(const int column_family_index, 
const std::string& ke
         write_options.sync = config::sync_tablet_meta;
         s = _db->Delete(write_options, handle, Slice(key));
     }
-    DorisMetrics::meta_write_request_duration_us.increment(duration_ns / 1000);
+    
DorisMetrics::instance()->meta_write_request_duration_us.increment(duration_ns 
/ 1000);
     if (!s.ok()) {
         LOG(WARNING) << "rocks db delete key:" << key << " failed, reason:" << 
s.ToString();
         return OLAP_ERR_META_DELETE;
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp 
b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index 16a1ae8..cbb4024 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -124,7 +124,7 @@ Status SegmentIterator::init(const StorageReadOptions& 
opts) {
 }
 
 Status SegmentIterator::_init() {
-    DorisMetrics::segment_read_total.increment(1);
+    DorisMetrics::instance()->segment_read_total.increment(1);
     // get file handle from file descriptor of segment
     fs::BlockManager* block_mgr = fs::fs_util::block_manager();
     RETURN_IF_ERROR(block_mgr->open_block(_segment->_fname, &_rblock));
@@ -139,7 +139,7 @@ Status SegmentIterator::_init() {
 }
 
 Status SegmentIterator::_get_row_ranges_by_keys() {
-    DorisMetrics::segment_row_total.increment(num_rows());
+    DorisMetrics::instance()->segment_row_total.increment(num_rows());
 
     // fast path for empty segment or empty key ranges
     if (_row_bitmap.isEmpty() || _opts.key_ranges.empty()) {
@@ -167,7 +167,7 @@ Status SegmentIterator::_get_row_ranges_by_keys() {
     }
     // pre-condition: _row_ranges == [0, num_rows)
     _row_bitmap = RowRanges::ranges_to_roaring(result_ranges);
-    
DorisMetrics::segment_rows_by_short_key.increment(_row_bitmap.cardinality());
+    
DorisMetrics::instance()->segment_rows_by_short_key.increment(_row_bitmap.cardinality());
 
     return Status::OK();
 }
@@ -278,7 +278,7 @@ Status 
SegmentIterator::_get_row_ranges_from_conditions(RowRanges* condition_row
         // intersection different columns's row ranges to get final row ranges 
by zone map
         RowRanges::ranges_intersection(zone_map_row_ranges, column_row_ranges, 
&zone_map_row_ranges);
     }
-    
DorisMetrics::segment_rows_read_by_zone_map.increment(zone_map_row_ranges.count());
+    
DorisMetrics::instance()->segment_rows_read_by_zone_map.increment(zone_map_row_ranges.count());
     pre_size = condition_row_ranges->count();
     RowRanges::ranges_intersection(*condition_row_ranges, zone_map_row_ranges, 
condition_row_ranges);
     _opts.stats->rows_stats_filtered += (pre_size - 
condition_row_ranges->count());
diff --git a/be/src/olap/storage_engine.cpp b/be/src/olap/storage_engine.cpp
index 3f120b8..cabf6b5 100644
--- a/be/src/olap/storage_engine.cpp
+++ b/be/src/olap/storage_engine.cpp
@@ -512,14 +512,14 @@ void 
StorageEngine::_perform_cumulative_compaction(DataDir* data_dir) {
         return;
     }
 
-    DorisMetrics::cumulative_compaction_request_total.increment(1);
+    DorisMetrics::instance()->cumulative_compaction_request_total.increment(1);
     CumulativeCompaction cumulative_compaction(best_tablet);
 
     OLAPStatus res = cumulative_compaction.compact();
     if (res != OLAP_SUCCESS) {
         best_tablet->set_last_cumu_compaction_failure_time(UnixMillis());
         if (res != OLAP_ERR_CUMULATIVE_NO_SUITABLE_VERSIONS) {
-            DorisMetrics::cumulative_compaction_request_failed.increment(1);
+            
DorisMetrics::instance()->cumulative_compaction_request_failed.increment(1);
             LOG(WARNING) << "failed to do cumulative compaction. res=" << res
                         << ", table=" << best_tablet->full_name();
         }
@@ -535,13 +535,13 @@ void StorageEngine::_perform_base_compaction(DataDir* 
data_dir) {
         return;
     }
 
-    DorisMetrics::base_compaction_request_total.increment(1);
+    DorisMetrics::instance()->base_compaction_request_total.increment(1);
     BaseCompaction base_compaction(best_tablet);
     OLAPStatus res = base_compaction.compact();
     if (res != OLAP_SUCCESS) {
         best_tablet->set_last_base_compaction_failure_time(UnixMillis());
         if (res != OLAP_ERR_BE_NO_SUITABLE_VERSION) {
-            DorisMetrics::base_compaction_request_failed.increment(1);
+            
DorisMetrics::instance()->base_compaction_request_failed.increment(1);
             LOG(WARNING) << "failed to init base compaction. res=" << res
                         << ", table=" << best_tablet->full_name();
         }
diff --git a/be/src/olap/tablet_manager.cpp b/be/src/olap/tablet_manager.cpp
index 5239e1c..053d2f7 100644
--- a/be/src/olap/tablet_manager.cpp
+++ b/be/src/olap/tablet_manager.cpp
@@ -207,7 +207,7 @@ bool 
TabletManager::_check_tablet_id_exist_unlocked(TTabletId tablet_id) {
 
 OLAPStatus TabletManager::create_tablet(const TCreateTabletReq& request,
                                         std::vector<DataDir*> stores) {
-    DorisMetrics::create_tablet_requests_total.increment(1);
+    DorisMetrics::instance()->create_tablet_requests_total.increment(1);
 
     int64_t tablet_id = request.tablet_id;
     int32_t schema_hash = request.tablet_schema.schema_hash;
@@ -231,7 +231,7 @@ OLAPStatus TabletManager::create_tablet(const 
TCreateTabletReq& request,
         } else {
             LOG(WARNING) << "fail to create tablet. tablet exist but with 
different schema_hash. "
                     << "tablet_id=" << tablet_id << ", schema_hash=" << 
schema_hash;
-            DorisMetrics::create_tablet_requests_failed.increment(1);
+            
DorisMetrics::instance()->create_tablet_requests_failed.increment(1);
             return OLAP_ERR_CE_TABLET_ID_EXIST;
         }
     }
@@ -247,7 +247,7 @@ OLAPStatus TabletManager::create_tablet(const 
TCreateTabletReq& request,
                          << "new_tablet_id=" << tablet_id << ", 
new_schema_hash=" << schema_hash
                          << ", base_tablet_id=" << request.base_tablet_id
                          << ", base_schema_hash=" << request.base_schema_hash;
-            DorisMetrics::create_tablet_requests_failed.increment(1);
+            
DorisMetrics::instance()->create_tablet_requests_failed.increment(1);
             return OLAP_ERR_TABLE_CREATE_META_ERROR;
         }
         // If we are doing schema-change, we should use the same data dir
@@ -262,7 +262,7 @@ OLAPStatus TabletManager::create_tablet(const 
TCreateTabletReq& request,
             AlterTabletType::SCHEMA_CHANGE, request, is_schema_change, 
base_tablet.get(), stores);
     if (tablet == nullptr) {
         LOG(WARNING) << "fail to create tablet. tablet_id=" << 
request.tablet_id;
-        DorisMetrics::create_tablet_requests_failed.increment(1);
+        DorisMetrics::instance()->create_tablet_requests_failed.increment(1);
         return OLAP_ERR_CE_CMD_PARAMS_ERROR;
     }
 
@@ -459,7 +459,7 @@ OLAPStatus TabletManager::drop_tablet(
 OLAPStatus TabletManager::_drop_tablet_unlocked(
         TTabletId tablet_id, SchemaHash schema_hash, bool keep_files) {
     LOG(INFO) << "begin drop tablet. tablet_id=" << tablet_id << ", 
schema_hash=" << schema_hash;
-    DorisMetrics::drop_tablet_requests_total.increment(1);
+    DorisMetrics::instance()->drop_tablet_requests_total.increment(1);
 
     // Fetch tablet which need to be droped
     TabletSharedPtr to_drop_tablet = _get_tablet_unlocked(tablet_id, 
schema_hash);
@@ -762,9 +762,9 @@ TabletSharedPtr 
TabletManager::find_best_tablet_to_compaction(CompactionType com
         // TODO(lingbin): Remove 'max' from metric name, it would be 
misunderstood as the
         // biggest in history(like peak), but it is really just the value at 
current moment.
         if (compaction_type == CompactionType::BASE_COMPACTION) {
-            
DorisMetrics::tablet_base_max_compaction_score.set_value(highest_score);
+            
DorisMetrics::instance()->tablet_base_max_compaction_score.set_value(highest_score);
         } else {
-            
DorisMetrics::tablet_cumulative_max_compaction_score.set_value(highest_score);
+            
DorisMetrics::instance()->tablet_cumulative_max_compaction_score.set_value(highest_score);
         }
     }
     return best_tablet;
@@ -887,7 +887,7 @@ void TabletManager::release_schema_change_lock(TTabletId 
tablet_id) {
 }
 
 OLAPStatus TabletManager::report_tablet_info(TTabletInfo* tablet_info) {
-    DorisMetrics::report_tablet_requests_total.increment(1);
+    DorisMetrics::instance()->report_tablet_requests_total.increment(1);
     LOG(INFO) << "begin to process report tablet info."
               << "tablet_id=" << tablet_info->tablet_id
               << ", schema_hash=" << tablet_info->schema_hash;
@@ -915,7 +915,7 @@ OLAPStatus 
TabletManager::report_all_tablets_info(std::map<TTabletId, TTablet>*
     
StorageEngine::instance()->txn_manager()->build_expire_txn_map(&expire_txn_map);
     LOG(INFO) << "find expired transactions for " << expire_txn_map.size() << 
" tablets";
 
-    DorisMetrics::report_all_tablets_requests_total.increment(1);
+    DorisMetrics::instance()->report_all_tablets_requests_total.increment(1);
 
     for (int32 i = 0; i < _tablet_map_lock_shard_size; i++) {
         ReadLock rlock(&_tablet_map_lock_array[i]);
diff --git a/be/src/olap/task/engine_alter_tablet_task.cpp 
b/be/src/olap/task/engine_alter_tablet_task.cpp
index 057975c..2d76881 100644
--- a/be/src/olap/task/engine_alter_tablet_task.cpp
+++ b/be/src/olap/task/engine_alter_tablet_task.cpp
@@ -33,7 +33,7 @@ EngineAlterTabletTask::EngineAlterTabletTask(const 
TAlterTabletReqV2& request,
         _process_name(process_name) { }
 
 OLAPStatus EngineAlterTabletTask::execute() {
-    DorisMetrics::create_rollup_requests_total.increment(1);
+    DorisMetrics::instance()->create_rollup_requests_total.increment(1);
 
     SchemaChangeHandler handler;
     OLAPStatus res = handler.process_alter_tablet_v2(_alter_tablet_req);
@@ -44,7 +44,7 @@ OLAPStatus EngineAlterTabletTask::execute() {
                      << ", base_schema_hash=" << 
_alter_tablet_req.base_schema_hash
                      << ", new_tablet_id=" << _alter_tablet_req.new_tablet_id
                      << ", new_schema_hash=" << 
_alter_tablet_req.new_schema_hash;
-        DorisMetrics::create_rollup_requests_failed.increment(1);
+        DorisMetrics::instance()->create_rollup_requests_failed.increment(1);
         return res;
     }
 
diff --git a/be/src/olap/task/engine_batch_load_task.cpp 
b/be/src/olap/task/engine_batch_load_task.cpp
index d2076a4..9951777 100644
--- a/be/src/olap/task/engine_batch_load_task.cpp
+++ b/be/src/olap/task/engine_batch_load_task.cpp
@@ -294,7 +294,7 @@ OLAPStatus EngineBatchLoadTask::_push(const TPushReq& 
request,
 
     if (tablet_info_vec == nullptr) {
         LOG(WARNING) << "invalid output parameter which is nullptr pointer.";
-        DorisMetrics::push_requests_fail_total.increment(1);
+        DorisMetrics::instance()->push_requests_fail_total.increment(1);
         return OLAP_ERR_CE_CMD_PARAMS_ERROR;
     }
 
@@ -303,7 +303,7 @@ OLAPStatus EngineBatchLoadTask::_push(const TPushReq& 
request,
     if (tablet == nullptr) {
         LOG(WARNING) << "false to find tablet. tablet=" << request.tablet_id
                      << ", schema_hash=" << request.schema_hash;
-        DorisMetrics::push_requests_fail_total.increment(1);
+        DorisMetrics::instance()->push_requests_fail_total.increment(1);
         return OLAP_ERR_TABLE_NOT_FOUND;
     }
 
@@ -331,16 +331,16 @@ OLAPStatus EngineBatchLoadTask::_push(const TPushReq& 
request,
                      << "transaction_id=" << request.transaction_id
                      << " tablet=" << tablet->full_name()
                      << ", cost=" << PrettyPrinter::print(duration_ns, 
TUnit::TIME_NS);
-        DorisMetrics::push_requests_fail_total.increment(1);
+        DorisMetrics::instance()->push_requests_fail_total.increment(1);
     } else {
         LOG(INFO) << "success to push delta, " 
             << "transaction_id=" << request.transaction_id
             << " tablet=" << tablet->full_name()
             << ", cost=" << PrettyPrinter::print(duration_ns, TUnit::TIME_NS);
-        DorisMetrics::push_requests_success_total.increment(1);
-        DorisMetrics::push_request_duration_us.increment(duration_ns / 1000);
-        
DorisMetrics::push_request_write_bytes.increment(push_handler.write_bytes());
-        
DorisMetrics::push_request_write_rows.increment(push_handler.write_rows());
+        DorisMetrics::instance()->push_requests_success_total.increment(1);
+        
DorisMetrics::instance()->push_request_duration_us.increment(duration_ns / 
1000);
+        
DorisMetrics::instance()->push_request_write_bytes.increment(push_handler.write_bytes());
+        
DorisMetrics::instance()->push_request_write_rows.increment(push_handler.write_rows());
     }
     return res;
 }
@@ -349,7 +349,7 @@ OLAPStatus EngineBatchLoadTask::_delete_data(
         const TPushReq& request,
         vector<TTabletInfo>* tablet_info_vec) {
     LOG(INFO) << "begin to process delete data. request=" << 
ThriftDebugString(request);
-    DorisMetrics::delete_requests_total.increment(1);
+    DorisMetrics::instance()->delete_requests_total.increment(1);
 
     OLAPStatus res = OLAP_SUCCESS;
 
@@ -378,7 +378,7 @@ OLAPStatus EngineBatchLoadTask::_delete_data(
         OLAP_LOG_WARNING("fail to push empty version for delete data. "
                          "[res=%d tablet='%s']",
                          res, tablet->full_name().c_str());
-        DorisMetrics::delete_requests_failed.increment(1);
+        DorisMetrics::instance()->delete_requests_failed.increment(1);
         return res;
     }
 
diff --git a/be/src/olap/task/engine_storage_migration_task.cpp 
b/be/src/olap/task/engine_storage_migration_task.cpp
index 8e26fc7..47538c1 100644
--- a/be/src/olap/task/engine_storage_migration_task.cpp
+++ b/be/src/olap/task/engine_storage_migration_task.cpp
@@ -42,7 +42,7 @@ OLAPStatus 
EngineStorageMigrationTask::_storage_medium_migrate(
     LOG(INFO) << "begin to process storage media migrate. "
               << "tablet_id=" << tablet_id << ", schema_hash=" << schema_hash
               << ", dest_storage_medium=" << storage_medium;
-    DorisMetrics::storage_migrate_requests_total.increment(1);
+    DorisMetrics::instance()->storage_migrate_requests_total.increment(1);
 
     OLAPStatus res = OLAP_SUCCESS;
     TabletSharedPtr tablet = 
StorageEngine::instance()->tablet_manager()->get_tablet(tablet_id, schema_hash);
diff --git a/be/src/runtime/buffered_block_mgr2.cc 
b/be/src/runtime/buffered_block_mgr2.cc
index 2dfad5c..f5772c7 100644
--- a/be/src/runtime/buffered_block_mgr2.cc
+++ b/be/src/runtime/buffered_block_mgr2.cc
@@ -795,11 +795,6 @@ Status BufferedBlockMgr2::write_unpinned_block(Block* 
block) {
     _bytes_written_counter->update(block->_valid_data_len);
     ++_writes_issued;
     if (_writes_issued == 1) {
-#if 0
-        if (DorisMetrics::num_queries_spilled() != NULL) {
-            DorisMetrics::num_queries_spilled()->increment(1);
-        }
-#endif
     }
     return Status::OK();
 }
diff --git a/be/src/runtime/disk_io_mgr.cc b/be/src/runtime/disk_io_mgr.cc
index dfe7549..529d5a0 100644
--- a/be/src/runtime/disk_io_mgr.cc
+++ b/be/src/runtime/disk_io_mgr.cc
@@ -80,7 +80,6 @@ const int DiskIoMgr::DEFAULT_QUEUE_CAPACITY = 2;
 
 // This method is used to clean up resources upon eviction of a cache file 
handle.
 // void 
DiskIoMgr::HdfsCachedFileHandle::release(DiskIoMgr::HdfsCachedFileHandle** h) {
-//   DorisMetrics::IO_MGR_NUM_CACHED_FILE_HANDLES->increment(-1L);
 //   VLOG_FILE << "Cached file handle evicted, hdfsCloseFile() fid=" << 
(*h)->_hdfs_file;
 //   delete (*h);
 // }
@@ -719,24 +718,11 @@ char* DiskIoMgr::get_free_buffer(int64_t* buffer_size) {
     char* buffer = NULL;
     if (_free_buffers[idx].empty()) {
         ++_num_allocated_buffers;
-#if 0
-        if (DorisMetrics::io_mgr_num_buffers() != NULL) {
-            DorisMetrics::io_mgr_num_buffers()->increment(1L);
-        }
-        if (DorisMetrics::io_mgr_total_bytes() != NULL) {
-            DorisMetrics::io_mgr_total_bytes()->increment(*buffer_size);
-        }
-#endif
         // Update the process mem usage.  This is checked the next time we 
start
         // a read for the next reader (DiskIoMgr::GetNextScanRange)
         _process_mem_tracker->consume(*buffer_size);
         buffer = new char[*buffer_size];
     } else {
-#if 0
-        if (DorisMetrics::io_mgr_num_unused_buffers() != NULL) {
-            DorisMetrics::io_mgr_num_unused_buffers()->increment(-1L);
-        }
-#endif
         buffer = _free_buffers[idx].front();
         _free_buffers[idx].pop_front();
     }
@@ -761,17 +747,6 @@ void DiskIoMgr::gc_io_buffers() {
         }
         _free_buffers[idx].clear();
     }
-#if 0
-    if (DorisMetrics::io_mgr_num_buffers() != NULL) {
-        DorisMetrics::io_mgr_num_buffers()->increment(-buffers_freed);
-    }
-    if (DorisMetrics::io_mgr_total_bytes() != NULL) {
-        DorisMetrics::io_mgr_total_bytes()->increment(-bytes_freed);
-    }
-    if (DorisMetrics::io_mgr_num_unused_buffers() != NULL) {
-        DorisMetrics::io_mgr_num_unused_buffers()->update(0);
-    }
-#endif
 }
 
 void DiskIoMgr::return_free_buffer(BufferDescriptor* desc) {
@@ -789,23 +764,10 @@ void DiskIoMgr::return_free_buffer(char* buffer, int64_t 
buffer_size) {
     unique_lock<mutex> lock(_free_buffers_lock);
     if (!config::disable_mem_pools && _free_buffers[idx].size() < 
config::max_free_io_buffers) {
         _free_buffers[idx].push_back(buffer);
-#if 0
-        if (DorisMetrics::io_mgr_num_unused_buffers() != NULL) {
-            DorisMetrics::io_mgr_num_unused_buffers()->increment(1L);
-        }
-#endif
     } else {
         _process_mem_tracker->release(buffer_size);
         --_num_allocated_buffers;
         delete[] buffer;
-#if 0
-        if (DorisMetrics::io_mgr_num_buffers() != NULL) {
-            DorisMetrics::io_mgr_num_buffers()->increment(-1L);
-        }
-        if (DorisMetrics::io_mgr_total_bytes() != NULL) {
-            DorisMetrics::io_mgr_total_bytes()->increment(-buffer_size);
-        }
-#endif
     }
 }
 
@@ -1179,11 +1141,6 @@ Status DiskIoMgr::write_range_helper(FILE* file_handle, 
WriteRange* write_range)
                 << errno << " description=" << get_str_err_msg();
         return Status::InternalError(error_msg.str());
     }
-#if 0
-    if (DorisMetrics::io_mgr_bytes_written() != NULL) {
-        DorisMetrics::io_mgr_bytes_written()->increment(write_range->_len);
-    }
-#endif
 
     return Status::OK();
 }
@@ -1237,20 +1194,13 @@ Status DiskIoMgr::add_write_range(RequestContext* 
writer, WriteRange* write_rang
  *   // Check if a cached file handle exists and validate the mtime, if the 
mtime of the
  *   // cached handle is not matching the mtime of the requested file, reopen.
  *   if (detail::is_file_handle_caching_enabled() && 
_file_handle_cache.Pop(fname, &fh)) {
- *     DorisMetrics::IO_MGR_NUM_CACHED_FILE_HANDLES->increment(-1L);
  *     if (fh->mtime() == mtime) {
- *       DorisMetrics::IO_MGR_CACHED_FILE_HANDLES_HIT_RATIO->Update(1L);
- *       DorisMetrics::IO_MGR_CACHED_FILE_HANDLES_HIT_COUNT->increment(1L);
- *       DorisMetrics::IO_MGR_NUM_FILE_HANDLES_OUTSTANDING->increment(1L);
  *       return fh;
  *     }
  *     VLOG_FILE << "mtime mismatch, closing cached file handle. Closing 
file=" << fname;
  *     delete fh;
  *   }
  *
- *   // Update cache hit ratio
- *   DorisMetrics::IO_MGR_CACHED_FILE_HANDLES_HIT_RATIO->Update(0L);
- *   DorisMetrics::IO_MGR_CACHED_FILE_HANDLES_MISS_COUNT->increment(1L);
  *   fh = new HdfsCachedFileHandle(fs, fname, mtime);
  *
  *   // Check if the file handle was opened correctly
@@ -1260,7 +1210,6 @@ Status DiskIoMgr::add_write_range(RequestContext* writer, 
WriteRange* write_rang
  *     return NULL;
  *   }
  *
- *   DorisMetrics::IO_MGR_NUM_FILE_HANDLES_OUTSTANDING->increment(1L);
  *   return fh;
  * }
  */
@@ -1268,7 +1217,6 @@ Status DiskIoMgr::add_write_range(RequestContext* writer, 
WriteRange* write_rang
 /*
  * void DiskIoMgr::cache_or_close_file_handle(const char* fname,
  *     DiskIoMgr::HdfsCachedFileHandle* fid, bool close) {
- *   DorisMetrics::IO_MGR_NUM_FILE_HANDLES_OUTSTANDING->increment(-1L);
  *   // Try to unbuffer the handle, on filesystems that do not support this 
call a non-zero
  *   // return code indicates that the operation was not successful and thus 
the file is
  *   // closed.
@@ -1277,7 +1225,6 @@ Status DiskIoMgr::add_write_range(RequestContext* writer, 
WriteRange* write_rang
  *     // Clear read statistics before returning
  *     hdfsFileClearReadStatistics(fid->file());
  *     _file_handle_cache.Put(fname, fid);
- *     DorisMetrics::IO_MGR_NUM_CACHED_FILE_HANDLES->increment(1L);
  *   } else {
  *     if (close) {
  *       VLOG_FILE << "Closing file=" << fname;
diff --git a/be/src/runtime/disk_io_mgr_scan_range.cc 
b/be/src/runtime/disk_io_mgr_scan_range.cc
index 5fbaa53..7b6146f 100644
--- a/be/src/runtime/disk_io_mgr_scan_range.cc
+++ b/be/src/runtime/disk_io_mgr_scan_range.cc
@@ -313,11 +313,6 @@ Status DiskIoMgr::ScanRange::open() {
         return Status::InternalError(ss.str());
     }
     // }
-#if 0
-    if (DorisMetrics::io_mgr_num_open_files() != NULL) {
-        DorisMetrics::io_mgr_num_open_files()->increment(1L);
-    }
-#endif
     return Status::OK();
 }
 
@@ -363,11 +358,6 @@ void DiskIoMgr::ScanRange::close() {
         fclose(_local_file);
         _local_file = NULL;
     }
-#if 0
-    if (DorisMetrics::io_mgr_num_open_files() != NULL) {
-        DorisMetrics::io_mgr_num_open_files()->increment(-1L);
-    }
-#endif
 }
 
 /*
diff --git a/be/src/runtime/exec_env_init.cpp b/be/src/runtime/exec_env_init.cpp
index f0156a5..ea0b830 100644
--- a/be/src/runtime/exec_env_init.cpp
+++ b/be/src/runtime/exec_env_init.cpp
@@ -72,7 +72,7 @@ Status ExecEnv::init(ExecEnv* env, const 
std::vector<StorePath>& store_paths) {
 Status ExecEnv::_init(const std::vector<StorePath>& store_paths) {
     _store_paths = store_paths;
     _external_scan_context_mgr = new ExternalScanContextMgr(this);
-    _metrics = DorisMetrics::metrics();
+    _metrics = DorisMetrics::instance()->metrics();
     _stream_mgr = new DataStreamMgr();
     _result_mgr = new ResultBufferMgr();
     _result_queue_mgr = new ResultQueueMgr();
@@ -106,10 +106,10 @@ Status ExecEnv::_init(const std::vector<StorePath>& 
store_paths) {
     _small_file_mgr = new SmallFileMgr(this, config::small_file_dir);
     _plugin_mgr = new PluginMgr();
 
-    _backend_client_cache->init_metrics(DorisMetrics::metrics(), "backend");
-    _frontend_client_cache->init_metrics(DorisMetrics::metrics(), "frontend");
-    _broker_client_cache->init_metrics(DorisMetrics::metrics(), "broker");
-    _extdatasource_client_cache->init_metrics(DorisMetrics::metrics(), 
"extdatasource");
+    _backend_client_cache->init_metrics(DorisMetrics::instance()->metrics(), 
"backend");
+    _frontend_client_cache->init_metrics(DorisMetrics::instance()->metrics(), 
"frontend");
+    _broker_client_cache->init_metrics(DorisMetrics::instance()->metrics(), 
"broker");
+    
_extdatasource_client_cache->init_metrics(DorisMetrics::instance()->metrics(), 
"extdatasource");
     _result_mgr->init();
     _cgroups_mgr->init_cgroups();
     _etl_job_mgr->init();
@@ -182,7 +182,7 @@ Status ExecEnv::_init_mem_tracker() {
 
     LOG(INFO) << "Using global memory limit: " << 
PrettyPrinter::print(bytes_limit, TUnit::BYTES);
     RETURN_IF_ERROR(_disk_io_mgr->init(_mem_tracker));
-    RETURN_IF_ERROR(_tmp_file_mgr->init(DorisMetrics::metrics()));
+    RETURN_IF_ERROR(_tmp_file_mgr->init(DorisMetrics::instance()->metrics()));
 
     int64_t storage_cache_limit = ParseUtil::parse_mem_spec(
         config::storage_page_cache_limit, &is_percent);
diff --git a/be/src/runtime/fragment_mgr.cpp b/be/src/runtime/fragment_mgr.cpp
index c709d06..c461c0a 100644
--- a/be/src/runtime/fragment_mgr.cpp
+++ b/be/src/runtime/fragment_mgr.cpp
@@ -212,8 +212,8 @@ Status FragmentExecState::execute() {
         _executor.open();
         _executor.close();
     }
-    DorisMetrics::fragment_requests_total.increment(1);
-    DorisMetrics::fragment_request_duration_us.increment(duration_ns / 1000);
+    DorisMetrics::instance()->fragment_requests_total.increment(1);
+    
DorisMetrics::instance()->fragment_request_duration_us.increment(duration_ns / 
1000);
     return Status::OK();
 }
 
diff --git a/be/src/runtime/mem_pool.cpp b/be/src/runtime/mem_pool.cpp
index d3dab99..37ca197 100644
--- a/be/src/runtime/mem_pool.cpp
+++ b/be/src/runtime/mem_pool.cpp
@@ -40,7 +40,7 @@ uint32_t MemPool::k_zero_length_region_ 
alignas(std::max_align_t) = MEM_POOL_POI
 MemPool::ChunkInfo::ChunkInfo(const Chunk& chunk_)
         : chunk(chunk_),
         allocated_bytes(0) {
-    DorisMetrics::memory_pool_bytes_total.increment(chunk.size);
+    DorisMetrics::instance()->memory_pool_bytes_total.increment(chunk.size);
 }
 
 MemPool::~MemPool() {
@@ -50,7 +50,7 @@ MemPool::~MemPool() {
         ChunkAllocator::instance()->free(chunk.chunk);
     }
     mem_tracker_->release(total_bytes_released);
-    DorisMetrics::memory_pool_bytes_total.increment(-total_bytes_released);
+    
DorisMetrics::instance()->memory_pool_bytes_total.increment(-total_bytes_released);
 }
 
 void MemPool::clear() {
@@ -76,7 +76,7 @@ void MemPool::free_all() {
     total_reserved_bytes_ = 0;
 
     mem_tracker_->release(total_bytes_released);
-    DorisMetrics::memory_pool_bytes_total.increment(-total_bytes_released);
+    
DorisMetrics::instance()->memory_pool_bytes_total.increment(-total_bytes_released);
 }
 
 bool MemPool::find_chunk(size_t min_size, bool check_limits) {
diff --git a/be/src/runtime/memory/chunk_allocator.cpp 
b/be/src/runtime/memory/chunk_allocator.cpp
index 04484a4..e331ef3 100644
--- a/be/src/runtime/memory/chunk_allocator.cpp
+++ b/be/src/runtime/memory/chunk_allocator.cpp
@@ -46,7 +46,6 @@ static std::mutex s_mutex;
 ChunkAllocator* ChunkAllocator::instance() {
     std::lock_guard<std::mutex> l(s_mutex);
     if (_s_instance == nullptr) {
-        DorisMetrics::instance()->initialize("common_ut");
         CpuInfo::init();
         ChunkAllocator::init_instance(4096);
     }
@@ -104,7 +103,7 @@ void ChunkAllocator::init_instance(size_t reserve_limit) {
     _s_instance = new ChunkAllocator(reserve_limit);
 
 #define REGISTER_METIRC_WITH_NAME(name, metric) \
-    DorisMetrics::metrics()->register_metric(#name, &metric)
+    DorisMetrics::instance()->metrics()->register_metric(#name, &metric)
 
 #define REGISTER_METIRC_WITH_PREFIX(prefix, name) \
     REGISTER_METIRC_WITH_NAME(prefix##name, name)
diff --git a/be/src/runtime/memory/chunk_allocator.h 
b/be/src/runtime/memory/chunk_allocator.h
index 8ff7768..124e735 100644
--- a/be/src/runtime/memory/chunk_allocator.h
+++ b/be/src/runtime/memory/chunk_allocator.h
@@ -45,7 +45,7 @@ class ChunkArena;
 // ChunkArena will keep a separate free list for each chunk size. In common 
case, chunk will
 // be allocated from current core arena. In this case, there is no lock 
contention.
 //
-// Must call CpuInfo::init() and DorisMetrics::initialize() to achieve good 
performance
+// Must call CpuInfo::init() and DorisMetrics::instance()->initialize() to 
achieve good performance
 // before first object is created. And call init_instance() before use 
instance is called.
 class ChunkAllocator {
 public:
diff --git a/be/src/runtime/stream_load/stream_load_executor.cpp 
b/be/src/runtime/stream_load/stream_load_executor.cpp
index 14e17be..b0ef581 100644
--- a/be/src/runtime/stream_load/stream_load_executor.cpp
+++ b/be/src/runtime/stream_load/stream_load_executor.cpp
@@ -43,7 +43,7 @@ Status k_stream_load_plan_status;
 #endif
 
 Status StreamLoadExecutor::execute_plan_fragment(StreamLoadContext* ctx) {
-    DorisMetrics::txn_exec_plan_total.increment(1);
+    DorisMetrics::instance()->txn_exec_plan_total.increment(1);
 // submit this params
 #ifndef BE_TEST
     ctx->ref();
@@ -78,8 +78,8 @@ Status 
StreamLoadExecutor::execute_plan_fragment(StreamLoadContext* ctx) {
                     }
 
                     if (status.ok()) {
-                        
DorisMetrics::stream_receive_bytes_total.increment(ctx->receive_bytes);
-                        
DorisMetrics::stream_load_rows_total.increment(ctx->number_loaded_rows);
+                        
DorisMetrics::instance()->stream_receive_bytes_total.increment(ctx->receive_bytes);
+                        
DorisMetrics::instance()->stream_load_rows_total.increment(ctx->number_loaded_rows);
                     }
                 } else {
                     LOG(WARNING) << "fragment execute failed"
@@ -117,7 +117,7 @@ Status 
StreamLoadExecutor::execute_plan_fragment(StreamLoadContext* ctx) {
 }
 
 Status StreamLoadExecutor::begin_txn(StreamLoadContext* ctx) {
-    DorisMetrics::txn_begin_request_total.increment(1);
+    DorisMetrics::instance()->txn_begin_request_total.increment(1);
 
     TLoadTxnBeginRequest request;
     set_request_auth(&request, ctx->auth);
@@ -158,7 +158,7 @@ Status StreamLoadExecutor::begin_txn(StreamLoadContext* 
ctx) {
 }
 
 Status StreamLoadExecutor::commit_txn(StreamLoadContext* ctx) {
-    DorisMetrics::txn_commit_request_total.increment(1);
+    DorisMetrics::instance()->txn_commit_request_total.increment(1);
 
     TLoadTxnCommitRequest request;
     set_request_auth(&request, ctx->auth);
@@ -206,7 +206,7 @@ Status StreamLoadExecutor::commit_txn(StreamLoadContext* 
ctx) {
 }
 
 void StreamLoadExecutor::rollback_txn(StreamLoadContext* ctx) {
-    DorisMetrics::txn_rollback_request_total.increment(1);
+    DorisMetrics::instance()->txn_rollback_request_total.increment(1);
 
     TNetworkAddress master_addr = _exec_env->master_info()->network_address;
     TLoadTxnRollbackRequest request;
diff --git a/be/src/runtime/test_env.cc b/be/src/runtime/test_env.cc
index b0d5048..1369298 100644
--- a/be/src/runtime/test_env.cc
+++ b/be/src/runtime/test_env.cc
@@ -28,7 +28,6 @@ boost::scoped_ptr<MetricRegistry> TestEnv::_s_static_metrics;
 TestEnv::TestEnv() {
     if (_s_static_metrics == NULL) {
         _s_static_metrics.reset(new MetricRegistry("test_env"));
-        // DorisMetrics::create_metrics(_s_static_metrics.get());
     }
     _exec_env.reset(new ExecEnv());
     // _exec_env->init_for_tests();
diff --git a/be/src/service/http_service.cpp b/be/src/service/http_service.cpp
index caf6a2c..b1b30bf 100644
--- a/be/src/service/http_service.cpp
+++ b/be/src/service/http_service.cpp
@@ -90,7 +90,7 @@ Status HttpService::start() {
 
     // register metrics
     {
-        auto action = new MetricsAction(DorisMetrics::metrics());
+        auto action = new MetricsAction(DorisMetrics::instance()->metrics());
         _ev_http_server->register_handler(HttpMethod::GET, "/metrics", action);
     }
 
diff --git a/be/src/util/doris_metrics.cpp b/be/src/util/doris_metrics.cpp
index 8b141d8..36c3e3b 100644
--- a/be/src/util/doris_metrics.cpp
+++ b/be/src/util/doris_metrics.cpp
@@ -28,148 +28,8 @@
 
 namespace doris {
 
-const char* DorisMetrics::_s_hook_name = "doris_metrics";
-
-DorisMetrics DorisMetrics::_s_doris_metrics;
-
-// counters
-IntCounter DorisMetrics::fragment_requests_total;
-IntCounter DorisMetrics::fragment_request_duration_us;
-IntCounter DorisMetrics::http_requests_total;
-IntCounter DorisMetrics::http_request_duration_us;
-IntCounter DorisMetrics::http_request_send_bytes;
-IntCounter DorisMetrics::query_scan_bytes;
-IntCounter DorisMetrics::query_scan_rows;
-IntCounter DorisMetrics::ranges_processed_total;
-IntCounter DorisMetrics::push_requests_success_total;
-IntCounter DorisMetrics::push_requests_fail_total;
-IntCounter DorisMetrics::push_request_duration_us;
-IntCounter DorisMetrics::push_request_write_bytes;
-IntCounter DorisMetrics::push_request_write_rows;
-IntCounter DorisMetrics::create_tablet_requests_total;
-IntCounter DorisMetrics::create_tablet_requests_failed;
-IntCounter DorisMetrics::drop_tablet_requests_total;
-
-IntCounter DorisMetrics::report_all_tablets_requests_total;
-IntCounter DorisMetrics::report_all_tablets_requests_failed;
-IntCounter DorisMetrics::report_tablet_requests_total;
-IntCounter DorisMetrics::report_tablet_requests_failed;
-IntCounter DorisMetrics::report_disk_requests_total;
-IntCounter DorisMetrics::report_disk_requests_failed;
-IntCounter DorisMetrics::report_task_requests_total;
-IntCounter DorisMetrics::report_task_requests_failed;
-
-IntCounter DorisMetrics::schema_change_requests_total;
-IntCounter DorisMetrics::schema_change_requests_failed;
-IntCounter DorisMetrics::create_rollup_requests_total;
-IntCounter DorisMetrics::create_rollup_requests_failed;
-IntCounter DorisMetrics::storage_migrate_requests_total;
-IntCounter DorisMetrics::delete_requests_total;
-IntCounter DorisMetrics::delete_requests_failed;
-IntCounter DorisMetrics::clone_requests_total;
-IntCounter DorisMetrics::clone_requests_failed;
-
-IntCounter DorisMetrics::finish_task_requests_total;
-IntCounter DorisMetrics::finish_task_requests_failed;
-
-IntCounter DorisMetrics::base_compaction_deltas_total;
-IntCounter DorisMetrics::base_compaction_bytes_total;
-IntCounter DorisMetrics::base_compaction_request_total;
-IntCounter DorisMetrics::base_compaction_request_failed;
-IntCounter DorisMetrics::cumulative_compaction_deltas_total;
-IntCounter DorisMetrics::cumulative_compaction_bytes_total;
-IntCounter DorisMetrics::cumulative_compaction_request_total;
-IntCounter DorisMetrics::cumulative_compaction_request_failed;
-
-IntCounter DorisMetrics::publish_task_request_total;
-IntCounter DorisMetrics::publish_task_failed_total;
-
-IntCounter DorisMetrics::meta_write_request_total;
-IntCounter DorisMetrics::meta_write_request_duration_us;
-IntCounter DorisMetrics::meta_read_request_total;
-IntCounter DorisMetrics::meta_read_request_duration_us;
-
-IntCounter DorisMetrics::segment_read_total;
-IntCounter DorisMetrics::segment_row_total;
-IntCounter DorisMetrics::segment_rows_by_short_key;
-IntCounter DorisMetrics::segment_rows_read_by_zone_map;
-
-IntCounter DorisMetrics::txn_begin_request_total;
-IntCounter DorisMetrics::txn_commit_request_total;
-IntCounter DorisMetrics::txn_rollback_request_total;
-IntCounter DorisMetrics::txn_exec_plan_total;
-IntCounter DorisMetrics::stream_receive_bytes_total;
-IntCounter DorisMetrics::stream_load_rows_total;
-
-IntCounter DorisMetrics::memtable_flush_total;
-IntCounter DorisMetrics::memtable_flush_duration_us;
-
-// gauges
-IntGauge DorisMetrics::memory_pool_bytes_total;
-IntGauge DorisMetrics::process_thread_num;
-IntGauge DorisMetrics::process_fd_num_used;
-IntGauge DorisMetrics::process_fd_num_limit_soft;
-IntGauge DorisMetrics::process_fd_num_limit_hard;
-IntGaugeMetricsMap DorisMetrics::disks_total_capacity;
-IntGaugeMetricsMap DorisMetrics::disks_avail_capacity;
-IntGaugeMetricsMap DorisMetrics::disks_data_used_capacity;
-IntGaugeMetricsMap DorisMetrics::disks_state;
-
-IntGauge DorisMetrics::tablet_cumulative_max_compaction_score;
-IntGauge DorisMetrics::tablet_base_max_compaction_score;
-
-IntGauge DorisMetrics::push_request_write_bytes_per_second;
-IntGauge DorisMetrics::query_scan_bytes_per_second;
-IntGauge DorisMetrics::max_disk_io_util_percent;
-IntGauge DorisMetrics::max_network_send_bytes_rate;
-IntGauge DorisMetrics::max_network_receive_bytes_rate;
-
-IntCounter DorisMetrics::readable_blocks_total;
-IntCounter DorisMetrics::writable_blocks_total;
-IntCounter DorisMetrics::blocks_created_total;
-IntCounter DorisMetrics::blocks_deleted_total;
-IntCounter DorisMetrics::bytes_read_total;
-IntCounter DorisMetrics::bytes_written_total;
-IntCounter DorisMetrics::disk_sync_total;
-IntGauge DorisMetrics::blocks_open_reading;
-IntGauge DorisMetrics::blocks_open_writing;
-
-IntCounter DorisMetrics::blocks_push_remote_duration_us;
-
-UIntGauge DorisMetrics::rowset_count_generated_and_in_use;
-UIntGauge DorisMetrics::unused_rowsets_count;
-UIntGauge DorisMetrics::broker_count;
-UIntGauge DorisMetrics::data_stream_receiver_count;
-UIntGauge DorisMetrics::fragment_endpoint_count;
-UIntGauge DorisMetrics::active_scan_context_count;
-UIntGauge DorisMetrics::plan_fragment_count;
-UIntGauge DorisMetrics::load_channel_count;
-UIntGauge DorisMetrics::result_buffer_block_count;
-UIntGauge DorisMetrics::result_block_queue_count;
-UIntGauge DorisMetrics::routine_load_task_count;
-UIntGauge DorisMetrics::small_file_cache_count;
-UIntGauge DorisMetrics::stream_load_pipe_count;
-UIntGauge DorisMetrics::brpc_endpoint_stub_count;
-UIntGauge DorisMetrics::tablet_writer_count;
-
-DorisMetrics::~DorisMetrics() {
-    delete _system_metrics;
-    delete _metrics;
-}
-
-void DorisMetrics::initialize(
-        const std::string& name,
-        const std::vector<std::string>& paths,
-        bool init_system_metrics,
-        const std::set<std::string>& disk_devices,
-        const std::vector<std::string>& network_interfaces) {
-    if (_metrics != nullptr) {
-        return;
-    }
-    DCHECK(_metrics == nullptr && _system_metrics == nullptr);
-    _metrics = new MetricRegistry(name);
-#define REGISTER_DORIS_METRIC(name) _metrics->register_metric(#name, &name)
-
+DorisMetrics::DorisMetrics() : _name("doris_be"), _hook_name("doris_metrics"), 
_metrics(_name) {
+#define REGISTER_DORIS_METRIC(name) _metrics.register_metric(#name, &name)
     // You can put DorisMetrics's metrics initial code here
     REGISTER_DORIS_METRIC(fragment_requests_total);
     REGISTER_DORIS_METRIC(fragment_request_duration_us);
@@ -184,10 +44,10 @@ void DorisMetrics::initialize(
     REGISTER_DORIS_METRIC(memtable_flush_duration_us);
 
     // push request
-    _metrics->register_metric(
+    _metrics.register_metric(
         "push_requests_total", MetricLabels().add("status", "SUCCESS"),
         &push_requests_success_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "push_requests_total", MetricLabels().add("status", "FAIL"),
         &push_requests_fail_total);
     REGISTER_DORIS_METRIC(push_request_duration_us);
@@ -195,7 +55,7 @@ void DorisMetrics::initialize(
     REGISTER_DORIS_METRIC(push_request_write_rows);
 
 #define REGISTER_ENGINE_REQUEST_METRIC(type, status, metric) \
-    _metrics->register_metric( \
+    _metrics.register_metric( \
         "engine_requests_total", MetricLabels().add("type", 
#type).add("status", #status), &metric)
 
     REGISTER_ENGINE_REQUEST_METRIC(create_tablet, total, 
create_tablet_requests_total);
@@ -232,62 +92,62 @@ void DorisMetrics::initialize(
     REGISTER_ENGINE_REQUEST_METRIC(publish, total, publish_task_request_total);
     REGISTER_ENGINE_REQUEST_METRIC(publish, failed, publish_task_failed_total);
 
-    _metrics->register_metric(
+    _metrics.register_metric(
         "compaction_deltas_total", MetricLabels().add("type", "base"),
         &base_compaction_deltas_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "compaction_deltas_total", MetricLabels().add("type", "cumulative"),
         &cumulative_compaction_deltas_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "compaction_bytes_total", MetricLabels().add("type", "base"),
         &base_compaction_bytes_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "compaction_bytes_total", MetricLabels().add("type", "cumulative"),
         &cumulative_compaction_bytes_total);
 
-    _metrics->register_metric(
+    _metrics.register_metric(
         "meta_request_total", MetricLabels().add("type", "write"),
         &meta_write_request_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "meta_request_total", MetricLabels().add("type", "read"),
         &meta_read_request_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "meta_request_duration", MetricLabels().add("type", "write"),
         &meta_write_request_duration_us);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "meta_request_duration", MetricLabels().add("type", "read"),
         &meta_read_request_duration_us);
 
-    _metrics->register_metric(
+    _metrics.register_metric(
         "segment_read", MetricLabels().add("type", "segment_total_read_times"),
         &segment_read_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "segment_read", MetricLabels().add("type", "segment_total_row_num"),
         &segment_row_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "segment_read", MetricLabels().add("type", 
"segment_rows_by_short_key"),
         &segment_rows_by_short_key);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "segment_read", MetricLabels().add("type", 
"segment_rows_read_by_zone_map"),
         &segment_rows_read_by_zone_map);
 
-    _metrics->register_metric(
+    _metrics.register_metric(
         "txn_request", MetricLabels().add("type", "begin"),
         &txn_begin_request_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "txn_request", MetricLabels().add("type", "commit"),
         &txn_commit_request_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "txn_request", MetricLabels().add("type", "rollback"),
         &txn_rollback_request_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "txn_request", MetricLabels().add("type", "exec"),
         &txn_exec_plan_total);
 
-    _metrics->register_metric(
+    _metrics.register_metric(
         "stream_load", MetricLabels().add("type", "receive_bytes"),
         &stream_receive_bytes_total);
-    _metrics->register_metric(
+    _metrics.register_metric(
         "stream_load", MetricLabels().add("type", "load_rows"),
         &stream_load_rows_total);
 
@@ -301,25 +161,13 @@ void DorisMetrics::initialize(
     REGISTER_DORIS_METRIC(tablet_cumulative_max_compaction_score);
     REGISTER_DORIS_METRIC(tablet_base_max_compaction_score);
 
-    // disk usage
-    for (auto& path : paths) {
-        IntGauge* gauge = disks_total_capacity.set_key(path);
-        _metrics->register_metric("disks_total_capacity", 
MetricLabels().add("path", path), gauge);
-        gauge = disks_avail_capacity.set_key(path);
-        _metrics->register_metric("disks_avail_capacity", 
MetricLabels().add("path", path), gauge);
-        gauge = disks_data_used_capacity.set_key(path);
-        _metrics->register_metric("disks_data_used_capacity", 
MetricLabels().add("path", path), gauge);
-        gauge = disks_state.set_key(path);
-        _metrics->register_metric("disks_state", MetricLabels().add("path", 
path), gauge);
-    }
-
     REGISTER_DORIS_METRIC(push_request_write_bytes_per_second);
     REGISTER_DORIS_METRIC(query_scan_bytes_per_second);
     REGISTER_DORIS_METRIC(max_disk_io_util_percent);
     REGISTER_DORIS_METRIC(max_network_send_bytes_rate);
     REGISTER_DORIS_METRIC(max_network_receive_bytes_rate);
 
-    _metrics->register_hook(_s_hook_name, std::bind(&DorisMetrics::update, 
this));
+    _metrics.register_hook(_hook_name, std::bind(&DorisMetrics::_update, 
this));
 
     REGISTER_DORIS_METRIC(readable_blocks_total);
     REGISTER_DORIS_METRIC(writable_blocks_total);
@@ -330,16 +178,32 @@ void DorisMetrics::initialize(
     REGISTER_DORIS_METRIC(disk_sync_total);
     REGISTER_DORIS_METRIC(blocks_open_reading);
     REGISTER_DORIS_METRIC(blocks_open_writing);
-
     REGISTER_DORIS_METRIC(blocks_push_remote_duration_us);
+}
+
+void DorisMetrics::initialize(
+        const std::vector<std::string>& paths,
+        bool init_system_metrics,
+        const std::set<std::string>& disk_devices,
+        const std::vector<std::string>& network_interfaces) {
+    // disk usage
+    for (auto& path : paths) {
+        IntGauge* gauge = disks_total_capacity.set_key(path);
+        _metrics.register_metric("disks_total_capacity", 
MetricLabels().add("path", path), gauge);
+        gauge = disks_avail_capacity.set_key(path);
+        _metrics.register_metric("disks_avail_capacity", 
MetricLabels().add("path", path), gauge);
+        gauge = disks_data_used_capacity.set_key(path);
+        _metrics.register_metric("disks_data_used_capacity", 
MetricLabels().add("path", path), gauge);
+        gauge = disks_state.set_key(path);
+        _metrics.register_metric("disks_state", MetricLabels().add("path", 
path), gauge);
+    }
 
     if (init_system_metrics) {
-        _system_metrics = new SystemMetrics();
-        _system_metrics->install(_metrics, disk_devices, network_interfaces);
+        _system_metrics.install(&_metrics, disk_devices, network_interfaces);
     }
 }
 
-void DorisMetrics::update() {
+void DorisMetrics::_update() {
     _update_process_thread_num();
     _update_process_fd_num();
 }
diff --git a/be/src/util/doris_metrics.h b/be/src/util/doris_metrics.h
index 7548c0e..7a3c0bc 100644
--- a/be/src/util/doris_metrics.h
+++ b/be/src/util/doris_metrics.h
@@ -24,11 +24,10 @@
 #include <unordered_map>
 
 #include "util/metrics.h"
+#include "util/system_metrics.h"
 
 namespace doris {
 
-class SystemMetrics;
-
 class IntGaugeMetricsMap {
 public:
     void set_metric(const std::string& key, int64_t val) {
@@ -48,174 +47,176 @@ private:
 };
 
 #define REGISTER_GAUGE_DORIS_METRIC(name, func) \
-  DorisMetrics::metrics()->register_metric(#name, &DorisMetrics::name); \
-  DorisMetrics::metrics()->register_hook(#name, [&]() { \
-      DorisMetrics::name.set_value(func());  \
+  DorisMetrics::instance()->metrics()->register_metric(#name, 
&DorisMetrics::instance()->name); \
+  DorisMetrics::instance()->metrics()->register_hook(#name, [&]() { \
+      DorisMetrics::instance()->name.set_value(func());  \
 });
 
 class DorisMetrics {
 public:
     // counters
-    static IntCounter fragment_requests_total;
-    static IntCounter fragment_request_duration_us;
-    static IntCounter http_requests_total;
-    static IntCounter http_request_duration_us;
-    static IntCounter http_request_send_bytes;
-    static IntCounter query_scan_bytes;
-    static IntCounter query_scan_rows;
-    static IntCounter ranges_processed_total;
-    static IntCounter push_requests_success_total;
-    static IntCounter push_requests_fail_total;
-    static IntCounter push_request_duration_us;
-    static IntCounter push_request_write_bytes;
-    static IntCounter push_request_write_rows;
-    static IntCounter create_tablet_requests_total;
-    static IntCounter create_tablet_requests_failed;
-    static IntCounter drop_tablet_requests_total;
-
-    static IntCounter report_all_tablets_requests_total;
-    static IntCounter report_all_tablets_requests_failed;
-    static IntCounter report_tablet_requests_total;
-    static IntCounter report_tablet_requests_failed;
-    static IntCounter report_disk_requests_total;
-    static IntCounter report_disk_requests_failed;
-    static IntCounter report_task_requests_total;
-    static IntCounter report_task_requests_failed;
-
-    static IntCounter schema_change_requests_total;
-    static IntCounter schema_change_requests_failed;
-    static IntCounter create_rollup_requests_total;
-    static IntCounter create_rollup_requests_failed;
-    static IntCounter storage_migrate_requests_total;
-    static IntCounter delete_requests_total;
-    static IntCounter delete_requests_failed;
-    static IntCounter clone_requests_total;
-    static IntCounter clone_requests_failed;
-
-    static IntCounter finish_task_requests_total;
-    static IntCounter finish_task_requests_failed;
-
-    static IntCounter base_compaction_request_total;
-    static IntCounter base_compaction_request_failed;
-    static IntCounter cumulative_compaction_request_total;
-    static IntCounter cumulative_compaction_request_failed;
-
-    static IntCounter base_compaction_deltas_total;
-    static IntCounter base_compaction_bytes_total;
-    static IntCounter cumulative_compaction_deltas_total;
-    static IntCounter cumulative_compaction_bytes_total;
-
-    static IntCounter publish_task_request_total;
-    static IntCounter publish_task_failed_total;
-
-    static IntCounter meta_write_request_total;
-    static IntCounter meta_write_request_duration_us;
-    static IntCounter meta_read_request_total;
-    static IntCounter meta_read_request_duration_us;
+    IntCounter fragment_requests_total;
+    IntCounter fragment_request_duration_us;
+    IntCounter http_requests_total;
+    IntCounter http_request_duration_us;
+    IntCounter http_request_send_bytes;
+    IntCounter query_scan_bytes;
+    IntCounter query_scan_rows;
+    IntCounter ranges_processed_total;
+    IntCounter push_requests_success_total;
+    IntCounter push_requests_fail_total;
+    IntCounter push_request_duration_us;
+    IntCounter push_request_write_bytes;
+    IntCounter push_request_write_rows;
+    IntCounter create_tablet_requests_total;
+    IntCounter create_tablet_requests_failed;
+    IntCounter drop_tablet_requests_total;
+
+    IntCounter report_all_tablets_requests_total;
+    IntCounter report_all_tablets_requests_failed;
+    IntCounter report_tablet_requests_total;
+    IntCounter report_tablet_requests_failed;
+    IntCounter report_disk_requests_total;
+    IntCounter report_disk_requests_failed;
+    IntCounter report_task_requests_total;
+    IntCounter report_task_requests_failed;
+
+    IntCounter schema_change_requests_total;
+    IntCounter schema_change_requests_failed;
+    IntCounter create_rollup_requests_total;
+    IntCounter create_rollup_requests_failed;
+    IntCounter storage_migrate_requests_total;
+    IntCounter delete_requests_total;
+    IntCounter delete_requests_failed;
+    IntCounter clone_requests_total;
+    IntCounter clone_requests_failed;
+
+    IntCounter finish_task_requests_total;
+    IntCounter finish_task_requests_failed;
+
+    IntCounter base_compaction_request_total;
+    IntCounter base_compaction_request_failed;
+    IntCounter cumulative_compaction_request_total;
+    IntCounter cumulative_compaction_request_failed;
+
+    IntCounter base_compaction_deltas_total;
+    IntCounter base_compaction_bytes_total;
+    IntCounter cumulative_compaction_deltas_total;
+    IntCounter cumulative_compaction_bytes_total;
+
+    IntCounter publish_task_request_total;
+    IntCounter publish_task_failed_total;
+
+    IntCounter meta_write_request_total;
+    IntCounter meta_write_request_duration_us;
+    IntCounter meta_read_request_total;
+    IntCounter meta_read_request_duration_us;
 
     // Counters for segment_v2
     // -----------------------
     // total number of segments read
-    static IntCounter segment_read_total;
+    IntCounter segment_read_total;
     // total number of rows in queried segments (before index pruning)
-    static IntCounter segment_row_total;
+    IntCounter segment_row_total;
     // total number of rows selected by short key index
-    static IntCounter segment_rows_by_short_key;
+    IntCounter segment_rows_by_short_key;
     // total number of rows selected by zone map index
-    static IntCounter segment_rows_read_by_zone_map;
+    IntCounter segment_rows_read_by_zone_map;
 
-    static IntCounter txn_begin_request_total;
-    static IntCounter txn_commit_request_total;
-    static IntCounter txn_rollback_request_total;
-    static IntCounter txn_exec_plan_total;
-    static IntCounter stream_receive_bytes_total;
-    static IntCounter stream_load_rows_total;
+    IntCounter txn_begin_request_total;
+    IntCounter txn_commit_request_total;
+    IntCounter txn_rollback_request_total;
+    IntCounter txn_exec_plan_total;
+    IntCounter stream_receive_bytes_total;
+    IntCounter stream_load_rows_total;
 
-    static IntCounter memtable_flush_total;
-    static IntCounter memtable_flush_duration_us;
+    IntCounter memtable_flush_total;
+    IntCounter memtable_flush_duration_us;
 
     // Gauges
-    static IntGauge memory_pool_bytes_total;
-    static IntGauge process_thread_num;
-    static IntGauge process_fd_num_used;
-    static IntGauge process_fd_num_limit_soft;
-    static IntGauge process_fd_num_limit_hard;
-    static IntGaugeMetricsMap disks_total_capacity;
-    static IntGaugeMetricsMap disks_avail_capacity;
-    static IntGaugeMetricsMap disks_data_used_capacity;
-    static IntGaugeMetricsMap disks_state;
+    IntGauge memory_pool_bytes_total;
+    IntGauge process_thread_num;
+    IntGauge process_fd_num_used;
+    IntGauge process_fd_num_limit_soft;
+    IntGauge process_fd_num_limit_hard;
+    IntGaugeMetricsMap disks_total_capacity;
+    IntGaugeMetricsMap disks_avail_capacity;
+    IntGaugeMetricsMap disks_data_used_capacity;
+    IntGaugeMetricsMap disks_state;
 
     // the max compaction score of all tablets.
     // Record base and cumulative scores separately, because
     // we need to get the larger of the two.
-    static IntGauge tablet_cumulative_max_compaction_score;
-    static IntGauge tablet_base_max_compaction_score;
+    IntGauge tablet_cumulative_max_compaction_score;
+    IntGauge tablet_base_max_compaction_score;
 
     // The following metrics will be calculated
     // by metric calculator
-    static IntGauge push_request_write_bytes_per_second;
-    static IntGauge query_scan_bytes_per_second;
-    static IntGauge max_disk_io_util_percent;
-    static IntGauge max_network_send_bytes_rate;
-    static IntGauge max_network_receive_bytes_rate;
+    IntGauge push_request_write_bytes_per_second;
+    IntGauge query_scan_bytes_per_second;
+    IntGauge max_disk_io_util_percent;
+    IntGauge max_network_send_bytes_rate;
+    IntGauge max_network_receive_bytes_rate;
 
     // Metrics related with BlockManager
-    static IntCounter readable_blocks_total;
-    static IntCounter writable_blocks_total;
-    static IntCounter blocks_created_total;
-    static IntCounter blocks_deleted_total;
-    static IntCounter bytes_read_total;
-    static IntCounter bytes_written_total;
-    static IntCounter disk_sync_total;
-    static IntGauge blocks_open_reading;
-    static IntGauge blocks_open_writing;
-
-    static IntCounter blocks_push_remote_duration_us;
+    IntCounter readable_blocks_total;
+    IntCounter writable_blocks_total;
+    IntCounter blocks_created_total;
+    IntCounter blocks_deleted_total;
+    IntCounter bytes_read_total;
+    IntCounter bytes_written_total;
+    IntCounter disk_sync_total;
+    IntGauge blocks_open_reading;
+    IntGauge blocks_open_writing;
+
+    IntCounter blocks_push_remote_duration_us;
 
     // Size of some global containers
-    static UIntGauge rowset_count_generated_and_in_use;
-    static UIntGauge unused_rowsets_count;
-    static UIntGauge broker_count;
-    static UIntGauge data_stream_receiver_count;
-    static UIntGauge fragment_endpoint_count;
-    static UIntGauge active_scan_context_count;
-    static UIntGauge plan_fragment_count;
-    static UIntGauge load_channel_count;
-    static UIntGauge result_buffer_block_count;
-    static UIntGauge result_block_queue_count;
-    static UIntGauge routine_load_task_count;
-    static UIntGauge small_file_cache_count;
-    static UIntGauge stream_load_pipe_count;
-    static UIntGauge brpc_endpoint_stub_count;
-    static UIntGauge tablet_writer_count;
-
-    ~DorisMetrics();
+    UIntGauge rowset_count_generated_and_in_use;
+    UIntGauge unused_rowsets_count;
+    UIntGauge broker_count;
+    UIntGauge data_stream_receiver_count;
+    UIntGauge fragment_endpoint_count;
+    UIntGauge active_scan_context_count;
+    UIntGauge plan_fragment_count;
+    UIntGauge load_channel_count;
+    UIntGauge result_buffer_block_count;
+    UIntGauge result_block_queue_count;
+    UIntGauge routine_load_task_count;
+    UIntGauge small_file_cache_count;
+    UIntGauge stream_load_pipe_count;
+    UIntGauge brpc_endpoint_stub_count;
+    UIntGauge tablet_writer_count;
+
+    static DorisMetrics* instance() {
+        static DorisMetrics instance;
+        return &instance;
+    }
+
     // not thread-safe, call before calling metrics
     void initialize(
-        const std::string& name,
         const std::vector<std::string>& paths = std::vector<std::string>(),
         bool init_system_metrics = false,
         const std::set<std::string>& disk_devices = std::set<std::string>(),
         const std::vector<std::string>& network_interfaces = 
std::vector<std::string>());
 
-    static DorisMetrics* instance() { return &_s_doris_metrics; }
-    static MetricRegistry* metrics() { return _s_doris_metrics._metrics; }
-    static SystemMetrics* system_metrics() { return 
_s_doris_metrics._system_metrics; }
+    MetricRegistry* metrics() { return &_metrics; }
+    SystemMetrics* system_metrics() { return &_system_metrics; }
+
 private:
     // Don't allow constrctor
-    DorisMetrics() {}
+    DorisMetrics();
 
-    void update();
+    void _update();
     void _update_process_thread_num();
     void _update_process_fd_num();
 
 private:
-    static const char* _s_hook_name;
-
-    static DorisMetrics _s_doris_metrics;
+    const char* _name;
+    const char* _hook_name;
 
-    MetricRegistry* _metrics = nullptr;
-    SystemMetrics* _system_metrics = nullptr;
+    MetricRegistry _metrics;
+    SystemMetrics _system_metrics;
 };
 
 };
diff --git a/be/src/util/system_metrics.h b/be/src/util/system_metrics.h
index d5a8bc9..05c11b5 100644
--- a/be/src/util/system_metrics.h
+++ b/be/src/util/system_metrics.h
@@ -15,6 +15,7 @@
 // specific language governing permissions and limitations
 // under the License.
 
+#pragma once
 #include "util/metrics.h"
 
 #include <map>
diff --git a/be/test/exec/tablet_sink_test.cpp 
b/be/test/exec/tablet_sink_test.cpp
index 7a6b325..bef0794 100644
--- a/be/test/exec/tablet_sink_test.cpp
+++ b/be/test/exec/tablet_sink_test.cpp
@@ -33,7 +33,6 @@
 #include "util/brpc_stub_cache.h"
 #include "util/cpu_info.h"
 #include "util/debug/leakcheck_disabler.h"
-#include "util/doris_metrics.h"
 #include "runtime/descriptor_helper.h"
 #include "runtime/bufferpool/reservation_tracker.h"
 #include "runtime/exec_env.h"
@@ -50,7 +49,6 @@ public:
     OlapTableSinkTest() { }
     virtual ~OlapTableSinkTest() { }
     void SetUp() override {
-        DorisMetrics::instance()->initialize("ut");
         k_add_batch_status = Status::OK();
         _env = ExecEnv::GetInstance();
         _env->_thread_mgr = new ThreadResourceMgr();
diff --git a/be/test/http/stream_load_test.cpp 
b/be/test/http/stream_load_test.cpp
index a17c0ad..03f6290 100644
--- a/be/test/http/stream_load_test.cpp
+++ b/be/test/http/stream_load_test.cpp
@@ -33,7 +33,6 @@
 #include "runtime/thread_resource_mgr.h"
 #include "util/brpc_stub_cache.h"
 #include "util/cpu_info.h"
-#include "util/doris_metrics.h"
 
 class mg_connection;
 
@@ -78,7 +77,6 @@ public:
         k_response_str = "";
         config::streaming_load_max_mb = 1;
 
-        DorisMetrics::instance()->initialize("ut");
         _env._thread_mgr = new ThreadResourceMgr();
         _env._master_info = new TMasterInfo();
         _env._load_stream_mgr = new LoadStreamMgr();
diff --git a/be/test/olap/delete_handler_test.cpp 
b/be/test/olap/delete_handler_test.cpp
index 02b832a..4940b98 100644
--- a/be/test/olap/delete_handler_test.cpp
+++ b/be/test/olap/delete_handler_test.cpp
@@ -32,7 +32,6 @@
 #include "olap/push_handler.h"
 #include "olap/utils.h"
 #include "olap/options.h"
-#include "util/doris_metrics.h"
 #include "util/file_utils.h"
 #include "util/logging.h"
 
@@ -47,7 +46,6 @@ static const uint32_t MAX_PATH_LEN = 1024;
 static StorageEngine* k_engine = nullptr;
 
 void set_up() {
-    DorisMetrics::instance()->initialize("ut");
     char buffer[MAX_PATH_LEN];
     getcwd(buffer, MAX_PATH_LEN);
     config::storage_root_path = string(buffer) + "/data_test";
diff --git a/be/test/olap/delta_writer_test.cpp 
b/be/test/olap/delta_writer_test.cpp
index a259b7d..537433f 100644
--- a/be/test/olap/delta_writer_test.cpp
+++ b/be/test/olap/delta_writer_test.cpp
@@ -33,7 +33,6 @@
 #include "runtime/exec_env.h"
 #include "runtime/mem_pool.h"
 #include "runtime/mem_tracker.h"
-#include "util/doris_metrics.h"
 #include "util/logging.h"
 #include "util/file_utils.h"
 #include "olap/options.h"
@@ -59,7 +58,6 @@ void set_up() {
     std::vector<StorePath> paths;
     paths.emplace_back(config::storage_root_path, -1);
 
-    DorisMetrics::instance()->initialize("ut");
     doris::EngineOptions options;
     options.store_paths = paths;
     doris::StorageEngine::open(options, &k_engine);
diff --git a/be/test/olap/olap_snapshot_converter_test.cpp 
b/be/test/olap/olap_snapshot_converter_test.cpp
index c0af392..112756c 100644
--- a/be/test/olap/olap_snapshot_converter_test.cpp
+++ b/be/test/olap/olap_snapshot_converter_test.cpp
@@ -34,7 +34,6 @@
 #include "olap/rowset/rowset_meta_manager.h"
 #include "olap/storage_engine.h"
 #include "olap/txn_manager.h"
-#include "util/doris_metrics.h"
 #include "util/file_utils.h"
 
 #ifndef BE_TEST
@@ -56,7 +55,6 @@ public:
         config::tablet_map_shard_size = 1;
         config::txn_map_shard_size = 1;
         config::txn_shard_size = 1;
-        DorisMetrics::instance()->initialize("ut");
         std::vector<StorePath> paths;
         paths.emplace_back("_engine_data_path", -1);
         EngineOptions options;
diff --git a/be/test/olap/rowset/alpha_rowset_test.cpp 
b/be/test/olap/rowset/alpha_rowset_test.cpp
index 7d065d1..96fd9f4 100644
--- a/be/test/olap/rowset/alpha_rowset_test.cpp
+++ b/be/test/olap/rowset/alpha_rowset_test.cpp
@@ -34,7 +34,6 @@
 #include "olap/rowset/alpha_rowset_reader.h"
 #include "olap/data_dir.h"
 #include "olap/storage_engine.h"
-#include "util/doris_metrics.h"
 
 #ifndef BE_TEST
 #define BE_TEST
@@ -50,7 +49,6 @@ namespace doris {
 static const uint32_t MAX_PATH_LEN = 1024;
 
 void set_up() {
-    DorisMetrics::instance()->initialize("ut");
     config::path_gc_check = false;
     char buffer[MAX_PATH_LEN];
     getcwd(buffer, MAX_PATH_LEN);
diff --git a/be/test/olap/rowset/beta_rowset_test.cpp 
b/be/test/olap/rowset/beta_rowset_test.cpp
index 2a9d00a..1c75202 100644
--- a/be/test/olap/rowset/beta_rowset_test.cpp
+++ b/be/test/olap/rowset/beta_rowset_test.cpp
@@ -34,7 +34,6 @@
 #include "runtime/exec_env.h"
 #include "runtime/mem_tracker.h"
 #include "runtime/mem_pool.h"
-#include "util/doris_metrics.h"
 #include "util/file_utils.h"
 #include "util/slice.h"
 
@@ -53,7 +52,6 @@ protected:
         config::tablet_map_shard_size = 1;
         config::txn_map_shard_size = 1;
         config::txn_shard_size = 1;
-        DorisMetrics::instance()->initialize("ut");
         char buffer[MAX_PATH_LEN];
         getcwd(buffer, MAX_PATH_LEN);
         config::storage_root_path = std::string(buffer) + "/data_test";
diff --git a/be/test/olap/rowset/rowset_converter_test.cpp 
b/be/test/olap/rowset/rowset_converter_test.cpp
index 612116a..daf7577 100644
--- a/be/test/olap/rowset/rowset_converter_test.cpp
+++ b/be/test/olap/rowset/rowset_converter_test.cpp
@@ -37,7 +37,6 @@
 #include "olap/storage_engine.h"
 #include "olap/olap_cond.h"
 #include "runtime/exec_env.h"
-#include "util/doris_metrics.h"
 
 #ifndef BE_TEST
 #define BE_TEST
@@ -154,7 +153,6 @@ public:
         config::tablet_map_shard_size = 1;
         config::txn_map_shard_size = 1;
         config::txn_shard_size = 1;
-        DorisMetrics::instance()->initialize("ut");
         config::path_gc_check = false;
         char buffer[MAX_PATH_LEN];
         getcwd(buffer, MAX_PATH_LEN);
diff --git a/be/test/olap/rowset/rowset_meta_manager_test.cpp 
b/be/test/olap/rowset/rowset_meta_manager_test.cpp
index 84e210e..8cbc272 100644
--- a/be/test/olap/rowset/rowset_meta_manager_test.cpp
+++ b/be/test/olap/rowset/rowset_meta_manager_test.cpp
@@ -26,7 +26,6 @@
 #include "olap/storage_engine.h"
 #include "boost/filesystem.hpp"
 #include "json2pb/json_to_pb.h"
-#include "util/doris_metrics.h"
 
 #ifndef BE_TEST
 #define BE_TEST
@@ -49,7 +48,6 @@ public:
         config::tablet_map_shard_size = 1;
         config::txn_map_shard_size = 1;
         config::txn_shard_size = 1;
-        DorisMetrics::instance()->initialize("ut");
         std::vector<StorePath> paths;
         paths.emplace_back("_engine_data_path", -1);
         EngineOptions options;
diff --git a/be/test/olap/rowset/segment_v2/binary_prefix_page_test.cpp 
b/be/test/olap/rowset/segment_v2/binary_prefix_page_test.cpp
index 1a3f3d2..6d85ac5 100644
--- a/be/test/olap/rowset/segment_v2/binary_prefix_page_test.cpp
+++ b/be/test/olap/rowset/segment_v2/binary_prefix_page_test.cpp
@@ -177,4 +177,4 @@ TEST_F(BinaryPrefixPageTest, TestEncodeAndDecode2) {
 int main(int argc, char **argv) {
     ::testing::InitGoogleTest(&argc, argv);
     return RUN_ALL_TESTS();
-}
\ No newline at end of file
+}
diff --git a/be/test/olap/rowset/unique_rowset_id_generator_test.cpp 
b/be/test/olap/rowset/unique_rowset_id_generator_test.cpp
index 6f20563..dc9388d 100644
--- a/be/test/olap/rowset/unique_rowset_id_generator_test.cpp
+++ b/be/test/olap/rowset/unique_rowset_id_generator_test.cpp
@@ -20,21 +20,12 @@
 #include <gtest/gtest.h>
 #include <iostream>
 
-#include "util/doris_metrics.h"
 #include "util/runtime_profile.h"
 #include "util/threadpool.h"
 #include "util/pretty_printer.h"
 
 namespace doris {
 class UniqueRowsetIdGeneratorTest : public testing::Test {
-public:
-    UniqueRowsetIdGeneratorTest() { }
-    virtual ~UniqueRowsetIdGeneratorTest() {
-    }
-
-    virtual void SetUp() {
-        DorisMetrics::instance()->initialize("ut");
-    }
 };
 
 TEST_F(UniqueRowsetIdGeneratorTest, RowsetIdFormatTest) {
diff --git a/be/test/olap/tablet_mgr_test.cpp b/be/test/olap/tablet_mgr_test.cpp
index 0a11edf..297de4c 100644
--- a/be/test/olap/tablet_mgr_test.cpp
+++ b/be/test/olap/tablet_mgr_test.cpp
@@ -31,7 +31,6 @@
 #include "boost/filesystem.hpp"
 #include "json2pb/json_to_pb.h"
 #include "util/file_utils.h"
-#include "util/doris_metrics.h"
 
 #ifndef BE_TEST
 #define BE_TEST
@@ -52,7 +51,6 @@ public:
         config::tablet_map_shard_size = 1;
         config::txn_map_shard_size = 1;
         config::txn_shard_size = 1;
-        DorisMetrics::instance()->initialize("ut");
         string test_engine_data_path = 
"./be/test/olap/test_data/converter_test_data/data";
         _engine_data_path = "./be/test/olap/test_data/converter_test_data/tmp";
         boost::filesystem::remove_all(_engine_data_path);
diff --git a/be/test/olap/txn_manager_test.cpp 
b/be/test/olap/txn_manager_test.cpp
index 750607a..4bb2065 100644
--- a/be/test/olap/txn_manager_test.cpp
+++ b/be/test/olap/txn_manager_test.cpp
@@ -30,7 +30,6 @@
 #include "olap/txn_manager.h"
 #include "boost/filesystem.hpp"
 #include "json2pb/json_to_pb.h"
-#include "util/doris_metrics.h"
 
 #ifndef BE_TEST
 #define BE_TEST
@@ -99,7 +98,6 @@ public:
         config::txn_shard_size = 1;
         config::max_runnings_transactions_per_txn_map = 500;
         _txn_mgr.reset(new TxnManager(64, 1024));
-        DorisMetrics::instance()->initialize("ut");
         std::vector<StorePath> paths;
         paths.emplace_back("_engine_data_path", -1);
         EngineOptions options;
diff --git a/be/test/runtime/external_scan_context_mgr_test.cpp 
b/be/test/runtime/external_scan_context_mgr_test.cpp
index 8a2da6e..52d2790 100644
--- a/be/test/runtime/external_scan_context_mgr_test.cpp
+++ b/be/test/runtime/external_scan_context_mgr_test.cpp
@@ -24,14 +24,12 @@
 #include "runtime/fragment_mgr.h"
 #include "runtime/result_queue_mgr.h"
 #include "runtime/thread_resource_mgr.h"
-#include "util/doris_metrics.h"
 
 namespace doris {
 
 class ExternalScanContextMgrTest : public testing::Test {
 public:
     ExternalScanContextMgrTest() {
-        DorisMetrics::instance()->initialize("ut");
         FragmentMgr* fragment_mgr = new FragmentMgr(&_exec_env);
         ThreadResourceMgr* thread_mgr = new ThreadResourceMgr();
         ResultQueueMgr* result_queue_mgr = new  ResultQueueMgr();
diff --git a/be/test/runtime/fragment_mgr_test.cpp 
b/be/test/runtime/fragment_mgr_test.cpp
index cfb9e72..683ee59 100644
--- a/be/test/runtime/fragment_mgr_test.cpp
+++ b/be/test/runtime/fragment_mgr_test.cpp
@@ -23,7 +23,6 @@
 #include "exec/data_sink.h"
 #include "runtime/plan_fragment_executor.h"
 #include "runtime/row_batch.h"
-#include "util/doris_metrics.h"
 #include "util/monotime.h"
 
 namespace doris {
@@ -62,7 +61,6 @@ protected:
                   << ", pool_size=" << config::fragment_pool_queue_size;
         config::fragment_pool_thread_num = 32;
         config::fragment_pool_queue_size = 1024;
-        DorisMetrics::instance()->initialize("ut");
     }
     virtual void TearDown() {}
 };
diff --git a/be/test/runtime/load_channel_mgr_test.cpp 
b/be/test/runtime/load_channel_mgr_test.cpp
index ef4aaa1..bda51c4 100644
--- a/be/test/runtime/load_channel_mgr_test.cpp
+++ b/be/test/runtime/load_channel_mgr_test.cpp
@@ -30,7 +30,6 @@
 #include "runtime/row_batch.h"
 #include "runtime/tuple_row.h"
 #include "runtime/descriptor_helper.h"
-#include "util/doris_metrics.h"
 #include "util/thrift_util.h"
 #include "olap/delta_writer.h"
 #include "olap/memtable_flush_executor.h"
@@ -104,7 +103,6 @@ public:
         add_status = OLAP_SUCCESS;
         close_status = OLAP_SUCCESS;
         config::streaming_load_rpc_max_alive_time_sec = 120;
-        DorisMetrics::instance()->initialize("ut");
     }
 private:
 };
diff --git a/be/test/runtime/memory/chunk_allocator_test.cpp 
b/be/test/runtime/memory/chunk_allocator_test.cpp
index 470c3de..b5505a7 100644
--- a/be/test/runtime/memory/chunk_allocator_test.cpp
+++ b/be/test/runtime/memory/chunk_allocator_test.cpp
@@ -40,7 +40,6 @@ TEST(ChunkAllocatorTest, Normal) {
 
 int main(int argc, char** argv) {
     ::testing::InitGoogleTest(&argc, argv);
-    doris::DorisMetrics::instance()->initialize("chunk_allocator_ut");
     doris::CpuInfo::init();
     doris::ChunkAllocator::init_instance(1024 * 1024);
     return RUN_ALL_TESTS();
diff --git a/be/test/runtime/memory_scratch_sink_test.cpp 
b/be/test/runtime/memory_scratch_sink_test.cpp
index 6b67636..293e234 100644
--- a/be/test/runtime/memory_scratch_sink_test.cpp
+++ b/be/test/runtime/memory_scratch_sink_test.cpp
@@ -41,7 +41,6 @@
 #include "runtime/thread_resource_mgr.h"
 #include "runtime/tuple_row.h"
 #include "util/blocking_queue.hpp"
-#include "util/doris_metrics.h"
 #include "util/logging.h"
 #include "testutil/desc_tbl_builder.h"
 
@@ -78,7 +77,6 @@ public:
     virtual void SetUp() {
         config::periodic_counter_update_period_ms = 500;
         config::storage_root_path = "./data";
-        DorisMetrics::instance()->initialize("ut");
 
         system("mkdir -p ./test_run/output/");
         system("pwd");
diff --git a/be/test/runtime/result_queue_mgr_test.cpp 
b/be/test/runtime/result_queue_mgr_test.cpp
index f994179..2b9c52b 100644
--- a/be/test/runtime/result_queue_mgr_test.cpp
+++ b/be/test/runtime/result_queue_mgr_test.cpp
@@ -25,22 +25,10 @@
 #include "gen_cpp/DorisExternalService_types.h"
 #include "runtime/result_queue_mgr.h"
 #include "util/blocking_queue.hpp"
-#include "util/doris_metrics.h"
 
 namespace doris {
 
 class ResultQueueMgrTest : public testing::Test {
-public:
-    ResultQueueMgrTest() {
-    }
-    virtual ~ResultQueueMgrTest() {
-    }
-
-protected:
-    virtual void SetUp() {
-        DorisMetrics::instance()->initialize("ut");
-    }
-
 };
 
 TEST_F(ResultQueueMgrTest, create_normal) {
diff --git a/be/test/runtime/routine_load_task_executor_test.cpp 
b/be/test/runtime/routine_load_task_executor_test.cpp
index 84fe93f..6f50496 100644
--- a/be/test/runtime/routine_load_task_executor_test.cpp
+++ b/be/test/runtime/routine_load_task_executor_test.cpp
@@ -21,7 +21,6 @@
 #include "runtime/stream_load/load_stream_mgr.h"
 #include "runtime/stream_load/stream_load_executor.h"
 #include "util/cpu_info.h"
-#include "util/doris_metrics.h"
 #include "util/logging.h"
 
 #include <gtest/gtest.h>
@@ -50,7 +49,6 @@ public:
         k_stream_load_rollback_result = TLoadTxnRollbackResult();
         k_stream_load_put_result = TStreamLoadPutResult();
 
-        DorisMetrics::instance()->initialize("ut");
         _env._master_info = new TMasterInfo();
         _env._load_stream_mgr = new LoadStreamMgr();
         _env._stream_load_executor = new StreamLoadExecutor(&_env);
diff --git a/be/test/runtime/small_file_mgr_test.cpp 
b/be/test/runtime/small_file_mgr_test.cpp
index a6c5367..c03fe83 100644
--- a/be/test/runtime/small_file_mgr_test.cpp
+++ b/be/test/runtime/small_file_mgr_test.cpp
@@ -29,7 +29,6 @@
 #include "http/http_request.h"
 #include "gen_cpp/HeartbeatService_types.h"
 #include "runtime/exec_env.h"
-#include "util/doris_metrics.h"
 
 int main(int argc, char* argv[]);
 
@@ -87,7 +86,6 @@ public:
 
     static void SetUpTestCase() {
         s_server = new EvHttpServer(0);
-        DorisMetrics::instance()->initialize("ut");
         s_server->register_handler(GET, "/api/get_small_file", 
&s_test_handler);
         s_server->start();
         real_port = s_server->get_real_port();
diff --git a/be/test/util/arrow/arrow_row_batch_test.cpp 
b/be/test/util/arrow/arrow_row_batch_test.cpp
index 42de9ca..0c8daa4 100644
--- a/be/test/util/arrow/arrow_row_batch_test.cpp
+++ b/be/test/util/arrow/arrow_row_batch_test.cpp
@@ -38,10 +38,6 @@
 namespace doris {
 
 class ArrowRowBatchTest : public testing::Test {
-public:
-    ArrowRowBatchTest() { }
-    virtual ~ArrowRowBatchTest() {
-    }
 };
 
 std::string test_str() {
diff --git a/be/test/util/arrow/arrow_work_flow_test.cpp 
b/be/test/util/arrow/arrow_work_flow_test.cpp
index 4309e33..fb6f814 100644
--- a/be/test/util/arrow/arrow_work_flow_test.cpp
+++ b/be/test/util/arrow/arrow_work_flow_test.cpp
@@ -40,7 +40,6 @@
 #include "util/arrow/row_batch.h"
 #include "util/debug_util.h"
 #include "util/disk_info.h"
-#include "util/doris_metrics.h"
 #include "util/cpu_info.h"
 #include "util/logging.h"
 
@@ -55,7 +54,6 @@ protected:
     virtual void SetUp() {
         config::periodic_counter_update_period_ms = 500;
         config::storage_root_path = "./data";
-        DorisMetrics::instance()->initialize("ut");
 
         system("mkdir -p ./test_run/output/");
         system("pwd");
diff --git a/be/test/util/doris_metrics_test.cpp 
b/be/test/util/doris_metrics_test.cpp
index 08631c8..e308f45 100644
--- a/be/test/util/doris_metrics_test.cpp
+++ b/be/test/util/doris_metrics_test.cpp
@@ -77,94 +77,93 @@ private:
 
 TEST_F(DorisMetricsTest, Normal) {
     TestMetricsVisitor visitor;
-    DorisMetrics::instance()->initialize("test");
-    auto metrics = DorisMetrics::metrics();
+    auto metrics = DorisMetrics::instance()->metrics();
     metrics->collect(&visitor);
     LOG(INFO) << "\n" << visitor.to_string();
     // check metric
     {
-        DorisMetrics::fragment_requests_total.increment(12);
+        DorisMetrics::instance()->fragment_requests_total.increment(12);
         auto metric = metrics->get_metric("fragment_requests_total");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("12", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::fragment_request_duration_us.increment(101);
+        DorisMetrics::instance()->fragment_request_duration_us.increment(101);
         auto metric = metrics->get_metric("fragment_request_duration_us");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("101", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::http_requests_total.increment(102);
+        DorisMetrics::instance()->http_requests_total.increment(102);
         auto metric = metrics->get_metric("http_requests_total");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("102", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::http_request_duration_us.increment(103);
+        DorisMetrics::instance()->http_request_duration_us.increment(103);
         auto metric = metrics->get_metric("http_request_duration_us");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("103", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::http_request_send_bytes.increment(104);
+        DorisMetrics::instance()->http_request_send_bytes.increment(104);
         auto metric = metrics->get_metric("http_request_send_bytes");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("104", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::query_scan_bytes.increment(104);
+        DorisMetrics::instance()->query_scan_bytes.increment(104);
         auto metric = metrics->get_metric("query_scan_bytes");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("104", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::query_scan_rows.increment(105);
+        DorisMetrics::instance()->query_scan_rows.increment(105);
         auto metric = metrics->get_metric("query_scan_rows");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("105", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::ranges_processed_total.increment(13);
+        DorisMetrics::instance()->ranges_processed_total.increment(13);
         auto metric = metrics->get_metric("ranges_processed_total");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("13", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::push_requests_success_total.increment(106);
+        DorisMetrics::instance()->push_requests_success_total.increment(106);
         auto metric = metrics->get_metric("push_requests_total",
                                           MetricLabels().add("status", 
"SUCCESS"));
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("106", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::push_requests_fail_total.increment(107);
+        DorisMetrics::instance()->push_requests_fail_total.increment(107);
         auto metric = metrics->get_metric("push_requests_total",
                                           MetricLabels().add("status", 
"FAIL"));
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("107", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::push_request_duration_us.increment(108);
+        DorisMetrics::instance()->push_request_duration_us.increment(108);
         auto metric = metrics->get_metric("push_request_duration_us");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("108", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::push_request_write_bytes.increment(109);
+        DorisMetrics::instance()->push_request_write_bytes.increment(109);
         auto metric = metrics->get_metric("push_request_write_bytes");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("109", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::push_request_write_rows.increment(110);
+        DorisMetrics::instance()->push_request_write_rows.increment(110);
         auto metric = metrics->get_metric("push_request_write_rows");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("110", ((SimpleMetric*)metric)->to_string().c_str());
     }
     // engine request
     {
-        DorisMetrics::create_tablet_requests_total.increment(15);
+        DorisMetrics::instance()->create_tablet_requests_total.increment(15);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", 
"create_tablet")
                                           .add("status", "total"));
@@ -172,7 +171,7 @@ TEST_F(DorisMetricsTest, Normal) {
         ASSERT_STREQ("15", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::drop_tablet_requests_total.increment(16);
+        DorisMetrics::instance()->drop_tablet_requests_total.increment(16);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", 
"drop_tablet")
                                           .add("status", "total"));
@@ -180,7 +179,7 @@ TEST_F(DorisMetricsTest, Normal) {
         ASSERT_STREQ("16", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::report_all_tablets_requests_total.increment(17);
+        
DorisMetrics::instance()->report_all_tablets_requests_total.increment(17);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", 
"report_all_tablets")
                                           .add("status", "total"));
@@ -188,7 +187,7 @@ TEST_F(DorisMetricsTest, Normal) {
         ASSERT_STREQ("17", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::report_tablet_requests_total.increment(18);
+        DorisMetrics::instance()->report_tablet_requests_total.increment(18);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", 
"report_tablet")
                                           .add("status", "total"));
@@ -196,7 +195,7 @@ TEST_F(DorisMetricsTest, Normal) {
         ASSERT_STREQ("18", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::schema_change_requests_total.increment(19);
+        DorisMetrics::instance()->schema_change_requests_total.increment(19);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", 
"schema_change")
                                           .add("status", "total"));
@@ -204,7 +203,7 @@ TEST_F(DorisMetricsTest, Normal) {
         ASSERT_STREQ("19", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::create_rollup_requests_total.increment(20);
+        DorisMetrics::instance()->create_rollup_requests_total.increment(20);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", 
"create_rollup")
                                           .add("status", "total"));
@@ -212,7 +211,7 @@ TEST_F(DorisMetricsTest, Normal) {
         ASSERT_STREQ("20", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::storage_migrate_requests_total.increment(21);
+        DorisMetrics::instance()->storage_migrate_requests_total.increment(21);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", 
"storage_migrate")
                                           .add("status", "total"));
@@ -220,7 +219,7 @@ TEST_F(DorisMetricsTest, Normal) {
         ASSERT_STREQ("21", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::delete_requests_total.increment(22);
+        DorisMetrics::instance()->delete_requests_total.increment(22);
         auto metric = metrics->get_metric("engine_requests_total",
                                           MetricLabels().add("type", "delete")
                                           .add("status", "total"));
@@ -229,28 +228,28 @@ TEST_F(DorisMetricsTest, Normal) {
     }
     //  comapction
     {
-        DorisMetrics::base_compaction_deltas_total.increment(30);
+        DorisMetrics::instance()->base_compaction_deltas_total.increment(30);
         auto metric = metrics->get_metric("compaction_deltas_total",
                                           MetricLabels().add("type", "base"));
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("30", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::cumulative_compaction_deltas_total.increment(31);
+        
DorisMetrics::instance()->cumulative_compaction_deltas_total.increment(31);
         auto metric = metrics->get_metric("compaction_deltas_total",
                                           MetricLabels().add("type", 
"cumulative"));
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("31", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::base_compaction_bytes_total.increment(32);
+        DorisMetrics::instance()->base_compaction_bytes_total.increment(32);
         auto metric = metrics->get_metric("compaction_bytes_total",
                                           MetricLabels().add("type", "base"));
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("32", ((SimpleMetric*)metric)->to_string().c_str());
     }
     {
-        DorisMetrics::cumulative_compaction_bytes_total.increment(33);
+        
DorisMetrics::instance()->cumulative_compaction_bytes_total.increment(33);
         auto metric = metrics->get_metric("compaction_bytes_total",
                                           MetricLabels().add("type", 
"cumulative"));
         ASSERT_TRUE(metric != nullptr);
@@ -258,7 +257,7 @@ TEST_F(DorisMetricsTest, Normal) {
     }
     // Gauge
     {
-        DorisMetrics::memory_pool_bytes_total.increment(40);
+        DorisMetrics::instance()->memory_pool_bytes_total.increment(40);
         auto metric = metrics->get_metric("memory_pool_bytes_total");
         ASSERT_TRUE(metric != nullptr);
         ASSERT_STREQ("40", ((SimpleMetric*)metric)->to_string().c_str());
diff --git a/be/test/util/zip_util_test.cpp b/be/test/util/zip_util_test.cpp
index fc56022..4a0a76f 100644
--- a/be/test/util/zip_util_test.cpp
+++ b/be/test/util/zip_util_test.cpp
@@ -120,4 +120,4 @@ TEST(ZipUtilTest, notzip) {
 int main(int argc, char** argv) {
     ::testing::InitGoogleTest(&argc, argv);
     return RUN_ALL_TESTS();
-}
\ No newline at end of file
+}
diff --git a/run-ut.sh b/run-ut.sh
index a66af13..89ae3c0 100755
--- a/run-ut.sh
+++ b/run-ut.sh
@@ -205,6 +205,7 @@ ${DORIS_TEST_BINARY_DIR}/exec/broker_scanner_test
 ${DORIS_TEST_BINARY_DIR}/exec/parquet_scanner_test
 ${DORIS_TEST_BINARY_DIR}/exec/orc_scanner_test
 ${DORIS_TEST_BINARY_DIR}/exec/broker_scan_node_test
+#${DORIS_TEST_BINARY_DIR}/exec/es_scan_node_test
 ${DORIS_TEST_BINARY_DIR}/exec/es_http_scan_node_test
 ${DORIS_TEST_BINARY_DIR}/exec/es_predicate_test
 ${DORIS_TEST_BINARY_DIR}/exec/es_scan_reader_test


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to