Repository: paritytech/substrate
File: client/network/src/service/out_events.rs (Rust)

Code before:
}

struct Metrics {
	// This list is ordered alphabetically
	out_events_dht_count: Gauge<U64>,
	out_events_num_channels: Gauge<U64>,
	out_events_notifications_closed_count: GaugeVec<U64>,
	out_events_notifications_opened_count: GaugeVec<U64>,
	out_events_notifications_sizes: GaugeVec<U64>,
}

impl Metrics {
	fn register(registry: &Registry) -> Result<Self, PrometheusError> {
		Ok(Self {
			out_events_dht_count: register(Gauge::new(
				"sub_libp2p_out_events_dht_count",
				"Number of DHT events currently pending in the channels that broadcast network events",
			)?, registry)?,
			out_events_num_channels: register(Gauge::new(
				"sub_libp2p_out_events_num_channels",
				"Number of internal active channels that broadcast network events",
			)?, registry)?,
			out_events_notifications_closed_count: register(GaugeVec::new(
				Opts::new(
					"sub_libp2p_out_events_notifications_closed_count",
					"Number of notification substreams opened events pending in the channels that broadcast network events"
				),
				&["protocol"]
			)?, registry)?,
			out_events_notifications_opened_count: register(GaugeVec::new(
				Opts::new(
					"sub_libp2p_out_events_notifications_opened_count",
					"Number of notification substreams opened events pending in the channels that broadcast network events"
				),
				&["protocol"]
			)?, registry)?,
			out_events_notifications_sizes: register(GaugeVec::new(
				Opts::new(
					"sub_libp2p_out_events_notifications_sizes",
					"Total size of notification events pending in the channels that broadcast network events"
				),
				&["protocol"]
			)?, registry)?,
		})
	}
}

fn increase_metrics(metrics: &Metrics, event: &Event, num: u64) {
	match event {
		Event::Dht(_) => metrics.out_events_dht_count.inc(),
		Event::NotificationStreamOpened { engine_id, .. } => {

Review comment (suggestion):
```suggestion
					"Number of notification substreams closed events pending in the channels that broadcast network events"
```

Code after:

struct Metrics {
	// This list is ordered alphabetically
	events_total: CounterVec<U64>,
	notifications_sizes: CounterVec<U64>,
	num_channels: Gauge<U64>,
}

impl Metrics {
	fn register(registry: &Registry) -> Result<Self, PrometheusError> {
		Ok(Self {
			events_total: register(CounterVec::new(
				Opts::new(
					"sub_libp2p_out_events_events_total",
					"Number of broadcast network events that have been sent or received across all \
					 channels"
				),
				&["event_name", "action"]
			)?, registry)?,
			notifications_sizes: register(CounterVec::new(
				Opts::new(
					"sub_libp2p_out_events_notifications_sizes",
					"Size of notification events that have been sent or received across all \
					 channels"
				),
				&["protocol", "action"]
			)?, registry)?,
			num_channels: register(Gauge::new(
				"sub_libp2p_out_events_num_channels",
				"Number of internal active channels that broadcast network events",
			)?, registry)?,
		})
	}

	fn event_in(&self, event: &Event, num: u64) {
		match event {
			Event::Dht(_) => {
				self.events_total
					.with_label_values(&["dht", "sent"])
					.inc_by(num);
			}
			Event::NotificationStreamOpened { engine_id, .. } => {
				self.events_total
					.with_label_values(&[&format!("notif-open-{:?}", engine_id), "sent"])
					.inc_by(num);
			},
			Event::NotificationStreamClosed { engine_id, .. } => {
				self.events_total
					.with_label_values(&[&format!("notif-closed-{:?}", engine_id), "sent"])
					.inc_by(num);
			},