mirror of https://github.com/statping/statping
metrics
parent
98e80157b5
commit
722ce47977
|
@ -1,5 +1,4 @@
|
||||||
{{ define "base" }}
|
{{ define "base" }}<!DOCTYPE html>
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
|
|
|
@ -6,38 +6,6 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
serviceOnline = prometheus.NewCounterVec(
|
|
||||||
prometheus.CounterOpts{
|
|
||||||
Name: "service_online",
|
|
||||||
Help: "How many failures occur for a service",
|
|
||||||
},
|
|
||||||
[]string{"service"},
|
|
||||||
)
|
|
||||||
|
|
||||||
serviceFailures = prometheus.NewCounterVec(
|
|
||||||
prometheus.CounterOpts{
|
|
||||||
Name: "service_failures",
|
|
||||||
Help: "How many failures occur for a service",
|
|
||||||
},
|
|
||||||
[]string{"service"},
|
|
||||||
)
|
|
||||||
|
|
||||||
serviceSuccess = prometheus.NewCounterVec(
|
|
||||||
prometheus.CounterOpts{
|
|
||||||
Name: "service_success",
|
|
||||||
Help: "How many successful requests for a service",
|
|
||||||
},
|
|
||||||
[]string{"service"},
|
|
||||||
)
|
|
||||||
|
|
||||||
serviceLatencyDuration = prometheus.NewHistogramVec(
|
|
||||||
prometheus.HistogramOpts{
|
|
||||||
Name: "service_request_duration",
|
|
||||||
Help: "How many successful requests for a service",
|
|
||||||
},
|
|
||||||
[]string{"service"},
|
|
||||||
)
|
|
||||||
|
|
||||||
utilsHttpRequestDur = prometheus.NewHistogramVec(
|
utilsHttpRequestDur = prometheus.NewHistogramVec(
|
||||||
prometheus.HistogramOpts{
|
prometheus.HistogramOpts{
|
||||||
Name: "http_requests_duration",
|
Name: "http_requests_duration",
|
||||||
|
@ -60,6 +28,7 @@ func init() {
|
||||||
serviceOnline,
|
serviceOnline,
|
||||||
serviceFailures,
|
serviceFailures,
|
||||||
serviceSuccess,
|
serviceSuccess,
|
||||||
|
serviceStatusCode,
|
||||||
serviceLatencyDuration,
|
serviceLatencyDuration,
|
||||||
utilsHttpRequestDur,
|
utilsHttpRequestDur,
|
||||||
utilsHttpRequestBytes,
|
utilsHttpRequestBytes,
|
||||||
|
@ -77,6 +46,15 @@ func Histo(method string, value float64, labels ...interface{}) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Gauge(method string, value float64, labels ...interface{}) {
|
||||||
|
switch method {
|
||||||
|
case "service":
|
||||||
|
serviceStatusCode.WithLabelValues(convert(labels)...).Set(value)
|
||||||
|
case "online":
|
||||||
|
serviceOnline.WithLabelValues(convert(labels)...).Set(value)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func Inc(method string, labels ...interface{}) {
|
func Inc(method string, labels ...interface{}) {
|
||||||
switch method {
|
switch method {
|
||||||
case "failure":
|
case "failure":
|
||||||
|
|
|
@ -0,0 +1,50 @@
|
||||||
|
package metrics
|
||||||
|
|
||||||
|
import "github.com/prometheus/client_golang/prometheus"
|
||||||
|
|
||||||
|
var (
|
||||||
|
// service is online if set to 1, offline if 0
|
||||||
|
serviceOnline = prometheus.NewGaugeVec(
|
||||||
|
prometheus.GaugeOpts{
|
||||||
|
Name: "service_online",
|
||||||
|
Help: "If service is online",
|
||||||
|
},
|
||||||
|
[]string{"service"},
|
||||||
|
)
|
||||||
|
|
||||||
|
// service failures
|
||||||
|
serviceFailures = prometheus.NewCounterVec(
|
||||||
|
prometheus.CounterOpts{
|
||||||
|
Name: "service_failures",
|
||||||
|
Help: "How many failures occur for a service",
|
||||||
|
},
|
||||||
|
[]string{"service"},
|
||||||
|
)
|
||||||
|
|
||||||
|
// successful hits for a service
|
||||||
|
serviceSuccess = prometheus.NewCounterVec(
|
||||||
|
prometheus.CounterOpts{
|
||||||
|
Name: "service_success",
|
||||||
|
Help: "How many successful requests for a service",
|
||||||
|
},
|
||||||
|
[]string{"service"},
|
||||||
|
)
|
||||||
|
|
||||||
|
// service check latency
|
||||||
|
serviceLatencyDuration = prometheus.NewHistogramVec(
|
||||||
|
prometheus.HistogramOpts{
|
||||||
|
Name: "service_latency",
|
||||||
|
Help: "How many successful requests for a service",
|
||||||
|
},
|
||||||
|
[]string{"service"},
|
||||||
|
)
|
||||||
|
|
||||||
|
// http status code for a service
|
||||||
|
serviceStatusCode = prometheus.NewGaugeVec(
|
||||||
|
prometheus.GaugeOpts{
|
||||||
|
Name: "service_status_code",
|
||||||
|
Help: "HTTP Status code for a service",
|
||||||
|
},
|
||||||
|
[]string{"service"},
|
||||||
|
)
|
||||||
|
)
|
|
@ -276,6 +276,7 @@ func CheckHttp(s *Service, record bool) (*Service, error) {
|
||||||
metrics.Histo("latency", utils.Now().Sub(t1).Seconds(), s.Id)
|
metrics.Histo("latency", utils.Now().Sub(t1).Seconds(), s.Id)
|
||||||
s.LastResponse = string(content)
|
s.LastResponse = string(content)
|
||||||
s.LastStatusCode = res.StatusCode
|
s.LastStatusCode = res.StatusCode
|
||||||
|
metrics.Gauge("service", float64(res.StatusCode), s.Id)
|
||||||
|
|
||||||
if s.Expected.String != "" {
|
if s.Expected.String != "" {
|
||||||
match, err := regexp.MatchString(s.Expected.String, string(content))
|
match, err := regexp.MatchString(s.Expected.String, string(content))
|
||||||
|
@ -321,6 +322,7 @@ func recordSuccess(s *Service) {
|
||||||
s.LastLatency = hit.Latency
|
s.LastLatency = hit.Latency
|
||||||
sendSuccess(s)
|
sendSuccess(s)
|
||||||
s.SuccessNotified = true
|
s.SuccessNotified = true
|
||||||
|
metrics.Gauge("online", 1., s.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func AddNotifier(n ServiceNotifier) {
|
func AddNotifier(n ServiceNotifier) {
|
||||||
|
@ -373,6 +375,7 @@ func recordFailure(s *Service, issue string) {
|
||||||
s.SuccessNotified = false
|
s.SuccessNotified = false
|
||||||
s.DownText = s.DowntimeText()
|
s.DownText = s.DowntimeText()
|
||||||
sendFailure(s, fail)
|
sendFailure(s, fail)
|
||||||
|
metrics.Gauge("online", 0., s.Id)
|
||||||
}
|
}
|
||||||
|
|
||||||
func sendFailure(s *Service, f *failures.Failure) {
|
func sendFailure(s *Service, f *failures.Failure) {
|
||||||
|
|
Loading…
Reference in New Issue