config

package
v0.49.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 17, 2023 License: Apache-2.0 Imports: 28 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AlertingRuleType  = "alerting"
	RecordingRuleType = "recording"
	InvalidRuleType   = "invalid"
)

Variables

View Source
var (
	CommandKey   ContextCommandKey = "command"
	CICommand    ContextCommandVal = "ci"
	LintCommand  ContextCommandVal = "lint"
	WatchCommand ContextCommandVal = "watch"
)

Functions

This section is empty.

Types

type AggregateSettings

type AggregateSettings struct {
	Name     string   `hcl:",label" json:"name"`
	Keep     []string `hcl:"keep,optional" json:"keep,omitempty"`
	Strip    []string `hcl:"strip,optional" json:"strip,omitempty"`
	Severity string   `hcl:"severity,optional" json:"severity,omitempty"`
}

type AlertsSettings

type AlertsSettings struct {
	Range    string `hcl:"range" json:"range"`
	Step     string `hcl:"step" json:"step"`
	Resolve  string `hcl:"resolve" json:"resolve"`
	MinCount int    `hcl:"minCount,optional" json:"minCount,omitempty"`
	Severity string `hcl:"severity,optional" json:"severity,omitempty"`
}

type AnnotationSettings

type AnnotationSettings struct {
	Key      string `hcl:",label" json:"key"`
	Value    string `hcl:"value,optional" json:"value,omitempty"`
	Required bool   `hcl:"required,optional" json:"required,omitempty"`
	Severity string `hcl:"severity,optional" json:"severity,omitempty"`
}

type BitBucket

type BitBucket struct {
	URI        string `hcl:"uri"`
	Timeout    string `hcl:"timeout,optional"`
	Project    string `hcl:"project"`
	Repository string `hcl:"repository"`
}

type CI

type CI struct {
	Include    []string `hcl:"include,optional" json:"include,omitempty"`
	Exclude    []string `hcl:"exclude,optional" json:"exclude,omitempty"`
	MaxCommits int      `hcl:"maxCommits,optional" json:"maxCommits,omitempty"`
	BaseBranch string   `hcl:"baseBranch,optional" json:"baseBranch,omitempty"`
}

type Check added in v0.23.0

type Check struct {
	Name string   `hcl:",label" json:"name"`
	Body hcl.Body `hcl:",remain" json:"-"`
}

func (Check) Decode added in v0.23.0

func (c Check) Decode() (s CheckSettings, err error)

func (Check) MarshalJSON added in v0.23.0

func (c Check) MarshalJSON() ([]byte, error)

type CheckSettings added in v0.23.0

type CheckSettings interface {
	Validate() error
}

type Checks

type Checks struct {
	Enabled  []string `hcl:"enabled,optional" json:"enabled,omitempty"`
	Disabled []string `hcl:"disabled,optional" json:"disabled,omitempty"`
}

type Config

type Config struct {
	CI         *CI                `hcl:"ci,block" json:"ci,omitempty"`
	Parser     *Parser            `hcl:"parser,block" json:"parser,omitempty"`
	Repository *Repository        `hcl:"repository,block" json:"repository,omitempty"`
	Prometheus []PrometheusConfig `hcl:"prometheus,block" json:"prometheus,omitempty"`
	Discovery  *Discovery         `hcl:"discovery,block" json:"discovery,omitempty"`
	Checks     *Checks            `hcl:"checks,block" json:"checks,omitempty"`
	Check      []Check            `hcl:"check,block" json:"check,omitempty"`
	Rules      []Rule             `hcl:"rule,block" json:"rules,omitempty"`
	Owners     *Owners            `hcl:"owners,block" json:"owners,omitempty"`
}

func Load

func Load(path string, failOnMissing bool) (cfg Config, err error)

func (*Config) DisableOnlineChecks added in v0.7.0

func (cfg *Config) DisableOnlineChecks()

func (*Config) GetChecksForRule

func (cfg *Config) GetChecksForRule(ctx context.Context, gen *PrometheusGenerator, path string, r parser.Rule, disabledChecks []string) []checks.RuleChecker

func (*Config) SetDisabledChecks

func (cfg *Config) SetDisabledChecks(l []string)

func (Config) String

func (cfg Config) String() string

type ContextCommandKey added in v0.7.1

type ContextCommandKey string

type ContextCommandVal added in v0.7.1

type ContextCommandVal string

type CostSettings

type CostSettings struct {
	MaxSeries             int    `hcl:"maxSeries,optional" json:"maxSeries,omitempty"`
	MaxPeakSamples        int    `hcl:"maxPeakSamples,optional" json:"maxPeakSamples,omitempty"`
	MaxTotalSamples       int    `hcl:"maxTotalSamples,optional" json:"maxTotalSamples,omitempty"`
	MaxEvaluationDuration string `hcl:"maxEvaluationDuration,optional" json:"maxEvaluationDuration,omitempty"`
	Severity              string `hcl:"severity,optional" json:"severity,omitempty"`
}

type Discoverer added in v0.48.0

type Discoverer interface {
	Discover(_ context.Context) ([]*promapi.FailoverGroup, error)
}

type Discovery added in v0.48.0

type Discovery struct {
	FilePath        []FilePath        `hcl:"filepath,block" json:"filepath,omitempty"`
	PrometheusQuery []PrometheusQuery `hcl:"prometheusQuery,block" json:"prometheusQuery,omitempty"`
}

func (*Discovery) Discover added in v0.48.0

func (d *Discovery) Discover(ctx context.Context) ([]*promapi.FailoverGroup, error)

type FilePath added in v0.48.0

type FilePath struct {
	Directory string               `hcl:"directory" json:"directory"`
	Match     string               `hcl:"match" json:"match"`
	Ignore    []string             `hcl:"ignore,optional" json:"ignore,omitempty"`
	Template  []PrometheusTemplate `hcl:"template,block" json:"template"`
}

func (FilePath) Discover added in v0.48.0

func (fp FilePath) Discover(_ context.Context) ([]*promapi.FailoverGroup, error)

type ForSettings added in v0.41.0

type ForSettings struct {
	Min      string `hcl:"min,optional" json:"min,omitempty"`
	Max      string `hcl:"max,optional" json:"max,omitempty"`
	Severity string `hcl:"severity,optional" json:"severity,omitempty"`
}

type GitHub

type GitHub struct {
	BaseURI   string `hcl:"baseuri,optional"`
	UploadURI string `hcl:"uploaduri,optional"`
	Timeout   string `hcl:"timeout,optional"`
	Owner     string `hcl:"owner,optional"`
	Repo      string `hcl:"repo,optional"`
}

type Match

type Match struct {
	Path          string             `hcl:"path,optional" json:"path,omitempty"`
	Name          string             `hcl:"name,optional" json:"name,omitempty"`
	Kind          string             `hcl:"kind,optional" json:"kind,omitempty"`
	For           string             `hcl:"for,optional" json:"for,omitempty"`
	KeepFiringFor string             `hcl:"keep_firing_for,optional" json:"keep_firing_for,omitempty"`
	Label         *MatchLabel        `hcl:"label,block" json:"label,omitempty"`
	Annotation    *MatchAnnotation   `hcl:"annotation,block" json:"annotation,omitempty"`
	Command       *ContextCommandVal `hcl:"command,optional" json:"command,omitempty"`
}

func (Match) IsMatch added in v0.3.0

func (m Match) IsMatch(ctx context.Context, path string, r parser.Rule) bool

type MatchAnnotation added in v0.7.0

type MatchAnnotation struct {
	Key   string `hcl:",label" json:"key"`
	Value string `hcl:"value" json:"value"`
}

type MatchLabel

type MatchLabel struct {
	Key   string `hcl:",label" json:"key"`
	Value string `hcl:"value" json:"value"`
}

type Owners added in v0.41.0

type Owners struct {
	Allowed []string `hcl:"allowed,optional" json:"allowed,omitempty"`
}

func (Owners) CompileAllowed added in v0.41.0

func (o Owners) CompileAllowed() (r []*regexp.Regexp)

type Parser added in v0.17.0

type Parser struct {
	Relaxed []string `hcl:"relaxed,optional" json:"relaxed,omitempty"`
}

func (Parser) CompileRelaxed added in v0.17.0

func (p Parser) CompileRelaxed() (r []*regexp.Regexp)

type PrometheusConfig

type PrometheusConfig struct {
	Name        string            `hcl:",label" json:"name"`
	URI         string            `hcl:"uri" json:"uri"`
	PublicURI   string            `hcl:"publicURI,optional" json:"publicURI,omitempty"`
	Headers     map[string]string `hcl:"headers,optional" json:"headers,omitempty"`
	Failover    []string          `hcl:"failover,optional" json:"failover,omitempty"`
	Timeout     string            `hcl:"timeout,optional"  json:"timeout"`
	Concurrency int               `hcl:"concurrency,optional" json:"concurrency"`
	RateLimit   int               `hcl:"rateLimit,optional" json:"rateLimit"`
	Uptime      string            `hcl:"uptime,optional" json:"uptime"`
	Include     []string          `hcl:"include,optional" json:"include,omitempty"`
	Exclude     []string          `hcl:"exclude,optional" json:"exclude,omitempty"`
	Tags        []string          `hcl:"tags,optional" json:"tags,omitempty"`
	Required    bool              `hcl:"required,optional" json:"required"`
	TLS         *TLSConfig        `hcl:"tls,block" json:"tls,omitempty"`
}

type PrometheusGenerator added in v0.48.0

type PrometheusGenerator struct {
	// contains filtered or unexported fields
}

func NewPrometheusGenerator added in v0.48.0

func NewPrometheusGenerator(cfg Config, metricsRegistry *prometheus.Registry) *PrometheusGenerator

func (*PrometheusGenerator) Count added in v0.48.0

func (pg *PrometheusGenerator) Count() int

func (*PrometheusGenerator) GenerateDynamic added in v0.48.2

func (pg *PrometheusGenerator) GenerateDynamic(ctx context.Context) (err error)

func (*PrometheusGenerator) GenerateStatic added in v0.48.2

func (pg *PrometheusGenerator) GenerateStatic() (err error)

func (*PrometheusGenerator) Servers added in v0.49.0

func (pg *PrometheusGenerator) Servers() []*promapi.FailoverGroup

func (*PrometheusGenerator) ServersForPath added in v0.48.0

func (pg *PrometheusGenerator) ServersForPath(path string) []*promapi.FailoverGroup

func (*PrometheusGenerator) Stop added in v0.48.0

func (pg *PrometheusGenerator) Stop()

type PrometheusQuery added in v0.48.0

type PrometheusQuery struct {
	URI      string               `hcl:"uri" json:"uri"`
	Headers  map[string]string    `hcl:"headers,optional" json:"headers,omitempty"`
	Timeout  string               `hcl:"timeout,optional"  json:"timeout"`
	TLS      *TLSConfig           `hcl:"tls,block" json:"tls,omitempty"`
	Query    string               `hcl:"query" json:"query"`
	Template []PrometheusTemplate `hcl:"template,block" json:"template"`
}

func (PrometheusQuery) Discover added in v0.48.0

func (pq PrometheusQuery) Discover(ctx context.Context) ([]*promapi.FailoverGroup, error)

type PrometheusTemplate added in v0.48.0

type PrometheusTemplate struct {
	Name        string            `hcl:"name" json:"name"`
	URI         string            `hcl:"uri" json:"uri"`
	PublicURI   string            `hcl:"publicURI,optional" json:"publicURI,omitempty"`
	Headers     map[string]string `hcl:"headers,optional" json:"headers,omitempty"`
	Failover    []string          `hcl:"failover,optional" json:"failover,omitempty"`
	Timeout     string            `hcl:"timeout,optional"  json:"timeout"`
	Concurrency int               `hcl:"concurrency,optional" json:"concurrency"`
	RateLimit   int               `hcl:"rateLimit,optional" json:"rateLimit"`
	Uptime      string            `hcl:"uptime,optional" json:"uptime"`
	Include     []string          `hcl:"include,optional" json:"include,omitempty"`
	Exclude     []string          `hcl:"exclude,optional" json:"exclude,omitempty"`
	Tags        []string          `hcl:"tags,optional" json:"tags,omitempty"`
	Required    bool              `hcl:"required,optional" json:"required"`
	TLS         *TLSConfig        `hcl:"tls,block" json:"tls,omitempty"`
}

func (PrometheusTemplate) Render added in v0.48.0

func (pt PrometheusTemplate) Render(data map[string]string) (*promapi.FailoverGroup, error)

type RejectSettings

type RejectSettings struct {
	Regex            string `hcl:",label" json:"key,omitempty"`
	LabelKeys        bool   `hcl:"label_keys,optional" json:"label_keys,omitempty"`
	LabelValues      bool   `hcl:"label_values,optional" json:"label_values,omitempty"`
	AnnotationKeys   bool   `hcl:"annotation_keys,optional" json:"annotation_keys,omitempty"`
	AnnotationValues bool   `hcl:"annotation_values,optional" json:"annotation_values,omitempty"`
	Severity         string `hcl:"severity,optional" json:"severity,omitempty"`
}

type Repository

type Repository struct {
	BitBucket *BitBucket `hcl:"bitbucket,block" json:"bitbucket,omitempty"`
	GitHub    *GitHub    `hcl:"github,block" json:"github,omitempty"`
}

type Rule

type Rule struct {
	Match         []Match              `hcl:"match,block" json:"match,omitempty"`
	Ignore        []Match              `hcl:"ignore,block" json:"ignore,omitempty"`
	Aggregate     []AggregateSettings  `hcl:"aggregate,block" json:"aggregate,omitempty"`
	Annotation    []AnnotationSettings `hcl:"annotation,block" json:"annotation,omitempty"`
	Label         []AnnotationSettings `hcl:"label,block" json:"label,omitempty"`
	Cost          *CostSettings        `hcl:"cost,block" json:"cost,omitempty"`
	Alerts        *AlertsSettings      `hcl:"alerts,block" json:"alerts,omitempty"`
	For           *ForSettings         `hcl:"for,block" json:"for,omitempty"`
	KeepFiringFor *ForSettings         `hcl:"keep_firing_for,block" json:"keep_firing_for,omitempty"`
	Reject        []RejectSettings     `hcl:"reject,block" json:"reject,omitempty"`
	RuleLink      []RuleLinkSettings   `hcl:"link,block" json:"link,omitempty"`
}

type RuleLinkSettings added in v0.27.0

type RuleLinkSettings struct {
	Regex    string            `hcl:",label" json:"key,omitempty"`
	URI      string            `hcl:"uri,optional" json:"uri,omitempty"`
	Timeout  string            `hcl:"timeout,optional" json:"timeout,omitempty"`
	Headers  map[string]string `hcl:"headers,optional" json:"headers,omitempty"`
	Severity string            `hcl:"severity,optional" json:"severity,omitempty"`
}

type TLSConfig added in v0.43.0

type TLSConfig struct {
	ServerName         string `hcl:"serverName,optional" json:"serverName,omitempty"`
	CaCert             string `hcl:"caCert,optional" json:"caCert,omitempty"`
	ClientCert         string `hcl:"clientCert,optional" json:"clientCert,omitempty"`
	ClientKey          string `hcl:"clientKey,optional" json:"clientKey,omitempty"`
	InsecureSkipVerify bool   `hcl:"skipVerify,optional" json:"skipVerify,omitempty"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL