-
Notifications
You must be signed in to change notification settings - Fork 259
metrics: add running metrics for grpc #639
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Changes from 5 commits
a086c63
9997865
df91682
f2ba50f
2de40d2
291d193
8a3c9a2
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -27,6 +27,8 @@ prost = { version = "0.11", optional = true } | |||||
bytes = { version = "1.0", optional = true } | ||||||
log = "0.4" | ||||||
parking_lot = "0.12" | ||||||
prometheus = { version = "0.13", default-features = false } | ||||||
lazy_static = "1" | ||||||
|
||||||
[workspace] | ||||||
members = [ | ||||||
|
@@ -42,8 +44,9 @@ members = [ | |||||
exclude = ["xtask"] | ||||||
|
||||||
[features] | ||||||
default = ["protobuf-codec", "boringssl"] | ||||||
default = ["protobuf-codec", "boringssl","prometheus"] | ||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Maybe we should not enable the "prometheus" by default. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It maybe bring the resouce usage. |
||||||
_secure = [] | ||||||
prometheus = [] | ||||||
|
prometheus = [] | |
prometheus = ["dep:prometheus"] |
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -5,17 +5,113 @@ use std::sync::mpsc; | |||||
use std::sync::Arc; | ||||||
use std::thread::{Builder as ThreadBuilder, JoinHandle}; | ||||||
|
||||||
use crate::grpc_sys; | ||||||
|
||||||
use crate::cq::{CompletionQueue, CompletionQueueHandle, EventType, WorkQueue}; | ||||||
use crate::grpc_sys; | ||||||
use crate::task::CallTag; | ||||||
|
||||||
// event loop | ||||||
#[cfg(feature = "prometheus")] | ||||||
use { | ||||||
crate::metrics::{ | ||||||
GRPC_POOL_CQ_NEXT_DURATION, GRPC_POOL_EVENT_COUNT_VEC, GRPC_POOL_EXECUTE_DURATION, | ||||||
GRPC_TASK_WAIT_DURATION, | ||||||
}, | ||||||
crate::task::resolve, | ||||||
prometheus::{ | ||||||
core::{AtomicU64, GenericCounter}, | ||||||
Histogram, | ||||||
}, | ||||||
std::time::Instant, | ||||||
}; | ||||||
|
||||||
#[cfg(feature = "prometheus")] | ||||||
pub struct GRPCRunner { | ||||||
cq_next_duration_his: Histogram, | ||||||
|
||||||
execute_duration_his: Histogram, | ||||||
wait_duration_his: Histogram, | ||||||
event_counter: [GenericCounter<AtomicU64>; 6], | ||||||
|
event_counter: [GenericCounter<AtomicU64>; 6], | |
event_counter: [Counter; 6], |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -40,6 +40,7 @@ mod env; | |
mod error; | ||
mod log_util; | ||
mod metadata; | ||
mod metrics; | ||
mod quota; | ||
mod security; | ||
mod server; | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
// Copyright 2023 TiKV Project Authors. Licensed under Apache-2.0. | ||
|
||
//! Metrics of the grpc pool. | ||
use lazy_static::lazy_static; | ||
use prometheus::*; | ||
|
||
lazy_static! { | ||
/// Grpc wait duration of one task. | ||
pub static ref GRPC_TASK_WAIT_DURATION: HistogramVec = register_histogram_vec!( | ||
"grpc_task_wait_duration", | ||
"Bucketed histogram of grpc wait time only for Spawn task", | ||
&["name"], | ||
exponential_buckets(1e-7, 2.0, 20).unwrap() // 100ns ~ 100ms | ||
) | ||
.unwrap(); | ||
|
||
// Grpc pool io handle duration . | ||
pub static ref GRPC_POOL_CQ_NEXT_DURATION: HistogramVec = register_histogram_vec!( | ||
"grpc_pool_cp_next_duration", | ||
"Bucketed histogram of grpc pool wait duration from the completion queue", | ||
&["name"], | ||
exponential_buckets(1e-7, 2.0, 20).unwrap() // 100ns ~ 100ms | ||
) | ||
.unwrap(); | ||
|
||
// Grpc handle execute duration | ||
pub static ref GRPC_POOL_EXECUTE_DURATION: HistogramVec = register_histogram_vec!( | ||
"grpc_pool_execute_duration", | ||
"Bucketed histogram of grpc pool execute duration for every time", | ||
&["name"], | ||
exponential_buckets(1e-7, 2.0, 20).unwrap() // 100ns ~ 100ms | ||
|
||
) | ||
.unwrap(); | ||
|
||
// Grpc pool event count task . | ||
pub static ref GRPC_POOL_EVENT_COUNT_VEC: IntCounterVec = register_int_counter_vec!( | ||
"grpc_pool_event_task_count", | ||
"Total event task count in grpc pool", | ||
&["name","event"] | ||
) | ||
.unwrap(); | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.