checker-happydeliver/checker/provider.go

47 lines
1.1 KiB
Go

package checker
import (
"encoding/json"
"time"
sdk "git.happydns.org/checker-sdk-go/checker"
)
func Provider() sdk.ObservationProvider {
return &happyDeliverProvider{}
}
type happyDeliverProvider struct{}
func (p *happyDeliverProvider) Key() sdk.ObservationKey {
return ObservationKeyHappyDeliver
}
func (p *happyDeliverProvider) Definition() *sdk.CheckerDefinition {
return Definition()
}
func (p *happyDeliverProvider) ExtractMetrics(ctx sdk.ReportContext, collectedAt time.Time) ([]sdk.CheckMetric, error) {
var data HappyDeliverData
if err := json.Unmarshal(ctx.Data(), &data); err != nil {
return nil, err
}
if len(data.Scores) == 0 {
return nil, nil
}
metrics := make([]sdk.CheckMetric, 0, len(AllSections))
for _, section := range AllSections {
score, ok := data.Scores[section]
if !ok {
continue
}
metrics = append(metrics, sdk.CheckMetric{
Name: "happydeliver_score",
Value: float64(score),
Unit: "points",
Labels: map[string]string{"section": section},
Timestamp: collectedAt,
})
}
return metrics, nil
}