feat: set up metric to 0 if errors found
The `up` metric is now based on whether an error was found while reading data from the database to build other metrics. Note that there is a chance the `up` metric will not be correctly set if the last metric to be built before the `up` metric does not throw an error.
This commit is contained in:
parent
1282d635eb
commit
bd841c3a35
1 changed files with 19 additions and 4 deletions
|
@ -43,6 +43,7 @@ var (
|
||||||
|
|
||||||
type Exporter struct {
|
type Exporter struct {
|
||||||
db *fail2banDb.Fail2BanDB
|
db *fail2banDb.Fail2BanDB
|
||||||
|
lastError error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exporter) Describe(ch chan<- *prometheus.Desc) {
|
func (e *Exporter) Describe(ch chan<- *prometheus.Desc) {
|
||||||
|
@ -53,16 +54,26 @@ func (e *Exporter) Describe(ch chan<- *prometheus.Desc) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
|
func (e *Exporter) Collect(ch chan<- prometheus.Metric) {
|
||||||
ch <- prometheus.MustNewConstMetric(
|
|
||||||
metricUp, prometheus.GaugeValue, 1,
|
|
||||||
)
|
|
||||||
e.collectBadIpsPerJailMetrics(ch)
|
e.collectBadIpsPerJailMetrics(ch)
|
||||||
e.collectBannedIpsPerJailMetrics(ch)
|
e.collectBannedIpsPerJailMetrics(ch)
|
||||||
e.collectEnabledJailMetrics(ch)
|
e.collectEnabledJailMetrics(ch)
|
||||||
|
e.collectUpMetric(ch)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *Exporter) collectUpMetric(ch chan<- prometheus.Metric) {
|
||||||
|
var upMetricValue float64 = 1
|
||||||
|
if e.lastError != nil {
|
||||||
|
upMetricValue = 0
|
||||||
|
}
|
||||||
|
ch <- prometheus.MustNewConstMetric(
|
||||||
|
metricUp, prometheus.GaugeValue, upMetricValue,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Exporter) collectBadIpsPerJailMetrics(ch chan<- prometheus.Metric) {
|
func (e *Exporter) collectBadIpsPerJailMetrics(ch chan<- prometheus.Metric) {
|
||||||
jailNameToCountMap, err := e.db.CountBadIpsPerJail()
|
jailNameToCountMap, err := e.db.CountBadIpsPerJail()
|
||||||
|
e.lastError = err
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Print(err)
|
||||||
}
|
}
|
||||||
|
@ -76,6 +87,8 @@ func (e *Exporter) collectBadIpsPerJailMetrics(ch chan<- prometheus.Metric) {
|
||||||
|
|
||||||
func (e *Exporter) collectBannedIpsPerJailMetrics(ch chan<- prometheus.Metric) {
|
func (e *Exporter) collectBannedIpsPerJailMetrics(ch chan<- prometheus.Metric) {
|
||||||
jailNameToCountMap, err := e.db.CountBannedIpsPerJail()
|
jailNameToCountMap, err := e.db.CountBannedIpsPerJail()
|
||||||
|
e.lastError = err
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Print(err)
|
||||||
}
|
}
|
||||||
|
@ -89,6 +102,8 @@ func (e *Exporter) collectBannedIpsPerJailMetrics(ch chan<- prometheus.Metric) {
|
||||||
|
|
||||||
func (e *Exporter) collectEnabledJailMetrics(ch chan<- prometheus.Metric) {
|
func (e *Exporter) collectEnabledJailMetrics(ch chan<- prometheus.Metric) {
|
||||||
jailNameToEnabledMap, err := e.db.JailNameToEnabledValue()
|
jailNameToEnabledMap, err := e.db.JailNameToEnabledValue()
|
||||||
|
e.lastError = err
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Print(err)
|
log.Print(err)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue