github.com/MetalBlockchain/metalgo@v1.11.9/utils/resource/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 resource 5 6 import ( 7 "errors" 8 9 "github.com/prometheus/client_golang/prometheus" 10 ) 11 12 type metrics struct { 13 numCPUCycles *prometheus.GaugeVec 14 numDiskReads *prometheus.GaugeVec 15 numDiskReadBytes *prometheus.GaugeVec 16 numDiskWrites *prometheus.GaugeVec 17 numDiskWritesBytes *prometheus.GaugeVec 18 } 19 20 func newMetrics(registerer prometheus.Registerer) (*metrics, error) { 21 m := &metrics{ 22 numCPUCycles: prometheus.NewGaugeVec( 23 prometheus.GaugeOpts{ 24 Name: "num_cpu_cycles", 25 Help: "Total number of CPU cycles", 26 }, 27 []string{"processID"}, 28 ), 29 numDiskReads: prometheus.NewGaugeVec( 30 prometheus.GaugeOpts{ 31 Name: "num_disk_reads", 32 Help: "Total number of disk reads", 33 }, 34 []string{"processID"}, 35 ), 36 numDiskReadBytes: prometheus.NewGaugeVec( 37 prometheus.GaugeOpts{ 38 Name: "num_disk_read_bytes", 39 Help: "Total number of disk read bytes", 40 }, 41 []string{"processID"}, 42 ), 43 numDiskWrites: prometheus.NewGaugeVec( 44 prometheus.GaugeOpts{ 45 Name: "num_disk_writes", 46 Help: "Total number of disk writes", 47 }, 48 []string{"processID"}, 49 ), 50 numDiskWritesBytes: prometheus.NewGaugeVec( 51 prometheus.GaugeOpts{ 52 Name: "num_disk_write_bytes", 53 Help: "Total number of disk write bytes", 54 }, 55 []string{"processID"}, 56 ), 57 } 58 err := errors.Join( 59 registerer.Register(m.numCPUCycles), 60 registerer.Register(m.numDiskReads), 61 registerer.Register(m.numDiskReadBytes), 62 registerer.Register(m.numDiskWrites), 63 registerer.Register(m.numDiskWritesBytes), 64 ) 65 return m, err 66 }