diff --git a/internal/core/src/exec/operator/FilterBitsNode.cpp b/internal/core/src/exec/operator/FilterBitsNode.cpp index 14119cf525494..e6cebee7358bf 100644 --- a/internal/core/src/exec/operator/FilterBitsNode.cpp +++ b/internal/core/src/exec/operator/FilterBitsNode.cpp @@ -97,6 +97,9 @@ PhyFilterBitsNode::GetOutput() { bitset.flip(); Assert(bitset.size() == need_process_rows_); Assert(valid_bitset.size() == need_process_rows_); + auto filter_ratio = + bitset.size() != 0 ? 1 - float(bitset.count()) / bitset.size() : 0; + monitor::internal_core_expr_filter_ratio.Observe(filter_ratio); // num_processed_rows_ = need_process_rows_; std::vector col_res; col_res.push_back(std::make_shared(std::move(bitset), diff --git a/internal/core/src/monitor/prometheus_client.cpp b/internal/core/src/monitor/prometheus_client.cpp index 7ec3dadae203e..1a806cb268f46 100644 --- a/internal/core/src/monitor/prometheus_client.cpp +++ b/internal/core/src/monitor/prometheus_client.cpp @@ -212,6 +212,8 @@ std::map randomSampleLatencyLabels{ {"type", "random_sample_latency"}}; std::map optimizeExprLatencyLabels{ {"type", "optimize_expr_latency"}}; +std::map filterRatioLabels{ + {"type", "expr_filter_ratio"}}; DEFINE_PROMETHEUS_HISTOGRAM_FAMILY(internal_core_search_latency, "[cpp]latency(us) of search on segment") @@ -247,6 +249,10 @@ DEFINE_PROMETHEUS_HISTOGRAM(internal_core_search_latency_random_sample, DEFINE_PROMETHEUS_HISTOGRAM(internal_core_optimize_expr_latency, internal_core_search_latency, optimizeExprLatencyLabels) +DEFINE_PROMETHEUS_HISTOGRAM_WITH_BUCKETS(internal_core_expr_filter_ratio, + internal_core_search_latency, + filterRatioLabels, + ratioBuckets) // mmap metrics std::map mmapAllocatedSpaceAnonLabel = { {"type", "anon"}}; diff --git a/internal/core/src/monitor/prometheus_client.h b/internal/core/src/monitor/prometheus_client.h index 579f9f562e849..f5e63459841b4 100644 --- a/internal/core/src/monitor/prometheus_client.h +++ b/internal/core/src/monitor/prometheus_client.h @@ -143,6 +143,7 @@ DECLARE_PROMETHEUS_HISTOGRAM(internal_core_retrieve_get_target_entry_latency); DECLARE_PROMETHEUS_HISTOGRAM(internal_core_search_get_target_entry_latency); DECLARE_PROMETHEUS_HISTOGRAM(internal_core_search_latency_random_sample); DECLARE_PROMETHEUS_HISTOGRAM(internal_core_optimize_expr_latency); +DECLARE_PROMETHEUS_HISTOGRAM(internal_core_expr_filter_ratio); // async cgo metrics DECLARE_PROMETHEUS_HISTOGRAM_FAMILY(internal_cgo_queue_duration_seconds);