added code to export metrics
This commit is contained in:
98
server-metrics.go
Normal file
98
server-metrics.go
Normal file
@ -0,0 +1,98 @@
|
||||
package hodu
|
||||
|
||||
import "runtime"
|
||||
import "github.com/prometheus/client_golang/prometheus"
|
||||
|
||||
type ServerCollector struct {
|
||||
server *Server
|
||||
BuildInfo *prometheus.Desc
|
||||
ServerConns *prometheus.Desc
|
||||
ServerRoutes *prometheus.Desc
|
||||
ServerPeers *prometheus.Desc
|
||||
SshProxySessions *prometheus.Desc
|
||||
}
|
||||
|
||||
// NewServerCollector returns a new ServerCollector with all prometheus.Desc initialized
|
||||
func NewServerCollector(server *Server) ServerCollector {
|
||||
var prefix string
|
||||
|
||||
prefix = server.Name() + "_"
|
||||
return ServerCollector{
|
||||
server: server,
|
||||
|
||||
BuildInfo: prometheus.NewDesc(
|
||||
prefix + "build_info",
|
||||
"Build information",
|
||||
[]string{
|
||||
"goarch",
|
||||
"goos",
|
||||
"goversion",
|
||||
}, nil,
|
||||
),
|
||||
|
||||
ServerConns: prometheus.NewDesc(
|
||||
prefix + "server_conns",
|
||||
"Number of server connections from clients",
|
||||
nil, nil,
|
||||
),
|
||||
ServerRoutes: prometheus.NewDesc(
|
||||
prefix + "server_routes",
|
||||
"Number of server-side routes",
|
||||
nil, nil,
|
||||
),
|
||||
ServerPeers: prometheus.NewDesc(
|
||||
prefix + "server_peers",
|
||||
"Number of server-side peers",
|
||||
nil, nil,
|
||||
),
|
||||
SshProxySessions: prometheus.NewDesc(
|
||||
prefix + "ssh_pxy_sessions",
|
||||
"Number of SSH proxy sessions",
|
||||
nil, nil,
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
func (c ServerCollector) Describe(ch chan<- *prometheus.Desc) {
|
||||
ch <- c.BuildInfo
|
||||
ch <- c.ServerConns
|
||||
ch <- c.ServerRoutes
|
||||
ch <- c.ServerPeers
|
||||
ch <- c.SshProxySessions
|
||||
}
|
||||
|
||||
func (c ServerCollector) Collect(ch chan<- prometheus.Metric) {
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.BuildInfo,
|
||||
prometheus.GaugeValue,
|
||||
1,
|
||||
runtime.GOARCH,
|
||||
runtime.GOOS,
|
||||
runtime.Version(),
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.ServerConns,
|
||||
prometheus.GaugeValue,
|
||||
float64(c.server.stats.conns.Load()),
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.ServerRoutes,
|
||||
prometheus.GaugeValue,
|
||||
float64(c.server.stats.routes.Load()),
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.ServerPeers,
|
||||
prometheus.GaugeValue,
|
||||
float64(c.server.stats.peers.Load()),
|
||||
)
|
||||
|
||||
ch <- prometheus.MustNewConstMetric(
|
||||
c.SshProxySessions,
|
||||
prometheus.GaugeValue,
|
||||
float64(c.server.stats.ssh_proxy_sessions.Load()),
|
||||
)
|
||||
}
|
Reference in New Issue
Block a user