Add metrics collector for HTTP status codes

This commit is contained in:
Ingo Oppermann
2023-09-29 17:18:59 +02:00
parent 40495e5ef0
commit 5b81e6e23f
5 changed files with 98 additions and 6 deletions

49
monitor/http.go Normal file
View File

@@ -0,0 +1,49 @@
package monitor
import (
"strconv"
"github.com/datarhei/core/v16/http/server"
"github.com/datarhei/core/v16/monitor/metric"
)
type httpCollector struct {
handler server.Server
name string
statusDescr *metric.Description
}
func NewHTTPCollector(name string, handler server.Server) metric.Collector {
c := &httpCollector{
handler: handler,
name: name,
}
c.statusDescr = metric.NewDesc("http_status", "Total return status", []string{"name", "code"})
return c
}
func (c *httpCollector) Prefix() string {
return "filesystem"
}
func (c *httpCollector) Describe() []*metric.Description {
return []*metric.Description{
c.statusDescr,
}
}
func (c *httpCollector) Collect() metric.Metrics {
status := c.handler.HTTPStatus()
metrics := metric.NewMetrics()
for code, count := range status {
metrics.Add(metric.NewValue(c.statusDescr, float64(count), c.name, strconv.Itoa(code)))
}
return metrics
}
func (c *httpCollector) Stop() {}