Add a gauge for last indexed block's height
This commit is contained in:
parent
05fd268b51
commit
ee91ccc233
12
src/index.rs
12
src/index.rs
|
@ -11,7 +11,7 @@ use std::iter::FromIterator;
|
||||||
use std::sync::RwLock;
|
use std::sync::RwLock;
|
||||||
|
|
||||||
use daemon::Daemon;
|
use daemon::Daemon;
|
||||||
use metrics::{Counter, MetricOpts, Metrics};
|
use metrics::{Counter, Gauge, MetricOpts, Metrics};
|
||||||
use signal::Waiter;
|
use signal::Waiter;
|
||||||
use store::{ReadStore, Row, WriteStore};
|
use store::{ReadStore, Row, WriteStore};
|
||||||
use util::{full_hash, hash_prefix, Bytes, FullHash, HashPrefix, HeaderEntry, HeaderList,
|
use util::{full_hash, hash_prefix, Bytes, FullHash, HashPrefix, HeaderEntry, HeaderList,
|
||||||
|
@ -249,6 +249,7 @@ struct Stats {
|
||||||
blocks: Counter,
|
blocks: Counter,
|
||||||
txns: Counter,
|
txns: Counter,
|
||||||
vsize: Counter,
|
vsize: Counter,
|
||||||
|
height: Gauge,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Stats {
|
impl Stats {
|
||||||
|
@ -257,15 +258,20 @@ impl Stats {
|
||||||
blocks: metrics.counter(MetricOpts::new("index_blocks", "# of indexed blocks")),
|
blocks: metrics.counter(MetricOpts::new("index_blocks", "# of indexed blocks")),
|
||||||
txns: metrics.counter(MetricOpts::new("index_txns", "# of indexed transactions")),
|
txns: metrics.counter(MetricOpts::new("index_txns", "# of indexed transactions")),
|
||||||
vsize: metrics.counter(MetricOpts::new("index_vsize", "# of indexed vbytes")),
|
vsize: metrics.counter(MetricOpts::new("index_vsize", "# of indexed vbytes")),
|
||||||
|
height: metrics.gauge(MetricOpts::new(
|
||||||
|
"index_height",
|
||||||
|
"Last indexed block's height",
|
||||||
|
)),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn update(&self, block: &Block) {
|
fn update(&self, block: &Block, entry: &HeaderEntry) {
|
||||||
self.blocks.inc();
|
self.blocks.inc();
|
||||||
self.txns.inc_by(block.txdata.len() as i64);
|
self.txns.inc_by(block.txdata.len() as i64);
|
||||||
for tx in &block.txdata {
|
for tx in &block.txdata {
|
||||||
self.vsize.inc_by(tx.get_weight() as i64 / 4);
|
self.vsize.inc_by(tx.get_weight() as i64 / 4);
|
||||||
}
|
}
|
||||||
|
self.height.set(entry.height() as i64);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -331,7 +337,7 @@ impl Index {
|
||||||
|
|
||||||
// Write to DB
|
// Write to DB
|
||||||
store.write(rows);
|
store.write(rows);
|
||||||
self.stats.update(block);
|
self.stats.update(block, header);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
store.flush(); // make sure no row is left behind
|
store.flush(); // make sure no row is left behind
|
||||||
|
|
|
@ -3,7 +3,7 @@ use std::io;
|
||||||
use std::net::SocketAddr;
|
use std::net::SocketAddr;
|
||||||
use tiny_http;
|
use tiny_http;
|
||||||
|
|
||||||
pub use prometheus::{IntCounter as Counter, Opts as MetricOpts};
|
pub use prometheus::{IntCounter as Counter, IntGauge as Gauge, Opts as MetricOpts};
|
||||||
|
|
||||||
pub struct Metrics {
|
pub struct Metrics {
|
||||||
reg: prometheus::Registry,
|
reg: prometheus::Registry,
|
||||||
|
@ -19,9 +19,15 @@ impl Metrics {
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn counter(&self, opts: prometheus::Opts) -> Counter {
|
pub fn counter(&self, opts: prometheus::Opts) -> Counter {
|
||||||
let cnt = Counter::with_opts(opts).unwrap();
|
let c = Counter::with_opts(opts).unwrap();
|
||||||
self.reg.register(Box::new(cnt.clone())).unwrap();
|
self.reg.register(Box::new(c.clone())).unwrap();
|
||||||
cnt
|
c
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn gauge(&self, opts: prometheus::Opts) -> Gauge {
|
||||||
|
let g = Gauge::with_opts(opts).unwrap();
|
||||||
|
self.reg.register(Box::new(g.clone())).unwrap();
|
||||||
|
g
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn serve(&self) {
|
pub fn serve(&self) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user