Add const client label to metrics (#406)

* Add const client label to metrics

* Remove string format

* Fix formatting
diff --git a/pulsar/consumer_impl.go b/pulsar/consumer_impl.go
index 8ae9161..fc6c0fb 100644
--- a/pulsar/consumer_impl.go
+++ b/pulsar/consumer_impl.go
@@ -36,18 +36,21 @@
 
 var (
 	consumersOpened = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_consumers_opened",
-		Help: "Counter of consumers created by the client",
+		Name:        "pulsar_client_consumers_opened",
+		Help:        "Counter of consumers created by the client",
+		ConstLabels: constLabels(),
 	})
 
 	consumersClosed = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_consumers_closed",
-		Help: "Counter of consumers closed by the client",
+		Name:        "pulsar_client_consumers_closed",
+		Help:        "Counter of consumers closed by the client",
+		ConstLabels: constLabels(),
 	})
 
 	consumersPartitions = promauto.NewGauge(prometheus.GaugeOpts{
-		Name: "pulsar_client_consumers_partitions_active",
-		Help: "Counter of individual partitions the consumers are currently active",
+		Name:        "pulsar_client_consumers_partitions_active",
+		Help:        "Counter of individual partitions the consumers are currently active",
+		ConstLabels: constLabels(),
 	})
 )
 
diff --git a/pulsar/consumer_partition.go b/pulsar/consumer_partition.go
index 5ec51fb..13888b5 100644
--- a/pulsar/consumer_partition.go
+++ b/pulsar/consumer_partition.go
@@ -36,44 +36,52 @@
 
 var (
 	messagesReceived = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_messages_received",
-		Help: "Counter of messages received by the client",
+		Name:        "pulsar_client_messages_received",
+		Help:        "Counter of messages received by the client",
+		ConstLabels: constLabels(),
 	})
 
 	bytesReceived = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_bytes_received",
-		Help: "Counter of bytes received by the client",
+		Name:        "pulsar_client_bytes_received",
+		Help:        "Counter of bytes received by the client",
+		ConstLabels: constLabels(),
 	})
 
 	prefetchedMessages = promauto.NewGauge(prometheus.GaugeOpts{
-		Name: "pulsar_client_consumer_prefetched_messages",
-		Help: "Number of messages currently sitting in the consumer pre-fetch queue",
+		Name:        "pulsar_client_consumer_prefetched_messages",
+		Help:        "Number of messages currently sitting in the consumer pre-fetch queue",
+		ConstLabels: constLabels(),
 	})
 
 	prefetchedBytes = promauto.NewGauge(prometheus.GaugeOpts{
-		Name: "pulsar_client_consumer_prefetched_bytes",
-		Help: "Total number of bytes currently sitting in the consumer pre-fetch queue",
+		Name:        "pulsar_client_consumer_prefetched_bytes",
+		Help:        "Total number of bytes currently sitting in the consumer pre-fetch queue",
+		ConstLabels: constLabels(),
 	})
 
 	acksCounter = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_consumer_acks",
-		Help: "Counter of messages acked by client",
+		Name:        "pulsar_client_consumer_acks",
+		Help:        "Counter of messages acked by client",
+		ConstLabels: constLabels(),
 	})
 
 	nacksCounter = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_consumer_nacks",
-		Help: "Counter of messages nacked by client",
+		Name:        "pulsar_client_consumer_nacks",
+		Help:        "Counter of messages nacked by client",
+		ConstLabels: constLabels(),
 	})
 
 	dlqCounter = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_consumer_dlq_messages",
-		Help: "Counter of messages sent to Dead letter queue",
+		Name:        "pulsar_client_consumer_dlq_messages",
+		Help:        "Counter of messages sent to Dead letter queue",
+		ConstLabels: constLabels(),
 	})
 
 	processingTime = promauto.NewHistogram(prometheus.HistogramOpts{
-		Name:    "pulsar_client_consumer_processing_time_seconds",
-		Help:    "Time it takes for application to process messages",
-		Buckets: []float64{.0005, .001, .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10},
+		Name:        "pulsar_client_consumer_processing_time_seconds",
+		Help:        "Time it takes for application to process messages",
+		Buckets:     []float64{.0005, .001, .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10},
+		ConstLabels: constLabels(),
 	})
 
 	lastestMessageID = LatestMessageID()
diff --git a/pulsar/internal/connection.go b/pulsar/internal/connection.go
index d9c124c..51aa829 100644
--- a/pulsar/internal/connection.go
+++ b/pulsar/internal/connection.go
@@ -49,23 +49,27 @@
 
 var (
 	connectionsOpened = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_connections_opened",
-		Help: "Counter of connections created by the client",
+		Name:        "pulsar_client_connections_opened",
+		Help:        "Counter of connections created by the client",
+		ConstLabels: constLabels(),
 	})
 
 	connectionsClosed = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_connections_closed",
-		Help: "Counter of connections closed by the client",
+		Name:        "pulsar_client_connections_closed",
+		Help:        "Counter of connections closed by the client",
+		ConstLabels: constLabels(),
 	})
 
 	connectionsEstablishmentErrors = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_connections_establishment_errors",
-		Help: "Counter of errors in connections establishment",
+		Name:        "pulsar_client_connections_establishment_errors",
+		Help:        "Counter of errors in connections establishment",
+		ConstLabels: constLabels(),
 	})
 
 	connectionsHandshakeErrors = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_connections_handshake_errors",
-		Help: "Counter of errors in connections handshake (eg: authz)",
+		Name:        "pulsar_client_connections_handshake_errors",
+		Help:        "Counter of errors in connections handshake (eg: authz)",
+		ConstLabels: constLabels(),
 	})
 )
 
diff --git a/pulsar/internal/lookup_service.go b/pulsar/internal/lookup_service.go
index 00f54ef..b72364b 100644
--- a/pulsar/internal/lookup_service.go
+++ b/pulsar/internal/lookup_service.go
@@ -32,8 +32,9 @@
 
 var (
 	lookupRequestsCount = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_lookup_count",
-		Help: "Counter of lookup requests made by the client",
+		Name:        "pulsar_client_lookup_count",
+		Help:        "Counter of lookup requests made by the client",
+		ConstLabels: constLabels(),
 	})
 )
 
diff --git a/pulsar/internal/metrics.go b/pulsar/internal/metrics.go
new file mode 100644
index 0000000..ccd706d
--- /dev/null
+++ b/pulsar/internal/metrics.go
@@ -0,0 +1,24 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package internal
+
+func constLabels() map[string]string {
+	return map[string]string{
+		"client": "go",
+	}
+}
diff --git a/pulsar/internal/rpc_client.go b/pulsar/internal/rpc_client.go
index f53c16b..d13cf89 100644
--- a/pulsar/internal/rpc_client.go
+++ b/pulsar/internal/rpc_client.go
@@ -35,8 +35,9 @@
 
 var (
 	rpcRequestCount = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_rpc_count",
-		Help: "Counter of RPC requests made by the client",
+		Name:        "pulsar_client_rpc_count",
+		Help:        "Counter of RPC requests made by the client",
+		ConstLabels: constLabels(),
 	})
 )
 
diff --git a/pulsar/metrics.go b/pulsar/metrics.go
new file mode 100644
index 0000000..c7b98af
--- /dev/null
+++ b/pulsar/metrics.go
@@ -0,0 +1,24 @@
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+
+package pulsar
+
+func constLabels() map[string]string {
+	return map[string]string{
+		"client": "go",
+	}
+}
diff --git a/pulsar/producer_impl.go b/pulsar/producer_impl.go
index 51ae69e..0c4b286 100644
--- a/pulsar/producer_impl.go
+++ b/pulsar/producer_impl.go
@@ -47,18 +47,21 @@
 
 var (
 	producersOpened = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_producers_opened",
-		Help: "Counter of producers created by the client",
+		Name:        "pulsar_client_producers_opened",
+		Help:        "Counter of producers created by the client",
+		ConstLabels: constLabels(),
 	})
 
 	producersClosed = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_producers_closed",
-		Help: "Counter of producers closed by the client",
+		Name:        "pulsar_client_producers_closed",
+		Help:        "Counter of producers closed by the client",
+		ConstLabels: constLabels(),
 	})
 
 	producersPartitions = promauto.NewGauge(prometheus.GaugeOpts{
-		Name: "pulsar_client_producers_partitions_active",
-		Help: "Counter of individual partitions the producers are currently active",
+		Name:        "pulsar_client_producers_partitions_active",
+		Help:        "Counter of individual partitions the producers are currently active",
+		ConstLabels: constLabels(),
 	})
 )
 
diff --git a/pulsar/producer_partition.go b/pulsar/producer_partition.go
index bea73aa..09d9eb8 100644
--- a/pulsar/producer_partition.go
+++ b/pulsar/producer_partition.go
@@ -61,40 +61,47 @@
 
 var (
 	messagesPublished = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_messages_published",
-		Help: "Counter of messages published by the client",
+		Name:        "pulsar_client_messages_published",
+		Help:        "Counter of messages published by the client",
+		ConstLabels: constLabels(),
 	})
 
 	bytesPublished = promauto.NewCounter(prometheus.CounterOpts{
-		Name: "pulsar_client_bytes_published",
-		Help: "Counter of messages published by the client",
+		Name:        "pulsar_client_bytes_published",
+		Help:        "Counter of messages published by the client",
+		ConstLabels: constLabels(),
 	})
 
 	messagesPending = promauto.NewGauge(prometheus.GaugeOpts{
-		Name: "pulsar_client_producer_pending_messages",
-		Help: "Counter of messages pending to be published by the client",
+		Name:        "pulsar_client_producer_pending_messages",
+		Help:        "Counter of messages pending to be published by the client",
+		ConstLabels: constLabels(),
 	})
 
 	bytesPending = promauto.NewGauge(prometheus.GaugeOpts{
-		Name: "pulsar_client_producer_pending_bytes",
-		Help: "Counter of bytes pending to be published by the client",
+		Name:        "pulsar_client_producer_pending_bytes",
+		Help:        "Counter of bytes pending to be published by the client",
+		ConstLabels: constLabels(),
 	})
 
 	publishErrors = promauto.NewCounterVec(prometheus.CounterOpts{
-		Name: "pulsar_client_producer_errors",
-		Help: "Counter of publish errors",
+		Name:        "pulsar_client_producer_errors",
+		Help:        "Counter of publish errors",
+		ConstLabels: constLabels(),
 	}, []string{"error"})
 
 	publishLatency = promauto.NewHistogram(prometheus.HistogramOpts{
-		Name:    "pulsar_client_producer_latency_seconds",
-		Help:    "Publish latency experienced by the client",
-		Buckets: []float64{.0005, .001, .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10},
+		Name:        "pulsar_client_producer_latency_seconds",
+		Help:        "Publish latency experienced by the client",
+		ConstLabels: constLabels(),
+		Buckets:     []float64{.0005, .001, .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10},
 	})
 
 	publishRPCLatency = promauto.NewHistogram(prometheus.HistogramOpts{
-		Name:    "pulsar_client_producer_rpc_latency_seconds",
-		Help:    "Publish RPC latency experienced internally by the client when sending data to receiving an ack",
-		Buckets: []float64{.0005, .001, .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10},
+		Name:        "pulsar_client_producer_rpc_latency_seconds",
+		Help:        "Publish RPC latency experienced internally by the client when sending data to receiving an ack",
+		ConstLabels: constLabels(),
+		Buckets:     []float64{.0005, .001, .005, .01, .025, .05, .1, .25, .5, 1, 2.5, 5, 10},
 	})
 )