From 14fd09752a99861e7c2a7dbbbd1efe41e267ea55 Mon Sep 17 00:00:00 2001 From: iknite Date: Mon, 4 Mar 2019 10:58:24 +0100 Subject: [PATCH] Metrics: Add client metrics --- client/client.go | 8 ++++++++ metrics/metrics.go | 40 ++++++++++++++++++++++++++++++++++++---- 2 files changed, 44 insertions(+), 4 deletions(-) diff --git a/client/client.go b/client/client.go index cfbdbe105..b453d32d9 100644 --- a/client/client.go +++ b/client/client.go @@ -33,6 +33,7 @@ import ( "github.com/bbva/qed/balloon" "github.com/bbva/qed/hashing" "github.com/bbva/qed/log" + "github.com/bbva/qed/metrics" "github.com/bbva/qed/protocol" ) @@ -211,6 +212,7 @@ func (c HTTPClient) Ping() error { // Add will do a request to the server with a post data to store a new event. func (c *HTTPClient) Add(event string) (*protocol.Snapshot, error) { + metrics.ClientEventAdd.Inc() data, _ := json.Marshal(&protocol.Event{Event: []byte(event)}) body, err := c.doReq("POST", "/events", data) @@ -228,6 +230,8 @@ func (c *HTTPClient) Add(event string) (*protocol.Snapshot, error) { // Membership will ask for a Proof to the server. func (c *HTTPClient) Membership(key []byte, version uint64) (*protocol.MembershipResult, error) { + metrics.ClientQueryMembership.Inc() + query, _ := json.Marshal(&protocol.MembershipQuery{ Key: key, Version: version, @@ -248,6 +252,8 @@ func (c *HTTPClient) Membership(key []byte, version uint64) (*protocol.Membershi // Membership will ask for a Proof to the server. func (c *HTTPClient) MembershipDigest(keyDigest hashing.Digest, version uint64) (*protocol.MembershipResult, error) { + metrics.ClientQueryMembership.Inc() + query, _ := json.Marshal(&protocol.MembershipDigest{ KeyDigest: keyDigest, Version: version, @@ -268,6 +274,8 @@ func (c *HTTPClient) MembershipDigest(keyDigest hashing.Digest, version uint64) // Incremental will ask for an IncrementalProof to the server. func (c *HTTPClient) Incremental(start, end uint64) (*protocol.IncrementalResponse, error) { + metrics.ClientQueryIncremental.Inc() + query, _ := json.Marshal(&protocol.IncrementalRequest{ Start: start, End: end, diff --git a/metrics/metrics.go b/metrics/metrics.go index c14858d96..a0b4cdd7b 100644 --- a/metrics/metrics.go +++ b/metrics/metrics.go @@ -26,12 +26,13 @@ import ( var ( - // BalloonStats has a Map of all the stats relative to Balloon + // Balloon has a Map of all the stats relative to Balloon Balloon *expvar.Map // Prometheus - // QED + // SERVER + QedInstancesCount = prometheus.NewGauge( prometheus.GaugeOpts{ Name: "qed_instances_count", @@ -49,6 +50,7 @@ var ( ) // BALLOON + QedBalloonAddDurationSeconds = prometheus.NewSummary( prometheus.SummaryOpts{ Name: "qed_balloon_add_duration_seconds", @@ -99,6 +101,7 @@ var ( ) // HYPER TREE + QedHyperAddTotal = prometheus.NewCounter( prometheus.CounterOpts{ Name: "qed_hyper_add_total", @@ -113,6 +116,7 @@ var ( ) // HISTORY TREE + QedHistoryAddTotal = prometheus.NewCounter( prometheus.CounterOpts{ Name: "qed_history_add_total", @@ -133,6 +137,7 @@ var ( ) // SENDER + QedSenderInstancesCount = prometheus.NewGauge( prometheus.GaugeOpts{ Name: "qed_sender_instances_count", @@ -146,6 +151,29 @@ var ( }, ) + // Client + + ClientEventAdd = prometheus.NewCounter( + prometheus.CounterOpts{ + Name: "client_event_add", + Help: "Number of events added into the cluster.", + }, + ) + ClientQueryMembership = prometheus.NewCounter( + prometheus.CounterOpts{ + Name: "client_query_membership", + Help: "Number of single events directly verified into the cluster.", + }, + ) + ClientQueryIncremental = prometheus.NewCounter( + prometheus.CounterOpts{ + Name: "client_query_incremental", + Help: "Number of range of verified events queried into the cluster.", + }, + ) + + // PROMETHEUS + metricsList = []prometheus.Collector{ QedInstancesCount, QedAPIHealthcheckRequestsTotal, @@ -162,10 +190,14 @@ var ( QedSenderInstancesCount, QedSenderBatchesSentTotal, + + ClientEventAdd, + ClientQueryMembership, + ClientQueryIncremental, } -) -var registerMetrics sync.Once + registerMetrics sync.Once +) // Register all metrics. func Register(r *prometheus.Registry) {