github.com/MetalBlockchain/metalgo@v1.11.9/vms/metervm/block_metrics.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package metervm 5 6 import ( 7 "github.com/prometheus/client_golang/prometheus" 8 9 "github.com/MetalBlockchain/metalgo/utils/metric" 10 "github.com/MetalBlockchain/metalgo/utils/wrappers" 11 ) 12 13 type blockMetrics struct { 14 buildBlock, 15 buildBlockErr, 16 parseBlock, 17 parseBlockErr, 18 getBlock, 19 getBlockErr, 20 setPreference, 21 lastAccepted, 22 verify, 23 verifyErr, 24 accept, 25 reject, 26 // Height metrics 27 getBlockIDAtHeight, 28 // Block verification with context metrics 29 shouldVerifyWithContext, 30 verifyWithContext, 31 verifyWithContextErr, 32 // Block building with context metrics 33 buildBlockWithContext, 34 buildBlockWithContextErr, 35 // Batched metrics 36 getAncestors, 37 batchedParseBlock, 38 // State sync metrics 39 stateSyncEnabled, 40 getOngoingSyncStateSummary, 41 getLastStateSummary, 42 parseStateSummary, 43 parseStateSummaryErr, 44 getStateSummary, 45 getStateSummaryErr metric.Averager 46 } 47 48 func (m *blockMetrics) Initialize( 49 supportsBlockBuildingWithContext bool, 50 supportsBatchedFetching bool, 51 supportsStateSync bool, 52 reg prometheus.Registerer, 53 ) error { 54 errs := wrappers.Errs{} 55 m.buildBlock = newAverager("build_block", reg, &errs) 56 m.buildBlockErr = newAverager("build_block_err", reg, &errs) 57 m.parseBlock = newAverager("parse_block", reg, &errs) 58 m.parseBlockErr = newAverager("parse_block_err", reg, &errs) 59 m.getBlock = newAverager("get_block", reg, &errs) 60 m.getBlockErr = newAverager("get_block_err", reg, &errs) 61 m.setPreference = newAverager("set_preference", reg, &errs) 62 m.lastAccepted = newAverager("last_accepted", reg, &errs) 63 m.verify = newAverager("verify", reg, &errs) 64 m.verifyErr = newAverager("verify_err", reg, &errs) 65 m.accept = newAverager("accept", reg, &errs) 66 m.reject = newAverager("reject", reg, &errs) 67 m.shouldVerifyWithContext = newAverager("should_verify_with_context", reg, &errs) 68 m.verifyWithContext = newAverager("verify_with_context", reg, &errs) 69 m.verifyWithContextErr = newAverager("verify_with_context_err", reg, &errs) 70 m.getBlockIDAtHeight = newAverager("get_block_id_at_height", reg, &errs) 71 72 if supportsBlockBuildingWithContext { 73 m.buildBlockWithContext = newAverager("build_block_with_context", reg, &errs) 74 m.buildBlockWithContextErr = newAverager("build_block_with_context_err", reg, &errs) 75 } 76 if supportsBatchedFetching { 77 m.getAncestors = newAverager("get_ancestors", reg, &errs) 78 m.batchedParseBlock = newAverager("batched_parse_block", reg, &errs) 79 } 80 if supportsStateSync { 81 m.stateSyncEnabled = newAverager("state_sync_enabled", reg, &errs) 82 m.getOngoingSyncStateSummary = newAverager("get_ongoing_state_sync_summary", reg, &errs) 83 m.getLastStateSummary = newAverager("get_last_state_summary", reg, &errs) 84 m.parseStateSummary = newAverager("parse_state_summary", reg, &errs) 85 m.parseStateSummaryErr = newAverager("parse_state_summary_err", reg, &errs) 86 m.getStateSummary = newAverager("get_state_summary", reg, &errs) 87 m.getStateSummaryErr = newAverager("get_state_summary_err", reg, &errs) 88 } 89 return errs.Err 90 }