Initial commit
This commit is contained in:
commit
2d98ed1b5d
33 changed files with 4644 additions and 0 deletions
59
checker/rules.go
Normal file
59
checker/rules.go
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
package checker
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
sdk "git.happydns.org/checker-sdk-go/checker"
|
||||
)
|
||||
|
||||
// Rules returns every CheckRule exposed by the resolver-propagation checker.
|
||||
// Each rule covers one concern so the UI and metrics consumers can reason
|
||||
// about them independently.
|
||||
func Rules() []sdk.CheckRule {
|
||||
return []sdk.CheckRule{
|
||||
&resolverSelectionRule{},
|
||||
&resolversReachableRule{},
|
||||
&consensusRule{},
|
||||
&authoritativeMatchRule{},
|
||||
&nxdomainRule{},
|
||||
&servfailRule{},
|
||||
®ionalSplitRule{},
|
||||
&serialDriftRule{},
|
||||
&staleCacheRule{},
|
||||
&dnssecRule{},
|
||||
&resolverLatencyRule{},
|
||||
&filteredHitRule{},
|
||||
}
|
||||
}
|
||||
|
||||
// loadData fetches the observation and returns an error state on failure.
|
||||
// It also runs deriveView so every rule sees a ready-to-use consensus.
|
||||
func loadData(ctx context.Context, obs sdk.ObservationGetter) (*ResolverPropagationData, *sdk.CheckState) {
|
||||
var data ResolverPropagationData
|
||||
if err := obs.Get(ctx, ObservationKeyResolverPropagation, &data); err != nil {
|
||||
return nil, &sdk.CheckState{
|
||||
Status: sdk.StatusError,
|
||||
Message: fmt.Sprintf("failed to load resolver-propagation observation: %v", err),
|
||||
Code: "resolver_propagation_error",
|
||||
}
|
||||
}
|
||||
deriveView(&data)
|
||||
return &data, nil
|
||||
}
|
||||
|
||||
func passState(code, message string) sdk.CheckState {
|
||||
return sdk.CheckState{Status: sdk.StatusOK, Message: message, Code: code}
|
||||
}
|
||||
|
||||
func infoState(code, subject, message string) sdk.CheckState {
|
||||
return sdk.CheckState{Status: sdk.StatusInfo, Message: message, Code: code, Subject: subject}
|
||||
}
|
||||
|
||||
func warnState(code, subject, message string) sdk.CheckState {
|
||||
return sdk.CheckState{Status: sdk.StatusWarn, Message: message, Code: code, Subject: subject}
|
||||
}
|
||||
|
||||
func critState(code, subject, message string) sdk.CheckState {
|
||||
return sdk.CheckState{Status: sdk.StatusCrit, Message: message, Code: code, Subject: subject}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue