diff --git a/plugins/prometheus/analysis_server.go b/plugins/prometheus/analysis_server.go
deleted file mode 100644
index 7b1b4c03ead561149a146a3dee92ae4191b79990..0000000000000000000000000000000000000000
--- 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 369a60e40af9961e4201af2190de40e9e8a7dfaf..e65b353444b09e254c0230269c4383a28c2d5392 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 0000000000000000000000000000000000000000..44cbc20566aeefe0547c1dc492bea2c5dd491582
--- /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 15198f47f1145d9f764104ce5ef3aa3104d76842..0459b0f8d16edcd458f234277cae33e96d9e93f4 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 1df49dc6c31e437a04621a8bc73e05807ccfd71a..a8fbe667c011da1115e02c342fe3777d767ab1a5 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 3a6ede2f12c2bbdcc583806268825c506c12506c..43b99e8dea80772e64f8bb7f94717ab03bbb90a7 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 0000000000000000000000000000000000000000..5aa8a7d1a5ec5f368ecad502392e2397cd61f922
--- /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 d5f95e2bc4e6386410bc7165a466ab4731d019ed..7e3e4d37b4fb18e7dc4695cfbba633dc26a3c68b 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 c769ea517949f98d28d9c6be3ea377768e2fb82e..c38a433841f4a532a71adf6253df796875c26a2e 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 dba459efd47192259f0306bb35a19b86729b0ac5..1f28604f57d74ef06da1f7c07cdee564c960f269 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.",