Skip to content

Commit 363800e

Browse files
refactor promconverter
1 parent bcb97fc commit 363800e

65 files changed

Lines changed: 1158 additions & 1181 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

api/operator/v1beta1/vmextra_types.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,21 @@ const (
4545
ClusterComponentStorage ClusterComponent = "storage"
4646
)
4747

48+
type MetadataStrategy string
49+
50+
const (
51+
// MetadataStrategyPreferVM - prefers VM object meta values, ignores prometheus
52+
MetadataStrategyPreferVM MetadataStrategy = "prefer-victoriametrics"
53+
// MetadataStrategyPreferProm - prefers prometheus
54+
MetadataStrategyPreferProm MetadataStrategy = "prefer-prometheus"
55+
// MetadataStrategyMergeVMPriority merges both label sets
56+
// its not possible to remove values
57+
MetadataStrategyMergeVMPriority MetadataStrategy = "merge-victoriametrics-priority"
58+
// MetadataStrategyMergePromPriority merges both label sets
59+
// its not possible to remove values
60+
MetadataStrategyMergePromPriority MetadataStrategy = "merge-prometheus-priority"
61+
)
62+
4863
const (
4964
httpPathPrefixFlag = "http.pathPrefix"
5065
reloadAuthKeyFlag = "reloadAuthKey"
@@ -70,6 +85,19 @@ const (
7085
VMAuthLBServiceProxyTargetLabel = "operator.victoriametrics.com/vmauthlb-proxy-name"
7186
VMAuthLBServiceProxyJobNameLabel = "operator.victoriametrics.com/vmauthlb-proxy-job-name"
7287
KubeNodeEnvName = "KUBE_NODE_NAME"
88+
// IgnoreConversionLabel this annotation disables updating of corresponding VMObject
89+
// must be added to annotation of VMObject
90+
// annotations:
91+
// operator.victoriametrics.com/ignore-prometheus-updates: enabled
92+
IgnoreConversionLabel = "operator.victoriametrics.com/ignore-prometheus-updates"
93+
// IgnoreConversion - disables updates from prometheus api
94+
IgnoreConversion = "enabled"
95+
// MetadataStrategyLabel merge strategy by default prefer prometheus meta labels
96+
// but with annotation value added to VMObject:
97+
// annotations:
98+
// operator.victoriametrics.com/merge-api-strategy: prefer-victoriametrics
99+
// metadata from VMObject will be preferred during merge
100+
MetadataStrategyLabel = "operator.victoriametrics.com/merge-meta-strategy"
73101
)
74102

75103
const (

docs/api.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2550,6 +2550,8 @@ Appears in: [VLAgentSpec](#vlagentspec), [VLClusterSpec](#vlclusterspec), [VLSin
25502550
| labels<a href="#managedobjectsmetadata-labels" id="managedobjectsmetadata-labels">#</a><br/>_object (keys:string, values:string)_ | _(Required)_<br/>Labels Map of string keys and values that can be used to organize and categorize<br />(scope and select) objects.<br />More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels |
25512551

25522552

2553+
2554+
25532555
#### NamespaceDiscovery
25542556

25552557

internal/config/config.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -524,7 +524,7 @@ type BaseOperatorConf struct {
524524

525525
EnabledPrometheusConverter struct {
526526
PodMonitor bool `default:"true" env:"PODMONITOR"`
527-
ServiceScrape bool `default:"true" env:"SERVICESCRAPE"`
527+
ServiceMonitor bool `default:"true" env:"SERVICESCRAPE"`
528528
PrometheusRule bool `default:"true" env:"PROMETHEUSRULE"`
529529
Probe bool `default:"true" env:"PROBE"`
530530
AlertmanagerConfig bool `default:"true" env:"ALERTMANAGERCONFIG"`

internal/controller/operator/controllers.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,16 @@ var (
6363
Name: "operator_controller_reconcile_errors_total",
6464
Help: "Counts number context.Canceled errors",
6565
})
66+
activeConverterWatchers = prometheus.NewGaugeVec(prometheus.GaugeOpts{
67+
Name: "operator_prometheus_converter_active_watchers",
68+
}, []string{"object_type_name"})
6669
)
6770

6871
// InitMetrics adds metrics to the Registry
6972
func init() {
70-
metrics.Registry.MustRegister(parseObjectErrorsTotal, getObjectsErrorsTotal, conflictErrorsTotal, contextCancelErrorsTotal)
73+
metrics.Registry.MustRegister(
74+
parseObjectErrorsTotal, getObjectsErrorsTotal, conflictErrorsTotal,
75+
contextCancelErrorsTotal, activeConverterWatchers)
7176
}
7277

7378
func getDefaultOptions() controller.Options {

internal/controller/operator/converter/apis.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ const (
2121

2222
var log = logf.Log.WithName("controller.PrometheusConverter")
2323

24-
// ConvertPromRule creates VMRule from PrometheusRule
25-
func ConvertPromRule(prom *promv1.PrometheusRule, conf *config.BaseOperatorConf) *vmv1beta1.VMRule {
24+
// PrometheusRule creates VMRule from PrometheusRule
25+
func PrometheusRule(prom *promv1.PrometheusRule, conf *config.BaseOperatorConf) *vmv1beta1.VMRule {
2626
ruleGroups := make([]vmv1beta1.RuleGroup, 0, len(prom.Spec.Groups))
2727
for _, promGroup := range prom.Spec.Groups {
2828
ruleItems := make([]vmv1beta1.Rule, 0, len(promGroup.Rules))
@@ -100,8 +100,8 @@ func MaybeAddArgoCDIgnoreAnnotations(mustAdd bool, dst map[string]string) map[st
100100
return dst
101101
}
102102

103-
// ConvertServiceMonitor create VMServiceScrape from ServiceMonitor
104-
func ConvertServiceMonitor(serviceMon *promv1.ServiceMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMServiceScrape {
103+
// ServiceMonitor create VMServiceScrape from ServiceMonitor
104+
func ServiceMonitor(serviceMon *promv1.ServiceMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMServiceScrape {
105105
cs := &vmv1beta1.VMServiceScrape{
106106
ObjectMeta: metav1.ObjectMeta{
107107
Name: serviceMon.Name,
@@ -383,8 +383,8 @@ func convertPodEndpoints(promPodEnpoints []promv1.PodMetricsEndpoint) []vmv1beta
383383
return endPoints
384384
}
385385

386-
// ConvertPodMonitor create VMPodScrape from PodMonitor
387-
func ConvertPodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMPodScrape {
386+
// PodMonitor create VMPodScrape from PodMonitor
387+
func PodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf) *vmv1beta1.VMPodScrape {
388388
cs := &vmv1beta1.VMPodScrape{
389389
ObjectMeta: metav1.ObjectMeta{
390390
Name: podMon.Name,
@@ -428,8 +428,8 @@ func ConvertPodMonitor(podMon *promv1.PodMonitor, conf *config.BaseOperatorConf)
428428
return cs
429429
}
430430

431-
// ConvertProbe creates VMProbe from prometheus probe
432-
func ConvertProbe(probe *promv1.Probe, conf *config.BaseOperatorConf) *vmv1beta1.VMProbe {
431+
// Probe creates VMProbe from prometheus probe
432+
func Probe(probe *promv1.Probe, conf *config.BaseOperatorConf) *vmv1beta1.VMProbe {
433433
var (
434434
k8sTargets []*vmv1beta1.VMProbeTargetKubernetes
435435
staticTargets *vmv1beta1.VMProbeTargetStatic

0 commit comments

Comments
 (0)