sui_config/
node_config_metrics.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::NodeConfig;
5use prometheus::{IntGauge, Registry, register_int_gauge_with_registry};
6use std::sync::Arc;
7
8pub struct NodeConfigMetrics {
9    tx_deny_config_user_transaction_disabled: IntGauge,
10    tx_deny_config_shared_object_disabled: IntGauge,
11    tx_deny_config_package_publish_disabled: IntGauge,
12    tx_deny_config_package_upgrade_disabled: IntGauge,
13    tx_deny_config_num_denied_objects: IntGauge,
14    tx_deny_config_num_denied_packages: IntGauge,
15    tx_deny_config_num_denied_addresses: IntGauge,
16}
17
18impl NodeConfigMetrics {
19    pub fn new(registry: &Registry) -> Arc<Self> {
20        let this = Self {
21            tx_deny_config_user_transaction_disabled: register_int_gauge_with_registry!(
22                "tx_deny_config_user_transaction_disabled",
23                "Whether all user transactions are disabled",
24                registry
25            )
26            .unwrap(),
27            tx_deny_config_shared_object_disabled: register_int_gauge_with_registry!(
28                "tx_deny_config_shared_object_disabled",
29                "Whether all shared object transactions are disabled",
30                registry
31            )
32            .unwrap(),
33            tx_deny_config_package_publish_disabled: register_int_gauge_with_registry!(
34                "tx_deny_config_package_publish_disabled",
35                "Whether all package publish transactions are disabled",
36                registry
37            )
38            .unwrap(),
39            tx_deny_config_package_upgrade_disabled: register_int_gauge_with_registry!(
40                "tx_deny_config_package_upgrade_disabled",
41                "Whether all package upgrade transactions are disabled",
42                registry
43            )
44            .unwrap(),
45            tx_deny_config_num_denied_objects: register_int_gauge_with_registry!(
46                "tx_deny_config_num_denied_objects",
47                "Number of denied objects",
48                registry
49            )
50            .unwrap(),
51            tx_deny_config_num_denied_packages: register_int_gauge_with_registry!(
52                "tx_deny_config_num_denied_packages",
53                "Number of denied packages",
54                registry
55            )
56            .unwrap(),
57            tx_deny_config_num_denied_addresses: register_int_gauge_with_registry!(
58                "tx_deny_config_num_denied_addresses",
59                "Number of denied addresses",
60                registry
61            )
62            .unwrap(),
63        };
64        Arc::new(this)
65    }
66
67    pub fn record_metrics(&self, config: &NodeConfig) {
68        self.tx_deny_config_user_transaction_disabled
69            .set(config.transaction_deny_config.user_transaction_disabled() as i64);
70        self.tx_deny_config_shared_object_disabled
71            .set(config.transaction_deny_config.shared_object_disabled() as i64);
72        self.tx_deny_config_package_publish_disabled
73            .set(config.transaction_deny_config.package_publish_disabled() as i64);
74        self.tx_deny_config_package_upgrade_disabled
75            .set(config.transaction_deny_config.package_upgrade_disabled() as i64);
76        self.tx_deny_config_num_denied_objects
77            .set(config.transaction_deny_config.get_object_deny_set().len() as i64);
78        self.tx_deny_config_num_denied_packages
79            .set(config.transaction_deny_config.get_package_deny_set().len() as i64);
80        self.tx_deny_config_num_denied_addresses
81            .set(config.transaction_deny_config.get_address_deny_set().len() as i64);
82    }
83}