Add ssh metrics
This commit is contained in:
45
honeypot/ssh/store/metrics.go
Normal file
45
honeypot/ssh/store/metrics.go
Normal file
@@ -0,0 +1,45 @@
|
||||
package store
|
||||
|
||||
import (
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.uio.no/torjus/apiary/models"
|
||||
)
|
||||
|
||||
type MetricsCollectingStore struct {
|
||||
store LoginAttemptStore
|
||||
attemptsCounter *prometheus.CounterVec
|
||||
}
|
||||
|
||||
func NewMetricsCollectingStore(store LoginAttemptStore) *MetricsCollectingStore {
|
||||
mcs := &MetricsCollectingStore{store: store}
|
||||
|
||||
mcs.attemptsCounter = prometheus.NewCounterVec(
|
||||
prometheus.CounterOpts{
|
||||
Name: "apiary_ssh_attempt_counter",
|
||||
Help: "Total count of login attempts toward SSH",
|
||||
ConstLabels: prometheus.Labels{"service": "honeypot_ssh"},
|
||||
},
|
||||
[]string{"CountryCode"},
|
||||
)
|
||||
prometheus.MustRegister(mcs.attemptsCounter)
|
||||
|
||||
return mcs
|
||||
}
|
||||
|
||||
func (s *MetricsCollectingStore) AddAttempt(l *models.LoginAttempt) error {
|
||||
err := s.store.AddAttempt(l)
|
||||
s.attemptsCounter.WithLabelValues(l.Country).Inc()
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *MetricsCollectingStore) All() ([]models.LoginAttempt, error) {
|
||||
return s.store.All()
|
||||
}
|
||||
|
||||
func (s *MetricsCollectingStore) Stats(statType LoginStats, limit int) ([]StatsResult, error) {
|
||||
return s.store.Stats(statType, limit)
|
||||
}
|
||||
|
||||
func (s *MetricsCollectingStore) Query(query AttemptQuery) ([]models.LoginAttempt, error) {
|
||||
return s.store.Query(query)
|
||||
}
|
Reference in New Issue
Block a user