From d72ebb6a056c1db2f45e3af85d94c755afb05430 Mon Sep 17 00:00:00 2001
From: capossele <angelocapossele@gmail.com>
Date: Thu, 18 Jun 2020 09:04:16 +0100
Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=A7=20WIP?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 plugins/prometheus/analysis_server.go |  1 -
 plugins/prometheus/autopeering.go     |  2 +-
 plugins/prometheus/clients_info.go    | 33 +++++++++++++++++++++++++++
 plugins/prometheus/data.go            |  2 +-
 plugins/prometheus/fpc.go             | 17 +++++++-------
 plugins/prometheus/info.go            |  5 +++-
 plugins/prometheus/metrics.go         | 22 ++++++++++++++++++
 plugins/prometheus/network.go         |  2 +-
 plugins/prometheus/process.go         |  2 +-
 plugins/prometheus/tangle.go          | 12 +++++-----
 10 files changed, 77 insertions(+), 21 deletions(-)
 delete mode 100644 plugins/prometheus/analysis_server.go
 create mode 100644 plugins/prometheus/clients_info.go
 create mode 100644 plugins/prometheus/metrics.go

diff --git a/plugins/prometheus/analysis_server.go b/plugins/prometheus/analysis_server.go
deleted file mode 100644
index 7b1b4c03..00000000
--- a/plugins/prometheus/analysis_server.go
+++ /dev/null
@@ -1 +0,0 @@
-package prometheus
diff --git a/plugins/prometheus/autopeering.go b/plugins/prometheus/autopeering.go
index 369a60e4..e65b3534 100644
--- a/plugins/prometheus/autopeering.go
+++ b/plugins/prometheus/autopeering.go
@@ -14,7 +14,7 @@ var (
 	avgDistance                   prometheus.Gauge
 )
 
-func init() {
+func registerAutopeeringMetrics() {
 	neighborDropCount = prometheus.NewGauge(prometheus.GaugeOpts{
 		Name: "neighbor_drop_count",
 		Help: "Autopeering neighbor drop count.",
diff --git a/plugins/prometheus/clients_info.go b/plugins/prometheus/clients_info.go
new file mode 100644
index 00000000..44cbc205
--- /dev/null
+++ b/plugins/prometheus/clients_info.go
@@ -0,0 +1,33 @@
+package prometheus
+
+import (
+	"github.com/prometheus/client_golang/prometheus"
+)
+
+var (
+	clientsInfo *prometheus.GaugeVec
+)
+
+func registerClientsMetrics() {
+	clientsInfo = prometheus.NewGaugeVec(
+		prometheus.GaugeOpts{
+			Name: "clients_info",
+			Help: "Clients info.",
+		},
+		[]string{"info"},
+		// []string{"OS", "ARCH", "NUM_CPU", "CPU_USAGE", "MEM_USAGE"},
+	)
+
+	// registry.MustRegister(clientsInfo)
+
+	// collectClientsInfo()
+
+	// clientsInfo.WithLabelValues(banner.AppName, banner.AppVersion).Set(1)
+}
+
+func collectClientsInfo() {
+	// for ID, info := range metrics.ClientsMetrics() {
+	// 	clientsInfo.WithLabelValues()
+	// }
+
+}
diff --git a/plugins/prometheus/data.go b/plugins/prometheus/data.go
index 15198f47..0459b0f8 100644
--- a/plugins/prometheus/data.go
+++ b/plugins/prometheus/data.go
@@ -13,7 +13,7 @@ var (
 	dataSizes *prometheus.GaugeVec
 )
 
-func init() {
+func registerDataMetrics() {
 	dataSizes = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
 			Name: "iota_data_sizes_bytes",
diff --git a/plugins/prometheus/fpc.go b/plugins/prometheus/fpc.go
index 1df49dc6..a8fbe667 100644
--- a/plugins/prometheus/fpc.go
+++ b/plugins/prometheus/fpc.go
@@ -6,17 +6,17 @@ import (
 )
 
 var (
-	activeConflicts      prometheus.Gauge
+	activeConflicts    prometheus.Gauge
 	finalizedConflicts prometheus.Gauge
-	failedConflicts prometheus.Gauge
-	avgRoundToFin prometheus.Gauge
-	queryRx prometheus.Gauge
-	queryOpRx prometheus.Gauge
-	queryReplyNotRx prometheus.Gauge
-	queryOpReplyNotRx prometheus.Gauge
+	failedConflicts    prometheus.Gauge
+	avgRoundToFin      prometheus.Gauge
+	queryRx            prometheus.Gauge
+	queryOpRx          prometheus.Gauge
+	queryReplyNotRx    prometheus.Gauge
+	queryOpReplyNotRx  prometheus.Gauge
 )
 
-func init() {
+func registerFPCMetrics() {
 	activeConflicts = prometheus.NewGauge(prometheus.GaugeOpts{
 		Name: "fpc_active_conflicts",
 		Help: "number of currently active conflicts",
@@ -72,4 +72,3 @@ func collectFPCMetrics() {
 	queryReplyNotRx.Set(float64(metrics.FPCQueryReplyErrors()))
 	queryOpReplyNotRx.Set(float64(metrics.FPCOpinionQueryReplyErrors()))
 }
-
diff --git a/plugins/prometheus/info.go b/plugins/prometheus/info.go
index 3a6ede2f..43b99e8d 100644
--- a/plugins/prometheus/info.go
+++ b/plugins/prometheus/info.go
@@ -11,7 +11,7 @@ var (
 	sync    prometheus.Gauge
 )
 
-func init() {
+func registerInfoMetrics() {
 	infoApp = prometheus.NewGaugeVec(
 		prometheus.GaugeOpts{
 			Name: "iota_info_app",
@@ -26,6 +26,9 @@ func init() {
 		Help: "Node sync status.",
 	})
 
+	registry.MustRegister(infoApp)
+	registry.MustRegister(sync)
+
 	addCollect(collectInfoMetrics)
 }
 
diff --git a/plugins/prometheus/metrics.go b/plugins/prometheus/metrics.go
new file mode 100644
index 00000000..5aa8a7d1
--- /dev/null
+++ b/plugins/prometheus/metrics.go
@@ -0,0 +1,22 @@
+package prometheus
+
+import (
+	"github.com/iotaledger/goshimmer/plugins/config"
+	"github.com/iotaledger/goshimmer/plugins/metrics"
+)
+
+func init() {
+	if config.Node.GetBool(metrics.CfgMetricsLocal) {
+		registerAutopeeringMetrics()
+		registerDataMetrics()
+		registerFPCMetrics()
+		registerInfoMetrics()
+		registerNetworkMetrics()
+		registerProcessMetrics()
+		registerTangleMetrics()
+	}
+
+	if config.Node.GetBool(metrics.CfgMetricsGlobal) {
+		registerClientsMetrics()
+	}
+}
diff --git a/plugins/prometheus/network.go b/plugins/prometheus/network.go
index d5f95e2b..7e3e4d37 100644
--- a/plugins/prometheus/network.go
+++ b/plugins/prometheus/network.go
@@ -16,7 +16,7 @@ var (
 	autopeeringOutboundBytes prometheus.Gauge
 )
 
-func init() {
+func registerNetworkMetrics() {
 	fpcInboundBytes = prometheus.NewGauge(prometheus.GaugeOpts{
 		Name: "fpc_inbound_bytes",
 		Help: "FPC RX network traffic [bytes].",
diff --git a/plugins/prometheus/process.go b/plugins/prometheus/process.go
index c769ea51..c38a4338 100644
--- a/plugins/prometheus/process.go
+++ b/plugins/prometheus/process.go
@@ -10,7 +10,7 @@ var (
 	memUsageBytes prometheus.Gauge
 )
 
-func init() {
+func registerProcessMetrics() {
 	cpuUsage = prometheus.NewGauge(prometheus.GaugeOpts{
 		Name: "cpu_usage",
 		Help: "CPU (System) usage.",
diff --git a/plugins/prometheus/tangle.go b/plugins/prometheus/tangle.go
index dba459ef..1f28604f 100644
--- a/plugins/prometheus/tangle.go
+++ b/plugins/prometheus/tangle.go
@@ -7,17 +7,17 @@ import (
 )
 
 var (
-	messagesPerSecond prometheus.Gauge
+	messagesPerSecond          prometheus.Gauge
 	messagePerSecondPerPayload *prometheus.GaugeVec
-	messageTips prometheus.Gauge
-	messageCount *prometheus.GaugeVec
-	messageTotalCount prometheus.Gauge
+	messageTips                prometheus.Gauge
+	messageCount               *prometheus.GaugeVec
+	messageTotalCount          prometheus.Gauge
 
 	transactionsPerSecond prometheus.Gauge
-	valueTips prometheus.Gauge
+	valueTips             prometheus.Gauge
 )
 
-func init() {
+func registerTangleMetrics() {
 	messagesPerSecond = prometheus.NewGauge(prometheus.GaugeOpts{
 		Name: "tangle_messages_per_second",
 		Help: "Number of messages per second.",
-- 
GitLab