Skip to main content

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_filtered::{IntGauge, MetricLevel, 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    tx_deny_config_receiving_objects_disabled: IntGauge,
20    tx_deny_config_move_authenticator_disabled: IntGauge,
21}
22
23impl NodeConfigMetrics {
24    pub fn new(registry: &Registry) -> Arc<Self> {
25        let this = Self {
26            tx_deny_config_user_transaction_disabled: register_int_gauge_with_registry!(
27                "tx_deny_config_user_transaction_disabled",
28                "Whether all user transactions are disabled",
29                registry;
30                MetricLevel::Warn
31            )
32            .unwrap(),
33            tx_deny_config_shared_object_disabled: register_int_gauge_with_registry!(
34                "tx_deny_config_shared_object_disabled",
35                "Whether all shared object transactions are disabled",
36                registry;
37                MetricLevel::Warn
38            )
39            .unwrap(),
40            tx_deny_config_package_publish_disabled: register_int_gauge_with_registry!(
41                "tx_deny_config_package_publish_disabled",
42                "Whether all package publish transactions are disabled",
43                registry;
44                MetricLevel::Warn
45            )
46            .unwrap(),
47            tx_deny_config_package_upgrade_disabled: register_int_gauge_with_registry!(
48                "tx_deny_config_package_upgrade_disabled",
49                "Whether all package upgrade transactions are disabled",
50                registry;
51                MetricLevel::Warn
52            )
53            .unwrap(),
54            tx_deny_config_num_denied_objects: register_int_gauge_with_registry!(
55                "tx_deny_config_num_denied_objects",
56                "Number of denied objects",
57                registry;
58                MetricLevel::Warn
59            )
60            .unwrap(),
61            tx_deny_config_num_denied_packages: register_int_gauge_with_registry!(
62                "tx_deny_config_num_denied_packages",
63                "Number of denied packages",
64                registry;
65                MetricLevel::Warn
66            )
67            .unwrap(),
68            tx_deny_config_num_denied_addresses: register_int_gauge_with_registry!(
69                "tx_deny_config_num_denied_addresses",
70                "Number of denied addresses",
71                registry;
72                MetricLevel::Warn
73            )
74            .unwrap(),
75            tx_deny_config_receiving_objects_disabled: register_int_gauge_with_registry!(
76                "tx_deny_config_receiving_objects_disabled",
77                "Whether all receiving objects transactions are disabled",
78                registry;
79                MetricLevel::Warn
80            )
81            .unwrap(),
82            tx_deny_config_move_authenticator_disabled: register_int_gauge_with_registry!(
83                "tx_deny_config_move_authenticator_disabled",
84                "Whether all move authenticator transactions are disabled",
85                registry;
86                MetricLevel::Warn
87            )
88            .unwrap(),
89        };
90        Arc::new(this)
91    }
92
93    pub fn record_metrics(&self, config: &NodeConfig) {
94        self.tx_deny_config_user_transaction_disabled
95            .set(config.transaction_deny_config.user_transaction_disabled() as i64);
96        self.tx_deny_config_shared_object_disabled
97            .set(config.transaction_deny_config.shared_object_disabled() as i64);
98        self.tx_deny_config_package_publish_disabled
99            .set(config.transaction_deny_config.package_publish_disabled() as i64);
100        self.tx_deny_config_package_upgrade_disabled
101            .set(config.transaction_deny_config.package_upgrade_disabled() as i64);
102        self.tx_deny_config_num_denied_objects
103            .set(config.transaction_deny_config.get_object_deny_set().len() as i64);
104        self.tx_deny_config_num_denied_packages
105            .set(config.transaction_deny_config.get_package_deny_set().len() as i64);
106        self.tx_deny_config_num_denied_addresses
107            .set(config.transaction_deny_config.get_address_deny_set().len() as i64);
108        self.tx_deny_config_receiving_objects_disabled
109            .set(config.transaction_deny_config.receiving_objects_disabled() as i64);
110        self.tx_deny_config_move_authenticator_disabled
111            .set(config.transaction_deny_config.move_authenticator_disabled() as i64);
112    }
113}