Add total attempts metric

This commit is contained in:
Torjus Håkestad 2021-10-29 19:15:11 +02:00
parent 0560e2a76c
commit 492c88c5b2
2 changed files with 12 additions and 1 deletions

View File

@ -14,6 +14,7 @@ type MetricsCollectingStore struct {
uniqueUsernamesCount prometheus.Gauge uniqueUsernamesCount prometheus.Gauge
uniquePasswordsCount prometheus.Gauge uniquePasswordsCount prometheus.Gauge
uniqueIPsCount prometheus.Gauge uniqueIPsCount prometheus.Gauge
totalAttemptsCount prometheus.Gauge
} }
func NewMetricsCollectingStore(ctx context.Context, store LoginAttemptStore) *MetricsCollectingStore { func NewMetricsCollectingStore(ctx context.Context, store LoginAttemptStore) *MetricsCollectingStore {
@ -48,10 +49,18 @@ func NewMetricsCollectingStore(ctx context.Context, store LoginAttemptStore) *Me
ConstLabels: prometheus.Labels{"service": "honeypot_ssh"}, ConstLabels: prometheus.Labels{"service": "honeypot_ssh"},
}) })
mcs.totalAttemptsCount = prometheus.NewGauge(
prometheus.GaugeOpts{
Name: "apiary_ssh_total_login_attempts",
Help: "Total amount of login attempts made.",
ConstLabels: prometheus.Labels{"service": "honeypot_ssh"},
})
prometheus.MustRegister(mcs.attemptsCounter) prometheus.MustRegister(mcs.attemptsCounter)
prometheus.MustRegister(mcs.uniqueUsernamesCount) prometheus.MustRegister(mcs.uniqueUsernamesCount)
prometheus.MustRegister(mcs.uniquePasswordsCount) prometheus.MustRegister(mcs.uniquePasswordsCount)
prometheus.MustRegister(mcs.uniqueIPsCount) prometheus.MustRegister(mcs.uniqueIPsCount)
prometheus.MustRegister(mcs.totalAttemptsCount)
// Kinda jank, we just fetch the stats every 10seconds, but it should be cached most of the time. // Kinda jank, we just fetch the stats every 10seconds, but it should be cached most of the time.
go func(ctx context.Context) { go func(ctx context.Context) {
@ -88,6 +97,8 @@ func (s *MetricsCollectingStore) Stats(statType LoginStats, limit int) ([]StatsR
s.uniqueUsernamesCount.Set(float64(element.Count)) s.uniqueUsernamesCount.Set(float64(element.Count))
case "UniqueIPs": case "UniqueIPs":
s.uniqueIPsCount.Set(float64(element.Count)) s.uniqueIPsCount.Set(float64(element.Count))
case "TotalLoginAttempts":
s.totalAttemptsCount.Set(float64(element.Count))
default: default:
continue continue
} }

View File

@ -5,7 +5,7 @@ import (
"runtime" "runtime"
) )
var Version = "v0.1.16" var Version = "v0.1.17"
var Build string var Build string
func FullVersion() string { func FullVersion() string {