prometheus

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Feb 7, 2025 License: Apache-2.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

View Source
const (
	AlertNamespaceLabel = "gems_namespace"
	AlertNameLabel      = "gems_alertname"
	// 用于从告警中获取告警资源
	AlertFromLabel = "gems_alert_from" // 告警来自哪里,logging/monitor
	AlertPromqlTpl = "gems_alert_tpl"  // eg. platform.cluster.cpuUsageTotal

	AlertTypeMonitor = "monitor"
	AlertTypeLogging = "logging"

	SeverityLabel    = "severity"
	SeverityError    = "error"    // 错误
	SeverityCritical = "critical" // 严重

	ExprJsonAnnotationKey = "gems_expr_json"
	MessageAnnotationsKey = "message"
	ValueAnnotationKey    = "value"
	ValueAnnotationExpr   = `{{ $value | printf "%.1f" }}`

	AlertRuleKeyFormat = "gems-%s-%s"
	AlertClusterKey    = "cluster"

	// 告警消息发送范围
	AlertScopeLabel  = "gems_alert_scope"
	ScopeSystemAdmin = "system-admin" // 系统管理员
	ScopeSystemUser  = "system-user"  // 所有用户
	ScopeNormal      = "normal"       // 普通租户用户

	SilenceCommentForBlackListPrefix = "fingerprint-"
	SilenceCommentForAlertrulePrefix = "silence for"
	// 全局告警命名空间,非此命名空间强制加上namespace筛选
	GlobalAlertNamespace = gems.NamespaceMonitor
	// namespace
	PromqlNamespaceKey = "namespace"

	// prometheusrule and alertmanagerconfigname
	DefaultAlertCRDName = "kubegems-default-monitor-alert-rule"
)

Variables

View Source
var (
	NullReceiverName = "null"
	NullReceiver     = v1alpha1.Receiver{Name: NullReceiverName}
)
View Source
var (
	// 单位表
	UnitValueMap = map[string]UnitValue{
		"B":  defaultUnitValue,
		"KB": {Op: "/", Value: "1024"},
		"MB": {Op: "/", Value: "(1024 * 1024)"},
		"GB": {Op: "/", Value: "(1024 * 1024 * 1024)"},
		"TB": {Op: "/", Value: "(1024 * 1024 * 1024 * 1024)"},
		"PB": {Op: "/", Value: "(1024 * 1024 * 1024 * 1024 * 1024)"},

		"B/s":  defaultUnitValue,
		"KB/s": {Op: "/", Value: "1024"},
		"MB/s": {Op: "/", Value: "(1024 * 1024)"},
		"GB/s": {Op: "/", Value: "(1024 * 1024 * 1024)"},
		"TB/s": {Op: "/", Value: "(1024 * 1024 * 1024 * 1024)"},
		"PB/s": {Op: "/", Value: "(1024 * 1024 * 1024 * 1024 * 1024)"},

		"us": {Op: "*", Value: "(1000 * 1000)"},
		"ms": {Op: "*", Value: "1000"},
		"s":  defaultUnitValue,
		"m":  {Op: "/", Value: "60"},
		"h":  {Op: "/", Value: "(60 * 60)"},
		"d":  {Op: "/", Value: "(24 * 60 * 60)"},
		"w":  {Op: "/", Value: "(7 * 24 * 60 * 60)"},

		"0.0-1.0": {Op: "*", Value: "100", Show: "%"},
		"0-100":   {Show: "%"},
	}
)

Functions

func FindReceiver

func FindReceiver(aconfig *v1alpha1.AlertmanagerConfig, targetName string) bool

func IsReceiverInUse

func IsReceiverInUse(route *v1alpha1.Route, receiver v1alpha1.Receiver) bool

func IsValidPromqlTplName

func IsValidPromqlTplName(scope, resource, rule string) error

func ParseRangeTime

func ParseRangeTime(startStr, endStr string, loc *time.Location) (time.Time, time.Time)

parse and set default value

func RealTimeAlertKey

func RealTimeAlertKey(namespace, name string) string

func SplitQueryExpr

func SplitQueryExpr(ql string) (query, op, value string, hasOp bool)

Types

type Alert

type Alert struct {
	Status       string            `json:"status"`
	Labels       map[string]string `json:"labels"`
	Annotations  map[string]string `json:"annotations"`
	StartsAt     *time.Time        `json:"startsAt"`
	EndsAt       *time.Time        `json:"endsAt"`
	GeneratorURL string            `json:"generatorURL"`
	Fingerprint  string            `json:"fingerprint"`
}

type ExporterOptions

type ExporterOptions struct {
	Listen string `json:"listen,omitempty" description:"listen address"`
}

func DefaultExporterOptions

func DefaultExporterOptions() *ExporterOptions

type MetricGraph

type MetricGraph struct {
	Name    string   `json:"name"`
	Targets []Target `json:"targets"`
	Unit    string   `json:"unit"`
}

type MonitorGraphs

type MonitorGraphs []MetricGraph

func (MonitorGraphs) GormDataType

func (g MonitorGraphs) GormDataType() string

func (MonitorGraphs) IsUsingTpl

func (graphs MonitorGraphs) IsUsingTpl(scope, resource, rule string) bool

func (*MonitorGraphs) Scan

func (g *MonitorGraphs) Scan(src interface{}) error

func (MonitorGraphs) Value

func (g MonitorGraphs) Value() (driver.Value, error)

注意这里不是指针,下同

type PromqlGenerator

type PromqlGenerator struct {
	Scope      string            `json:"scope"`                // scope
	Resource   string            `json:"resource"`             // 告警资源, eg. node、pod
	Rule       string            `json:"rule"`                 // 告警规则名, eg. cpuUsage、memoryUsagePercent
	Unit       string            `json:"unit"`                 // 单位
	LabelPairs map[string]string `json:"labelpairs,omitempty"` // 标签键值对

	UnitValue UnitValue `json:"-"`

	Tpl *templates.PromqlTpl `json:"-"`
}

func (*PromqlGenerator) Notpl

func (g *PromqlGenerator) Notpl() bool

func (*PromqlGenerator) SetTpl

func (*PromqlGenerator) ToPromql

func (g *PromqlGenerator) ToPromql(namespace string) (string, error)

func (*PromqlGenerator) TplString

func (g *PromqlGenerator) TplString() string

type RealTimeAlertRule

type RealTimeAlertRule struct {
	Name string `json:"name"`
	// Query          string         `json:"query"`
	// Duration       float64        `json:"duration"`
	// Labels         model.LabelSet `json:"labels"`
	// Annotations    model.LabelSet `json:"annotations"`
	Alerts []*v1.Alert `json:"alerts"`
	// Health         v1.RuleHealth  `json:"health"`
	// LastError      string         `json:"lastError,omitempty"`
	// EvaluationTime float64        `json:"evaluationTime"`
	// LastEvaluation time.Time      `json:"lastEvaluation"`
	State string `json:"state"`
}

func (*RealTimeAlertRule) Len

func (r *RealTimeAlertRule) Len() int

func (*RealTimeAlertRule) Less

func (r *RealTimeAlertRule) Less(i, j int) bool

func (*RealTimeAlertRule) Swap

func (r *RealTimeAlertRule) Swap(i, j int)

type Target

type Target struct {
	TargetName      string           `json:"targetName"`
	PromqlGenerator *PromqlGenerator `json:"promqlGenerator"`
	Expr            string           `json:"expr"`
}

type UnitValue

type UnitValue struct {
	Show string

	Op    string
	Value string
}

func ParseUnit

func ParseUnit(unit string) (UnitValue, error)

type WebhookAlert

type WebhookAlert struct {
	Receiver          string            `json:"receiver"`
	Status            string            `json:"status"`
	Alerts            []Alert           `json:"alerts"`
	GroupLabels       map[string]string `json:"groupLabels"`
	CommonLabels      map[string]string `json:"commonLabels"`
	CommonAnnotations map[string]string `json:"commonAnnotations"`
	ExternalURL       string            `json:"externalURL"`
	Version           string            `json:"version"`
	GroupKey          string            `json:"groupKey"`
	TruncatedAlerts   int64             `json:"truncatedAlerts"`
}

func (*WebhookAlert) FingerprintMap

func (w *WebhookAlert) FingerprintMap() map[string][]Alert

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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