iota_config/
node_config_metrics.rs

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