mirror of
https://github.com/0glabs/0g-storage-node.git
synced 2024-12-24 23:35:18 +00:00
Add admin rpc to exports metrics (#162)
This commit is contained in:
parent
f9120b1e4a
commit
908ee156ca
3
Cargo.lock
generated
3
Cargo.lock
generated
@ -4620,7 +4620,7 @@ dependencies = [
|
||||
[[package]]
|
||||
name = "metrics"
|
||||
version = "0.1.0"
|
||||
source = "git+https://github.com/Conflux-Chain/conflux-rust.git?rev=3ee498ce659e11fd0030bd4a264b7442705ade2b#3ee498ce659e11fd0030bd4a264b7442705ade2b"
|
||||
source = "git+https://github.com/Conflux-Chain/conflux-rust.git?rev=992ebc5483d937c8f6b883e266f8ed2a67a7fa9a#992ebc5483d937c8f6b883e266f8ed2a67a7fa9a"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"futures",
|
||||
@ -6512,6 +6512,7 @@ dependencies = [
|
||||
"jsonrpsee",
|
||||
"merkle_light",
|
||||
"merkle_tree",
|
||||
"metrics",
|
||||
"miner",
|
||||
"network",
|
||||
"serde",
|
||||
|
@ -28,7 +28,7 @@ members = [
|
||||
resolver = "2"
|
||||
|
||||
[workspace.dependencies]
|
||||
metrics = { git = "https://github.com/Conflux-Chain/conflux-rust.git", rev = "3ee498ce659e11fd0030bd4a264b7442705ade2b" }
|
||||
metrics = { git = "https://github.com/Conflux-Chain/conflux-rust.git", rev = "992ebc5483d937c8f6b883e266f8ed2a67a7fa9a" }
|
||||
|
||||
[patch.crates-io]
|
||||
discv5 = { path = "version-meld/discv5" }
|
||||
|
@ -26,3 +26,4 @@ storage-async = { path = "../storage-async" }
|
||||
merkle_light = { path = "../../common/merkle_light" }
|
||||
merkle_tree = { path = "../../common/merkle_tree"}
|
||||
futures-channel = "^0.3"
|
||||
metrics = { workspace = true }
|
||||
|
@ -1,7 +1,7 @@
|
||||
use crate::types::{LocationInfo, NetworkInfo, PeerInfo};
|
||||
use jsonrpsee::core::RpcResult;
|
||||
use jsonrpsee::proc_macros::rpc;
|
||||
use std::collections::HashMap;
|
||||
use std::collections::{BTreeMap, HashMap};
|
||||
use sync::{FileSyncInfo, SyncServiceState};
|
||||
|
||||
#[rpc(server, client, namespace = "admin")]
|
||||
@ -48,4 +48,10 @@ pub trait Rpc {
|
||||
tx_seq: u64,
|
||||
all_shards: bool,
|
||||
) -> RpcResult<Option<Vec<LocationInfo>>>;
|
||||
|
||||
#[method(name = "getMetrics")]
|
||||
async fn get_metrics(
|
||||
&self,
|
||||
maybe_prefix: Option<String>,
|
||||
) -> RpcResult<BTreeMap<String, String>>;
|
||||
}
|
||||
|
@ -4,8 +4,9 @@ use crate::{error, Context};
|
||||
use futures::prelude::*;
|
||||
use jsonrpsee::core::async_trait;
|
||||
use jsonrpsee::core::RpcResult;
|
||||
use metrics::DEFAULT_REGISTRY;
|
||||
use network::{multiaddr::Protocol, Multiaddr};
|
||||
use std::collections::HashMap;
|
||||
use std::collections::{BTreeMap, HashMap};
|
||||
use std::net::IpAddr;
|
||||
use storage::config::all_shards_available;
|
||||
use sync::{FileSyncInfo, SyncRequest, SyncResponse, SyncServiceState};
|
||||
@ -246,4 +247,22 @@ impl RpcServer for RpcServerImpl {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
async fn get_metrics(
|
||||
&self,
|
||||
maybe_prefix: Option<String>,
|
||||
) -> RpcResult<BTreeMap<String, String>> {
|
||||
let mut result = BTreeMap::new();
|
||||
|
||||
for (name, metric) in DEFAULT_REGISTRY.read().get_all() {
|
||||
match &maybe_prefix {
|
||||
Some(prefix) if !name.starts_with(prefix) => {}
|
||||
_ => {
|
||||
result.insert(name.clone(), metric.get_value());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Ok(result)
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user