From 1f33419a4726d3741ba4bd0eb773cb3f88d49743 Mon Sep 17 00:00:00 2001 From: Levente Pap <levente.pap@iota.org> Date: Wed, 17 Jun 2020 16:12:56 +0200 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=88=20Prometheus=20Tangle=20metrics=20?= =?UTF-8?q?data=20collection?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/prometheus/local_metrics.go | 25 ------ plugins/prometheus/tangle.go | 101 ++++++++++++++++++++++++ tools/docker-network/docker-compose.yml | 2 +- 3 files changed, 102 insertions(+), 26 deletions(-) delete mode 100644 plugins/prometheus/local_metrics.go diff --git a/plugins/prometheus/local_metrics.go b/plugins/prometheus/local_metrics.go deleted file mode 100644 index 16840b96..00000000 --- a/plugins/prometheus/local_metrics.go +++ /dev/null @@ -1,25 +0,0 @@ -package prometheus - -import ( - "github.com/iotaledger/goshimmer/plugins/metrics" - "github.com/prometheus/client_golang/prometheus" -) - -var ( - messagesPerSecond prometheus.Gauge -) - -func init() { - messagesPerSecond = prometheus.NewGauge(prometheus.GaugeOpts{ - Name: "iota_messages_per_second", - Help: "Number of messages per second.", - }) - - registry.MustRegister(messagesPerSecond) - - addCollect(collectLocalMetrics) -} - -func collectLocalMetrics() { - messagesPerSecond.Set(float64(metrics.MPS())) -} diff --git a/plugins/prometheus/tangle.go b/plugins/prometheus/tangle.go index 7b1b4c03..dba459ef 100644 --- a/plugins/prometheus/tangle.go +++ b/plugins/prometheus/tangle.go @@ -1 +1,102 @@ package prometheus + +import ( + "github.com/iotaledger/goshimmer/packages/binary/messagelayer/payload" + "github.com/iotaledger/goshimmer/plugins/metrics" + "github.com/prometheus/client_golang/prometheus" +) + +var ( + messagesPerSecond prometheus.Gauge + messagePerSecondPerPayload *prometheus.GaugeVec + messageTips prometheus.Gauge + messageCount *prometheus.GaugeVec + messageTotalCount prometheus.Gauge + + transactionsPerSecond prometheus.Gauge + valueTips prometheus.Gauge +) + +func init() { + messagesPerSecond = prometheus.NewGauge(prometheus.GaugeOpts{ + Name: "tangle_messages_per_second", + Help: "Number of messages per second.", + }) + + // TODO: look into why not work + messagePerSecondPerPayload = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: "tangle_messages_per_second_per_payload", + Help: " message payload types and their corresponding MPS values", + }, []string{ + "message_type", + }) + + // TODO: look into why not work + messageTips = prometheus.NewGauge(prometheus.GaugeOpts{ + Name: "tangle_message_tips_count", + Help: "Current number of tips in message tangle", + }) + + messageCount = prometheus.NewGaugeVec( + prometheus.GaugeOpts{ + Name: "tangle_messages_count", + Help: "number of messages seen since the start of the node", + }, []string{ + "message_type", + }) + + messageTotalCount = prometheus.NewGauge(prometheus.GaugeOpts{ + Name: "tangle_message_total_count", + Help: "total number of messages seen since the start of the node", + }) + + transactionsPerSecond = prometheus.NewGauge(prometheus.GaugeOpts{ + Name: "tangle_value_transaction_per_second", + Help: "current transactions (value payloads) per second number", + }) + + valueTips = prometheus.NewGauge(prometheus.GaugeOpts{ + Name: "tangle_value_tips", + Help: "current number of tips in the value tangle", + }) + + registry.MustRegister(messagesPerSecond) + registry.MustRegister(messagePerSecondPerPayload) + registry.MustRegister(messageTips) + registry.MustRegister(messageCount) + registry.MustRegister(messageTotalCount) + registry.MustRegister(transactionsPerSecond) + registry.MustRegister(valueTips) + + addCollect(collectTangleMetrics) +} + +func collectTangleMetrics() { + messagesPerSecond.Set(float64(metrics.MPS())) + msgMPSPerPayload := metrics.MPSPerPayload() + for payloadType, mps := range msgMPSPerPayload { + messagePerSecondPerPayload.WithLabelValues(convertPayloadTypeToString(payloadType)).Set(float64(mps)) + } + messageTips.Set(float64(metrics.MessageTips())) + msgCountPerPayload := metrics.MessageCountPerPayload() + for payloadType, count := range msgCountPerPayload { + messageCount.WithLabelValues(convertPayloadTypeToString(payloadType)).Set(float64(count)) + } + messageTotalCount.Set(float64(metrics.MessageTotalCount())) + transactionsPerSecond.Set(float64(metrics.TPS())) + valueTips.Set(float64(metrics.ValueTips())) +} + +func convertPayloadTypeToString(p payload.Type) string { + switch p { + case 0: + return "data" + case 1: + return "value" + case 111: + return "drng" + default: + return "unknown" + } +} diff --git a/tools/docker-network/docker-compose.yml b/tools/docker-network/docker-compose.yml index 14115a55..467efcc7 100644 --- a/tools/docker-network/docker-compose.yml +++ b/tools/docker-network/docker-compose.yml @@ -86,7 +86,7 @@ services: - 3000:3000 user: "104" volumes: - - ./grafana:/var/lib/grafana + - ./grafana:/var/lib/grafana:rw # environment: # - GF_SECURITY_ADMIN_PASSWORD=MYPASSWORD # - GF_USERS_ALLOW_SIGN_UP=false -- GitLab