Documentation ¶
Index ¶
- Constants
- type ResourcesMetricsCollector
- func (c ResourcesMetricsCollector) Collect(metrics chan<- prometheus.Metric)
- func (c ResourcesMetricsCollector) Describe(descs chan<- *prometheus.Desc)
- func (c ResourcesMetricsCollector) NeedLeaderElection() bool
- func (c *ResourcesMetricsCollector) SetupWithManager(mgr ctrl.Manager) error
- func (c ResourcesMetricsCollector) Start(ctx context.Context) error
- type SeverityLabel
- type Status
- type StatusLabel
Constants ¶
const (
Last_modified_date = "last_modified_date"
)
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type ResourcesMetricsCollector ¶
type ResourcesMetricsCollector struct { logr.Logger etc.Config tunneloperator.ConfigData client.Client // contains filtered or unexported fields }
ResourcesMetricsCollector is a custom Prometheus collector that produces metrics on-demand from the tunnel-operator custom resources. Since these resources are already cached by the Kubernetes API client shared with the operator, metrics scrapes should never actually hit the API server. All resource reads are served from cache, reducing API server load without consuming additional cluster resources. An alternative (more traditional) approach would be to maintain metrics in the internal Prometheus registry on resource reconcile. The collector approach was selected in order to avoid potentially stale metrics; i.e. the controller would have to reconcile all resources at least once for the metrics to be up-to-date, which could take some time in large clusters. Also deleting metrics from registry for obsolete/deleted resources is challenging without introducing finalizers, which we want to avoid for operational reasons.
For more advanced use-cases, and/or very large clusters, this internal collector can be disabled and replaced by https://github.com/giantswarm/starboard-exporter, which collects trivy metrics from a dedicated workload supporting sharding etc.
func NewResourcesMetricsCollector ¶
func NewResourcesMetricsCollector(logger logr.Logger, config etc.Config, trvConfig tunneloperator.ConfigData, clt client.Client) *ResourcesMetricsCollector
func (ResourcesMetricsCollector) Collect ¶
func (c ResourcesMetricsCollector) Collect(metrics chan<- prometheus.Metric)
func (ResourcesMetricsCollector) Describe ¶
func (c ResourcesMetricsCollector) Describe(descs chan<- *prometheus.Desc)
func (ResourcesMetricsCollector) NeedLeaderElection ¶
func (c ResourcesMetricsCollector) NeedLeaderElection() bool
func (*ResourcesMetricsCollector) SetupWithManager ¶
func (c *ResourcesMetricsCollector) SetupWithManager(mgr ctrl.Manager) error
type SeverityLabel ¶
func NewSeverityLabel ¶
func NewSeverityLabel(severity v1alpha1.Severity) SeverityLabel
func SeverityCritical ¶
func SeverityCritical() SeverityLabel
func SeverityHigh ¶
func SeverityHigh() SeverityLabel
func SeverityLow ¶
func SeverityLow() SeverityLabel
func SeverityMedium ¶
func SeverityMedium() SeverityLabel
func SeverityUnknown ¶
func SeverityUnknown() SeverityLabel
type Status ¶
type Status v1alpha1.ControlStatus
type StatusLabel ¶
func NewStatusLabel ¶
func NewStatusLabel(status Status) StatusLabel
func StatusFail ¶
func StatusFail() StatusLabel
func StatusPass ¶
func StatusPass() StatusLabel