diff --git a/plugins/metrics/message.go b/plugins/metrics/message.go
index 72319d94ca197a0fb6b1d41657cbf3d25d641f3b..94e1b42125c17f382562d26a50494faf84e1635b 100644
--- a/plugins/metrics/message.go
+++ b/plugins/metrics/message.go
@@ -12,6 +12,13 @@ var (
 	// Total number of processed messages since start of the node.
 	messageTotalCount atomic.Uint64
 
+	// Current number of solid messages in the node's database.
+	messageSolidCount atomic.Uint64
+
+	messageTotalCountDB atomic.Uint64
+
+	avgSolidificationTime atomic.Float64
+
 	// current number of message tips.
 	messageTips atomic.Uint64
 
@@ -62,6 +69,21 @@ func MessageRequestQueueSize() int64 {
 	return requestQueueSize.Load()
 }
 
+// MessageSolidCount returns the number of messages that are solid.
+func MessageSolidCount() uint64 {
+	return messageSolidCount.Load()
+}
+
+// MessageTotalCountDB returns the number of messages that are stored in the DB.
+func MessageTotalCountDB() uint64 {
+	return messageTotalCountDB.Load()
+}
+
+// AvgSolidificationTime returns the average time it takes for a message to become solid.
+func AvgSolidificationTime() float64 {
+	return avgSolidificationTime.Load()
+}
+
 ////// Handling data updates and measuring //////
 
 func increasePerPayloadCounter(p payload.Type) {
@@ -106,3 +128,10 @@ func measureRequestQueueSize() {
 	size := int64(messagelayer.MessageRequester().RequestQueueSize())
 	requestQueueSize.Store(size)
 }
+
+func measureDBStats() {
+	solid, total, avgSolidTime := messagelayer.Tangle().DBStats()
+	messageSolidCount.Store(uint64(solid))
+	messageTotalCountDB.Store(uint64(total))
+	avgSolidificationTime.Store(avgSolidTime)
+}
diff --git a/plugins/metrics/plugin.go b/plugins/metrics/plugin.go
index 3e2605be42ef842d2d7314e73ed25b34404b054d..68bedc1b7ca640e1bc6d89afe93d543760ce9e3d 100644
--- a/plugins/metrics/plugin.go
+++ b/plugins/metrics/plugin.go
@@ -68,6 +68,7 @@ func run(_ *node.Plugin) {
 				measureValueTips()
 				measureReceivedMPS()
 				measureRequestQueueSize()
+				measureDBStats()
 
 				// gossip network traffic
 				g := gossipCurrentTraffic()
diff --git a/plugins/prometheus/tangle.go b/plugins/prometheus/tangle.go
index fc3b48f41670d8798b1ef9bcf47c60bb125455d2..944431338d4c14ee773a99c69a1b00ee7ca731dc 100644
--- a/plugins/prometheus/tangle.go
+++ b/plugins/prometheus/tangle.go
@@ -7,10 +7,13 @@ import (
 )
 
 var (
-	messageTips         prometheus.Gauge
-	messagePerTypeCount *prometheus.GaugeVec
-	messageTotalCount   prometheus.Gauge
-	messageRequestCount prometheus.Gauge
+	messageTips           prometheus.Gauge
+	messagePerTypeCount   *prometheus.GaugeVec
+	messageTotalCount     prometheus.Gauge
+	messageTotalCountDB   prometheus.Gauge
+	messageSolidCount     prometheus.Gauge
+	avgSolidificationTime prometheus.Gauge
+	messageRequestCount   prometheus.Gauge
 
 	transactionCounter prometheus.Gauge
 	valueTips          prometheus.Gauge
@@ -35,6 +38,21 @@ func registerTangleMetrics() {
 		Help: "total number of messages seen since the start of the node",
 	})
 
+	messageTotalCountDB = prometheus.NewGauge(prometheus.GaugeOpts{
+		Name: "tangle_message_total_count_db",
+		Help: "total number of messages in the node's database",
+	})
+
+	messageSolidCount = prometheus.NewGauge(prometheus.GaugeOpts{
+		Name: "tangle_message_solid_count",
+		Help: "number of solid messages on the node's database",
+	})
+
+	avgSolidificationTime = prometheus.NewGauge(prometheus.GaugeOpts{
+		Name: "tangle_message_avg_solidification_time",
+		Help: "average time it takes for a message to become solid",
+	})
+
 	transactionCounter = prometheus.NewGauge(prometheus.GaugeOpts{
 		Name: "tangle_value_transaction_counter",
 		Help: "number of value transactions (value payloads) seen",
@@ -53,6 +71,9 @@ func registerTangleMetrics() {
 	registry.MustRegister(messageTips)
 	registry.MustRegister(messagePerTypeCount)
 	registry.MustRegister(messageTotalCount)
+	registry.MustRegister(messageTotalCountDB)
+	registry.MustRegister(messageSolidCount)
+	registry.MustRegister(avgSolidificationTime)
 	registry.MustRegister(messageRequestCount)
 	registry.MustRegister(transactionCounter)
 	registry.MustRegister(valueTips)
@@ -67,6 +88,9 @@ func collectTangleMetrics() {
 		messagePerTypeCount.WithLabelValues(payload.Name(payloadType)).Set(float64(count))
 	}
 	messageTotalCount.Set(float64(metrics.MessageTotalCount()))
+	messageTotalCountDB.Set(float64(metrics.MessageTotalCountDB()))
+	messageSolidCount.Set(float64(metrics.MessageSolidCount()))
+	avgSolidificationTime.Set(metrics.AvgSolidificationTime())
 	messageRequestCount.Set(float64(metrics.MessageRequestQueueSize()))
 	transactionCounter.Set(float64(metrics.ValueTransactionCounter()))
 	valueTips.Set(float64(metrics.ValueTips()))