Documentation ¶
Overview ¶
Package model defines the core types of kee. Probe providers should use this package to interface with the application. It is also used throughout the app to implement its features.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Layer ¶ added in v1.1.0
type Layer uint8
Layer categorizes Statuses along your server-side stack, from providers (LayerInfrastructure) shared/base resources and systems (LayerPlatform), to APIs and apps (LayerApplication).
const ( // LayerNone is used when a layer hasn't been assigned to a Status or configuration parameter. LayerNone Layer = 0 // LayerInfrastructure describes systems or resources of a physical, foundational nature or owned/operated by 3rd-parties/vendors. LayerInfrastructure Layer = iota // LayerPlatform describes systems or resources acting as abstractions for applications and middlewares built on top of infrastructure. LayerPlatform Layer = iota // LayerApplication describes systems that are fulfilling specific end-user-oriented goals, ie serving an API or sending emails. LayerApplication Layer = iota )
func LayerFromInt ¶ added in v1.1.0
LayerFromInt gets an integer and returns a Layer or an error if out of range.
type ProbeProvider ¶
A ProbeProvider uses the provided configuration to return an Prober instance.
type Prober ¶
type Prober interface { // Probe tests the health of resources. It must return by the time the context is cancelled. Probe(context.Context) Statuses }
A Prober tests the health of zero, one or more resources and reports their state as Status values.
type Registry ¶
type Registry interface { // RegisterProvider keeps a ProbeProvider function identified by a unique string. // RegisterProvider should be called from init() functions of probe providers packages. // It will panic if a provider with the same string identifier already exists. RegisterProvider(typeIdentifier string, configurer ProbeProvider) // GetProvider returns the ProbeProvider associated with the string identifier or an error if it was not found. GetProvider(typeIdentifier string) (ProbeProvider, error) }
A Registry keeps track of probe providers for the configuration phase.
type Severity ¶
type Severity uint8
Severity describes how good or bad a system or resource is
const ( // SeverityOk describes a system or resource as perfectly healthy and able to performe its function. SeverityOk Severity = 0 // SeverityNotice describes a system or resource as healthy but with a abnormal condition that may be the sign of a problem. SeverityNotice Severity = 1 // SeverityWarning describes a system or resource with a condition that partially degrades its ability to perform its function. SeverityWarning Severity = 2 // SeverityCritical describes a system or resource no longer able to perform its function. SeverityCritical Severity = 3 )
func SeverityFromInt ¶
SeverityFromInt returns a Severity from an integer, or an error.
func SeverityFromStr ¶
SeverityFromStr parses a string representing a severity and returns a Severity or an error.
func (Severity) IsWorseThan ¶
IsWorseThan is true when the other Severity, provided as argument, is less severe than the one this method is called on.
func (Severity) IsWorseThanOrEqualTo ¶
IsWorseThanOrEqualTo is true when the other Severity, provided as argument, is the same Severity or less severe than the one this method is called on.
type Status ¶
type Status struct { // Id is an idenfitier for the thing whose status is reported. The id must be unique within the Prober instance. // Multiple Status can have the same ID if they describe the same system/resource/test/assertion. ID string // Description contains a short, human readable description of the status, whether successful or not. Description string // Severity describes how bad the test successed or failed. // If the test was sucessfull it should be SeverityOk. // If the test failed, the implementation decides on the non-OK level. // For non-OK levels, the configuration can limit the displayed value to a subrange of levels. Severity Severity // Update is the time at which the Probe tested the thing for this Status. Update time.Time // Change is the last time the Error field of a Status with the same ID field changed. // Because this time can be before the start of the kee process (ie cloud provider alarm) the Probe provides // its value. // If the probe cannot know the last time the "test result" changed before the process started, it should first // return the 0 value so it can be displayed as N/A or "unknown" - until the error status changes. Change time.Time // Label is a user-assigned string that is configured per Prober instance. // Prober implementations should not set a value for it, but it will be overwritten anyways. Label string // Layer categorizes the Status into one of three vertical system layers. // Prober implemetations can statically or dynamically set a layer for statuses it emits, but if the user configured // a specific value, this field will be overwritten with the user's value. In case both the Prober and user leave // it blank the default of LayerInfrastructure will be used. Layer Layer }
Status describes the health state of a system or resource. A Prober instance can return zero, one or more Status on each call to Probe().
func (Status) MergeWhenWorse ¶
MergeWhenWorse returns an updated copy of the Status when the other Status, provided as argument, has a level more critical than the original Status. Both Status must have the same Id. Updated fields are Description and Severity.
type StatusField ¶
type StatusField uint8
A StatusField refers to a field of the Status struct.
const ( // FieldID refers to a Status' ID field. FieldID StatusField = 0 // FieldDescription refers to a Status' Description field. FieldDescription StatusField = iota // FieldSeverity refers to a Status' Severity field. FieldSeverity StatusField = iota // FieldUpdate refers to a Status' Update field. FieldUpdate StatusField = iota // FieldChange refers to a Status' Change field. FieldChange StatusField = iota // FieldLabel refers to a Status' Label field. FieldLabel StatusField = iota // FieldLayer refers to a Status' Layer field. FieldLayer StatusField = iota )
func FieldFromInt ¶
func FieldFromInt(n int) (StatusField, error)
FieldFromInt returns a StatusField from an integer, or an error.
func (StatusField) String ¶ added in v1.1.0
func (f StatusField) String() string
type StatusFilter ¶
StatusFilter returns true if the provided Status matches some criteria.
func AndFilter ¶ added in v1.1.0
func AndFilter(fs ...StatusFilter) StatusFilter
AndFilter combines multiple StatusFilters. All of them must return true for a given status to be kept. Filters are run in order, but will not be called if a previous filter returned false.
func LayerEqualsFilter ¶ added in v1.1.0
func LayerEqualsFilter(l Layer) StatusFilter
LayerEqualsFilter drops Statuses that don't have a Layer equal to the one provided.
func SeverityWorseThanOrEqualToFilter ¶
func SeverityWorseThanOrEqualToFilter(min Severity) StatusFilter
SeverityWorseThanOrEqualToFilter returns a StatusFilter func that will match Status with a severity worse or equal than the Severity provided as argument.
func UpdateMoreRecentThanFilter ¶ added in v1.1.0
func UpdateMoreRecentThanFilter(max time.Duration) StatusFilter
UpdateMoreRecentThanFilter returns a StatusFilter func that will match Status that were updated within the provided duration.
type StatusMap ¶
A StatusMap maps Status IDs to Status values.
func (StatusMap) Put ¶
Put stores the provided Status into the map, overwriting any preexisting element with the same ID.
func (StatusMap) PutAll ¶
PutAll stores the provided Statuses into the map, overwriting any preexisting element with the same IDs.
func (StatusMap) ToStatuses ¶
ToStatuses turns a StatusMap back to a Statuses slice.
type StatusReducer ¶
StatusReducer produces an integer from the provided accumulator and Status.
type StatusTransformer ¶
StatusTransformer is a function that returns a modified copy of the provided Status.
func MaxSeverity ¶
func MaxSeverity(other Severity) StatusTransformer
MaxSeverity returns a StatusTransformer that applies the Severity.Max to each Status.
func PrependID ¶
func PrependID(prefix string) StatusTransformer
PrependID returns a StatusTransformer that prefixes the Status Id with the string provided in argument.
func SetLabel ¶
func SetLabel(label string) StatusTransformer
SetLabel returns a StatusTransformer that sets the provided Label to each Status.
func SetLayer ¶ added in v1.1.0
func SetLayer(layer Layer) StatusTransformer
SetLayer sets the layer for the Statuses the transform is applied to.
type Statuses ¶
type Statuses []Status
Statuses is a slice of Status. Each status in the slice should usually have a unique Id.
func (Statuses) Filter ¶
func (ss Statuses) Filter(f StatusFilter) Statuses
Filter returns a modified Statuses with only Status for which the StatusFilter returned true
func (Statuses) ForEach ¶
func (ss Statuses) ForEach(transformer ...StatusTransformer) Statuses
ForEach returns a modified Statuses by applying transformer functions to each Status
func (Statuses) Reduce ¶
func (ss Statuses) Reduce(init int, a StatusReducer) int
Reduce returns an initial integer which has been updated by successive calls to the provided func
func (Statuses) SortBy ¶
func (ss Statuses) SortBy(f StatusField)
SortBy sorts the Statuses by the provided StatusField.
Directories ¶
Path | Synopsis |
---|---|
Package testhelpers provide helpers for writing probe provider tests.
|
Package testhelpers provide helpers for writing probe provider tests. |