Documentation
¶
Index ¶
- Constants
- Variables
- func AlertRuleGen(mutators ...AlertRuleMutator) func() *AlertRule
- func GenerateAlertLabels(count int, prefix string) data.Labels
- func PatchPartialAlertRule(existingRule *AlertRule, ruleToPatch *AlertRule)
- func ValidateAlertInstance(alertInstance AlertInstance) error
- func ValidateRuleGroupInterval(intervalSeconds, baseIntervalSeconds int64) error
- type AdminConfiguration
- type AlertConfiguration
- type AlertInstance
- type AlertInstanceKey
- type AlertQuery
- func (aq *AlertQuery) GetDatasource() (string, error)
- func (aq *AlertQuery) GetIntervalDuration() (time.Duration, error)
- func (aq *AlertQuery) GetMaxDatapoints() (int64, error)
- func (aq *AlertQuery) GetModel() ([]byte, error)
- func (aq *AlertQuery) GetQuery() (string, error)
- func (aq *AlertQuery) IsExpression() (bool, error)
- func (aq *AlertQuery) PreSave() error
- type AlertRule
- func (alertRule *AlertRule) Diff(rule *AlertRule, ignore ...string) cmputil.DiffReport
- func (alertRule *AlertRule) GetEvalCondition() Condition
- func (alertRule *AlertRule) GetGroupKey() AlertRuleGroupKey
- func (alertRule *AlertRule) GetKey() AlertRuleKey
- func (alertRule *AlertRule) GetLabels(opts ...LabelOption) map[string]string
- func (alertRule *AlertRule) PreSave(timeNow func() time.Time) error
- func (alertRule *AlertRule) ResourceID() string
- func (alertRule *AlertRule) ResourceOrgID() int64
- func (alertRule *AlertRule) ResourceType() string
- func (alertRule *AlertRule) SetDashboardAndPanel() error
- type AlertRuleGroup
- type AlertRuleGroupKey
- type AlertRuleKey
- type AlertRuleKeyWithVersion
- type AlertRuleMutator
- func WithGroupIndex(groupIndex int) AlertRuleMutator
- func WithNamespace(namespace *models2.Folder) AlertRuleMutator
- func WithNotEmptyLabels(count int, prefix string) AlertRuleMutator
- func WithOrgID(orgId int64) AlertRuleMutator
- func WithSequentialGroupIndex() AlertRuleMutator
- func WithUniqueGroupIndex() AlertRuleMutator
- func WithUniqueID() AlertRuleMutator
- type AlertRuleVersion
- type AlertmanagersChoice
- type Condition
- type Duration
- type ExecutionErrorState
- type GetAlertRuleByUIDQuery
- type GetAlertRulesForSchedulingQuery
- type GetAlertRulesGroupByRuleUIDQuery
- type GetLatestAlertmanagerConfigurationQuery
- type Image
- type InstanceLabels
- type InstanceStateType
- type LabelOption
- type ListAlertInstancesQuery
- type ListAlertRulesQuery
- type ListNamespaceAlertRulesQuery
- type ListOrgRuleGroupsQuery
- type NoDataState
- type Provenance
- type Provisionable
- type RelativeTimeRange
- type RulesGroup
- type SaveAlertmanagerConfigurationCmd
- type UpdateRule
Constants ¶
const ( RuleUIDLabel = "__alert_rule_uid__" NamespaceUIDLabel = "__alert_rule_namespace_uid__" // Annotations are actually a set of labels, so technically this is the label name of an annotation. DashboardUIDAnnotation = "__dashboardUid__" PanelIDAnnotation = "__panelId__" // This isn't a hard-coded secret token, hence the nolint. //nolint:gosec ImageTokenAnnotation = "__alertImageToken__" // GrafanaReservedLabelPrefix contains the prefix for Grafana reserved labels. These differ from "__<label>__" labels // in that they are not meant for internal-use only and will be passed-through to AMs and available to users in the same // way as manually configured labels. GrafanaReservedLabelPrefix = "grafana_" // FolderTitleLabel is the label that will contain the title of an alert's folder/namespace. FolderTitleLabel = GrafanaReservedLabelPrefix + "folder" // StateReasonAnnotation is the name of the annotation that explains the difference between evaluation state and alert state (i.e. changing state when NoData or Error). StateReasonAnnotation = GrafanaReservedLabelPrefix + "state_reason" )
const AlertConfigurationVersion = 1
Variables ¶
var ( // ErrAlertRuleNotFound is an error for an unknown alert rule. ErrAlertRuleNotFound = fmt.Errorf("could not find alert rule") // ErrAlertRuleFailedGenerateUniqueUID is an error for failure to generate alert rule UID ErrAlertRuleFailedGenerateUniqueUID = errors.New("failed to generate alert rule UID") // ErrCannotEditNamespace is an error returned if the user does not have permissions to edit the namespace ErrCannotEditNamespace = errors.New("user does not have permissions to edit the namespace") ErrRuleGroupNamespaceNotFound = errors.New("rule group not found under this namespace") ErrAlertRuleFailedValidation = errors.New("invalid alert rule") ErrAlertRuleUniqueConstraintViolation = errors.New("a conflicting alert rule is found: rule title under the same organisation and folder should be unique") ErrQuotaReached = errors.New("quota has been exceeded") )
var ( // InternalLabelNameSet are labels that grafana automatically include as part of the labelset. InternalLabelNameSet = map[string]struct{}{ RuleUIDLabel: {}, NamespaceUIDLabel: {}, } InternalAnnotationNameSet = map[string]struct{}{ DashboardUIDAnnotation: {}, PanelIDAnnotation: {}, ImageTokenAnnotation: {}, } )
var ( // ErrImageNotFound is returned when the image does not exist. ErrImageNotFound = errors.New("image not found") )
var ErrNoQuery = errors.New("no `expr` property in the query model")
var (
StateReasonMissingSeries = "MissingSeries"
)
Functions ¶
func AlertRuleGen ¶
func AlertRuleGen(mutators ...AlertRuleMutator) func() *AlertRule
AlertRuleGen provides a factory function that generates a random AlertRule. The mutators arguments allows changing fields of the resulting structure
func PatchPartialAlertRule ¶
PatchPartialAlertRule patches `ruleToPatch` by `existingRule` following the rule that if a field of `ruleToPatch` is empty or has the default value, it is populated by the value of the corresponding field from `existingRule`. There are several exceptions: 1. Following fields are not patched and therefore will be ignored: AlertRule.ID, AlertRule.OrgID, AlertRule.Updated, AlertRule.Version, AlertRule.UID, AlertRule.DashboardUID, AlertRule.PanelID, AlertRule.Annotations and AlertRule.Labels 2. There are fields that are patched together:
- AlertRule.Condition and AlertRule.Data
If either of the pair is specified, neither is patched.
func ValidateAlertInstance ¶
func ValidateAlertInstance(alertInstance AlertInstance) error
ValidateAlertInstance validates that the alert instance contains an alert rule id, and state.
Types ¶
type AdminConfiguration ¶
type AdminConfiguration struct { ID int64 `xorm:"pk autoincr 'id'"` OrgID int64 `xorm:"org_id"` // List of Alertmanager(s) URL to push alerts to. Alertmanagers []string // SendAlertsTo indicates which set of alertmanagers will handle the alert. SendAlertsTo AlertmanagersChoice `xorm:"send_alerts_to"` CreatedAt int64 `xorm:"created"` UpdatedAt int64 `xorm:"updated"` }
AdminConfiguration represents the ngalert administration configuration settings.
func (*AdminConfiguration) AsSHA256 ¶
func (ac *AdminConfiguration) AsSHA256() string
func (*AdminConfiguration) Validate ¶
func (ac *AdminConfiguration) Validate() error
type AlertConfiguration ¶
type AlertConfiguration struct { ID int64 `xorm:"pk autoincr 'id'"` AlertmanagerConfiguration string ConfigurationHash string ConfigurationVersion string CreatedAt int64 `xorm:"created"` Default bool OrgID int64 `xorm:"org_id"` }
AlertConfiguration represents a single version of the Alerting Engine Configuration.
type AlertInstance ¶
type AlertInstance struct { AlertInstanceKey `xorm:"extends"` Labels InstanceLabels CurrentState InstanceStateType CurrentReason string CurrentStateSince time.Time CurrentStateEnd time.Time LastEvalTime time.Time }
AlertInstance represents a single alert instance.
type AlertInstanceKey ¶
type AlertQuery ¶
type AlertQuery struct { // RefID is the unique identifier of the query, set by the frontend call. RefID string `json:"refId"` // QueryType is an optional identifier for the type of query. // It can be used to distinguish different types of queries. QueryType string `json:"queryType"` // RelativeTimeRange is the relative Start and End of the query as sent by the frontend. RelativeTimeRange RelativeTimeRange `json:"relativeTimeRange"` // Grafana data source unique identifier; it should be '-100' for a Server Side Expression operation. DatasourceUID string `json:"datasourceUid"` // JSON is the raw JSON query and includes the above properties as well as custom properties. Model json.RawMessage `json:"model"` // contains filtered or unexported fields }
AlertQuery represents a single query associated with an alert definition.
func GenerateAlertQuery ¶
func GenerateAlertQuery() AlertQuery
func (*AlertQuery) GetDatasource ¶
func (aq *AlertQuery) GetDatasource() (string, error)
GetDatasource returns the query datasource identifier.
func (*AlertQuery) GetIntervalDuration ¶
func (aq *AlertQuery) GetIntervalDuration() (time.Duration, error)
func (*AlertQuery) GetMaxDatapoints ¶
func (aq *AlertQuery) GetMaxDatapoints() (int64, error)
func (*AlertQuery) GetModel ¶
func (aq *AlertQuery) GetModel() ([]byte, error)
func (*AlertQuery) GetQuery ¶
func (aq *AlertQuery) GetQuery() (string, error)
GetQuery returns the query defined by `expr` within the model. Returns an ErrNoQuery if it is unable to find the query. Returns an error if it is not able to cast the query to a string.
func (*AlertQuery) IsExpression ¶
func (aq *AlertQuery) IsExpression() (bool, error)
IsExpression returns true if the alert query is an expression.
func (*AlertQuery) PreSave ¶
func (aq *AlertQuery) PreSave() error
PreSave sets query's properties. It should be called before being saved.
type AlertRule ¶
type AlertRule struct { ID int64 `xorm:"pk autoincr 'id'"` OrgID int64 `xorm:"org_id"` Title string Condition string Data []AlertQuery Updated time.Time IntervalSeconds int64 Version int64 `xorm:"version"` // this tag makes xorm add optimistic lock (see https://xorm.io/docs/chapter-06/1.lock/) UID string `xorm:"uid"` NamespaceUID string `xorm:"namespace_uid"` DashboardUID *string `xorm:"dashboard_uid"` PanelID *int64 `xorm:"panel_id"` RuleGroup string RuleGroupIndex int `xorm:"rule_group_idx"` NoDataState NoDataState ExecErrState ExecutionErrorState // ideally this field should have been apimodels.ApiDuration // but this is currently not possible because of circular dependencies For time.Duration Annotations map[string]string Labels map[string]string }
AlertRule is the model for alert rules in unified alerting.
func GenerateAlertRules ¶
GenerateAlertRules generates many random alert rules. Does not guarantee that rules are unique (by UID)
func GenerateAlertRulesSmallNonEmpty ¶
GenerateAlertRulesSmallNonEmpty generates 1 to 5 rules using the provided generator
func GenerateUniqueAlertRules ¶
GenerateUniqueAlertRules generates many random alert rules and makes sure that they have unique UID. It returns a tuple where first element is a map where keys are UID of alert rule and the second element is a slice of the same rules
func (*AlertRule) Diff ¶
func (alertRule *AlertRule) Diff(rule *AlertRule, ignore ...string) cmputil.DiffReport
Diff calculates diff between two alert rules. Returns nil if two rules are equal. Otherwise, returns cmputil.DiffReport
func (*AlertRule) GetEvalCondition ¶
func (*AlertRule) GetGroupKey ¶
func (alertRule *AlertRule) GetGroupKey() AlertRuleGroupKey
GetGroupKey returns the identifier of a group the rule belongs to
func (*AlertRule) GetKey ¶
func (alertRule *AlertRule) GetKey() AlertRuleKey
GetKey returns the alert definitions identifier
func (*AlertRule) GetLabels ¶
func (alertRule *AlertRule) GetLabels(opts ...LabelOption) map[string]string
GetLabels returns the labels specified as part of the alert rule.
func (*AlertRule) PreSave ¶
PreSave sets default values and loads the updated model for each alert query.
func (*AlertRule) ResourceID ¶
func (*AlertRule) ResourceOrgID ¶
func (*AlertRule) ResourceType ¶
func (*AlertRule) SetDashboardAndPanel ¶
SetDashboardAndPanel will set the DashboardUID and PanlID field be doing a lookup in the annotations. Errors when the found annotations are not valid.
type AlertRuleGroup ¶
type AlertRuleGroup struct { Title string FolderUID string Interval int64 Provenance Provenance Rules []AlertRule }
AlertRuleGroup is the base model for a rule group in unified alerting.
type AlertRuleGroupKey ¶
AlertRuleGroupKey is the identifier of a group of alerts
func GenerateGroupKey ¶
func GenerateGroupKey(orgID int64) AlertRuleGroupKey
GenerateGroupKey generates a random group key
func (AlertRuleGroupKey) String ¶
func (k AlertRuleGroupKey) String() string
type AlertRuleKey ¶
AlertRuleKey is the alert definition identifier
func GenerateRuleKey ¶
func GenerateRuleKey(orgID int64) AlertRuleKey
GenerateRuleKey generates a random alert rule key
func (AlertRuleKey) LogContext ¶
func (k AlertRuleKey) LogContext() []interface{}
func (AlertRuleKey) String ¶
func (k AlertRuleKey) String() string
type AlertRuleKeyWithVersion ¶
type AlertRuleKeyWithVersion struct { Version int64 AlertRuleKey `xorm:"extends"` }
type AlertRuleMutator ¶
type AlertRuleMutator func(*AlertRule)
func WithGroupIndex ¶
func WithGroupIndex(groupIndex int) AlertRuleMutator
func WithNamespace ¶
func WithNamespace(namespace *models2.Folder) AlertRuleMutator
func WithNotEmptyLabels ¶
func WithNotEmptyLabels(count int, prefix string) AlertRuleMutator
func WithOrgID ¶
func WithOrgID(orgId int64) AlertRuleMutator
func WithSequentialGroupIndex ¶
func WithSequentialGroupIndex() AlertRuleMutator
func WithUniqueGroupIndex ¶
func WithUniqueGroupIndex() AlertRuleMutator
func WithUniqueID ¶
func WithUniqueID() AlertRuleMutator
type AlertRuleVersion ¶
type AlertRuleVersion struct { ID int64 `xorm:"pk autoincr 'id'"` RuleOrgID int64 `xorm:"rule_org_id"` RuleUID string `xorm:"rule_uid"` RuleNamespaceUID string `xorm:"rule_namespace_uid"` RuleGroup string RuleGroupIndex int `xorm:"rule_group_idx"` ParentVersion int64 RestoredFrom int64 Version int64 Created time.Time Title string Condition string Data []AlertQuery IntervalSeconds int64 NoDataState NoDataState ExecErrState ExecutionErrorState // ideally this field should have been apimodels.ApiDuration // but this is currently not possible because of circular dependencies For time.Duration Annotations map[string]string Labels map[string]string }
AlertRuleVersion is the model for alert rule versions in unified alerting.
type AlertmanagersChoice ¶
type AlertmanagersChoice int
const ( AllAlertmanagers AlertmanagersChoice = iota InternalAlertmanager ExternalAlertmanagers )
func StringToAlertmanagersChoice ¶
func StringToAlertmanagersChoice(str string) (AlertmanagersChoice, error)
func (AlertmanagersChoice) String ¶
func (amc AlertmanagersChoice) String() string
String implements the Stringer interface
type Condition ¶
type Condition struct { // Condition is the RefID of the query or expression from // the Data property to get the results for. Condition string `json:"condition"` // Data is an array of data source queries and/or server side expressions. Data []AlertQuery `json:"data"` }
Condition contains backend expressions and queries and the RefID of the query or expression that will be evaluated.
type Duration ¶
Duration is a type used for marshalling durations.
func (Duration) MarshalJSON ¶
func (Duration) MarshalYAML ¶
func (*Duration) UnmarshalJSON ¶
func (*Duration) UnmarshalYAML ¶
type ExecutionErrorState ¶
type ExecutionErrorState string
swagger:enum ExecutionErrorState
const ( AlertingErrState ExecutionErrorState = "Alerting" ErrorErrState ExecutionErrorState = "Error" OkErrState ExecutionErrorState = "OK" )
func ErrStateFromString ¶
func ErrStateFromString(opt string) (ExecutionErrorState, error)
func (ExecutionErrorState) String ¶
func (executionErrorState ExecutionErrorState) String() string
type GetAlertRuleByUIDQuery ¶
GetAlertRuleByUIDQuery is the query for retrieving/deleting an alert rule by UID and organisation ID.
type GetAlertRulesGroupByRuleUIDQuery ¶
GetAlertRulesGroupByRuleUIDQuery is the query for retrieving a group of alerts by UID of a rule that belongs to that group
type GetLatestAlertmanagerConfigurationQuery ¶
type GetLatestAlertmanagerConfigurationQuery struct { OrgID int64 Result *AlertConfiguration }
GetLatestAlertmanagerConfigurationQuery is the query to get the latest alertmanager configuration.
type Image ¶
type Image struct { ID int64 `xorm:"pk autoincr 'id'"` Token string `xorm:"token"` Path string `xorm:"path"` URL string `xorm:"url"` CreatedAt time.Time `xorm:"created_at"` ExpiresAt time.Time `xorm:"expires_at"` }
func (*Image) ExtendDuration ¶
ExtendDuration extends the expiration time of the image. It can shorten the duration of the image if d is negative.
func (*Image) HasExpired ¶
HasExpired returns true if the image has expired.
type InstanceLabels ¶
InstanceLabels is an extension to data.Labels with methods for database serialization.
func (*InstanceLabels) FromDB ¶
func (il *InstanceLabels) FromDB(b []byte) error
FromDB loads labels stored in the database as json tuples into InstanceLabels. FromDB is part of the xorm Conversion interface.
func (*InstanceLabels) StringAndHash ¶
func (il *InstanceLabels) StringAndHash() (string, string, error)
StringAndHash returns a the json representation of the labels as tuples sorted by key. It also returns the a hash of that representation.
func (*InstanceLabels) StringKey ¶
func (il *InstanceLabels) StringKey() (string, error)
func (*InstanceLabels) ToDB ¶
func (il *InstanceLabels) ToDB() ([]byte, error)
ToDB is not implemented as serialization is handled with manual SQL queries). ToDB is part of the xorm Conversion interface.
type InstanceStateType ¶
type InstanceStateType string
InstanceStateType is an enum for instance states.
const ( // InstanceStateFiring is for a firing alert. InstanceStateFiring InstanceStateType = "Alerting" // InstanceStateNormal is for a normal alert. InstanceStateNormal InstanceStateType = "Normal" // InstanceStatePending is for an alert that is firing but has not met the duration InstanceStatePending InstanceStateType = "Pending" // InstanceStateNoData is for an alert with no data. InstanceStateNoData InstanceStateType = "NoData" // InstanceStateError is for a erroring alert. InstanceStateError InstanceStateType = "Error" )
func (InstanceStateType) IsValid ¶
func (i InstanceStateType) IsValid() bool
IsValid checks that the value of InstanceStateType is a valid string.
type LabelOption ¶
func WithoutInternalLabels ¶
func WithoutInternalLabels() LabelOption
type ListAlertInstancesQuery ¶
type ListAlertInstancesQuery struct { RuleOrgID int64 `json:"-"` RuleUID string State InstanceStateType StateReason string Result []*AlertInstance }
ListAlertInstancesQuery is the query list alert Instances.
type ListAlertRulesQuery ¶
type ListAlertRulesQuery struct { OrgID int64 NamespaceUIDs []string ExcludeOrgs []int64 RuleGroup string // DashboardUID and PanelID are optional and allow filtering rules // to return just those for a dashboard and panel. DashboardUID string PanelID int64 Result RulesGroup }
ListAlertRulesQuery is the query for listing alert rules
type ListNamespaceAlertRulesQuery ¶
type ListNamespaceAlertRulesQuery struct { OrgID int64 // Namespace is the folder slug NamespaceUID string Result []*AlertRule }
ListNamespaceAlertRulesQuery is the query for listing namespace alert rules
type ListOrgRuleGroupsQuery ¶
type ListOrgRuleGroupsQuery struct { OrgID int64 NamespaceUIDs []string // DashboardUID and PanelID are optional and allow filtering rules // to return just those for a dashboard and panel. DashboardUID string PanelID int64 Result [][]string }
ListOrgRuleGroupsQuery is the query for listing unique rule groups for an organization
type NoDataState ¶
type NoDataState string
swagger:enum NoDataState
const ( Alerting NoDataState = "Alerting" NoData NoDataState = "NoData" OK NoDataState = "OK" )
func NoDataStateFromString ¶
func NoDataStateFromString(state string) (NoDataState, error)
func (NoDataState) String ¶
func (noDataState NoDataState) String() string
type Provenance ¶
type Provenance string
const ( // ProvenanceNone reflects the provenance when no provenance is stored // for the requested object in the database. ProvenanceNone Provenance = "" ProvenanceAPI Provenance = "api" ProvenanceFile Provenance = "file" )
type Provisionable ¶
Provisionable represents a resource that can be created through a provisioning mechanism, such as Terraform or config file.
type RelativeTimeRange ¶
type RelativeTimeRange struct { From Duration `json:"from" yaml:"from"` To Duration `json:"to" yaml:"to"` }
RelativeTimeRange is the per query start and end time for requests.
func (*RelativeTimeRange) ToTimeRange ¶
func (rtr *RelativeTimeRange) ToTimeRange(now time.Time) backend.TimeRange
type RulesGroup ¶
type RulesGroup []*AlertRule
func (RulesGroup) SortByGroupIndex ¶
func (g RulesGroup) SortByGroupIndex()
type SaveAlertmanagerConfigurationCmd ¶
type SaveAlertmanagerConfigurationCmd struct { AlertmanagerConfiguration string FetchedConfigurationHash string ConfigurationVersion string Default bool OrgID int64 }
SaveAlertmanagerConfigurationCmd is the command to save an alertmanager configuration.