UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

84 lines (81 loc) 3.87 kB
import {SubnetID} from "@lodestar/types"; import {RegistryMetricCreator} from "../../metrics/index.js"; import {ForkBoundaryLabel} from "./gossipsub.js"; import {GossipType} from "./interface.js"; export type Eth2GossipsubMetrics = ReturnType<typeof createEth2GossipsubMetrics>; export function createEth2GossipsubMetrics(register: RegistryMetricCreator) { return { gossipPeer: { scoreByThreshold: register.gauge<{threshold: string}>({ name: "lodestar_gossip_peer_score_by_threshold_count", help: "Gossip peer score by threshold", labelNames: ["threshold"], }), meshPeersByClient: register.gauge<{client: string}>({ name: "lodestar_gossip_mesh_peers_by_client_count", help: "number of mesh peers, labeled by client", labelNames: ["client"], }), score: register.avgMinMax({ name: "lodestar_gossip_score_avg_min_max", help: "Avg min max of all gossip peer scores", }), }, gossipMesh: { peersByType: register.gauge<{type: GossipType; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_mesh_peers_by_type_count", help: "Number of connected mesh peers per gossip type", labelNames: ["type", "boundary"], }), peersByBeaconAttestationSubnet: register.gauge<{subnet: string; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_mesh_peers_by_beacon_attestation_subnet_count", help: "Number of connected mesh peers per beacon attestation subnet", labelNames: ["subnet", "boundary"], }), peersBySyncCommitteeSubnet: register.gauge<{subnet: SubnetID; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_mesh_peers_by_sync_committee_subnet_count", help: "Number of connected mesh peers per sync committee subnet", labelNames: ["subnet", "boundary"], }), peersByDataColumnSubnet: register.gauge<{subnet: SubnetID; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_mesh_peers_by_data_column_subnet_count", help: "Number of connected mesh peers per data column subnet", labelNames: ["subnet", "boundary"], }), }, gossipTopic: { peersByType: register.gauge<{type: GossipType; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_topic_peers_by_type_count", help: "Number of connected topic peers per gossip type", labelNames: ["type", "boundary"], }), peersByBeaconAttestationSubnet: register.gauge<{subnet: string; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_topic_peers_by_beacon_attestation_subnet_count", help: "Number of connected topic peers per beacon attestation subnet", labelNames: ["subnet", "boundary"], }), peersBySyncCommitteeSubnet: register.gauge<{subnet: SubnetID; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_topic_peers_by_sync_committee_subnet_count", help: "Number of connected topic peers per sync committee subnet", labelNames: ["subnet", "boundary"], }), peersByDataColumnSubnet: register.gauge<{subnet: SubnetID; boundary: ForkBoundaryLabel}>({ name: "lodestar_gossip_topic_peers_by_data_column_subnet_count", help: "Number of connected topic peers per data column subnet", labelNames: ["subnet", "boundary"], }), }, dataTransform: { inbound: register.counter<{type: GossipType}>({ name: "lodestar_gossip_data_transform_inbound_total", help: "Total number of inbound data transforms by gossip type", labelNames: ["type"], }), outbound: register.counter<{type: GossipType}>({ name: "lodestar_gossip_data_transform_outbound_total", help: "Total number of outbound data transforms by gossip type", labelNames: ["type"], }), }, }; }