Skip to content

Commit d0edca5

Browse files
target-allocator: Add support for scrape-classes
Signed-off-by: Christian Ciach <christian.ciach@gmail.com>
1 parent 087f27e commit d0edca5

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

cmd/otel-allocator/internal/config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@ type PrometheusCRConfig struct {
8989
ProbeNamespaceSelector *metav1.LabelSelector `yaml:"probe_namespace_selector,omitempty"`
9090
ScrapeProtocols []monitoringv1.ScrapeProtocol `yaml:"scrape_protocols,omitempty"`
9191
ScrapeInterval model.Duration `yaml:"scrape_interval,omitempty"`
92+
ScrapeClasses []monitoringv1.ScrapeClass `yaml:"scrape_classes,omitempty"`
9293
}
9394

9495
type HTTPSServerConfig struct {

cmd/otel-allocator/internal/watcher/promOperator.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ func NewPrometheusCRWatcher(
8383
ProbeNamespaceSelector: cfg.PrometheusCR.ProbeNamespaceSelector,
8484
ServiceDiscoveryRole: &serviceDiscoveryRole,
8585
ScrapeProtocols: cfg.PrometheusCR.ScrapeProtocols,
86+
ScrapeClasses: cfg.PrometheusCR.ScrapeClasses,
8687
},
8788
EvaluationInterval: monitoringv1.Duration("30s"),
8889
},

cmd/otel-allocator/internal/watcher/promOperator_test.go

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ func TestLoadConfig(t *testing.T) {
4444
name string
4545
serviceMonitors []*monitoringv1.ServiceMonitor
4646
podMonitors []*monitoringv1.PodMonitor
47+
scrapeClasses []*monitoringv1.ScrapeClass
4748
scrapeConfigs []*promv1alpha1.ScrapeConfig
4849
probes []*monitoringv1.Probe
4950
want *promconfig.Config
@@ -919,6 +920,68 @@ func TestLoadConfig(t *testing.T) {
919920
},
920921
},
921922
},
923+
{
924+
name: "pod monitor with referenced scrape class",
925+
podMonitors: []*monitoringv1.PodMonitor{
926+
{
927+
ObjectMeta: metav1.ObjectMeta{
928+
Name: "simple",
929+
Namespace: namespace,
930+
},
931+
Spec: monitoringv1.PodMonitorSpec{
932+
JobLabel: "test",
933+
ScrapeClassName: ptr.To("attach-node-metadata"),
934+
PodMetricsEndpoints: []monitoringv1.PodMetricsEndpoint{
935+
{
936+
Port: &portName,
937+
},
938+
},
939+
},
940+
},
941+
},
942+
cfg: allocatorconfig.Config{
943+
PrometheusCR: allocatorconfig.PrometheusCRConfig{
944+
PodMonitorSelector: &metav1.LabelSelector{},
945+
ScrapeClasses: []monitoringv1.ScrapeClass{
946+
{
947+
Name: "attach-node-metadata",
948+
AttachMetadata: &monitoringv1.AttachMetadata{
949+
Node: ptr.To(true),
950+
},
951+
},
952+
},
953+
},
954+
},
955+
want: &promconfig.Config{
956+
ScrapeConfigs: []*promconfig.ScrapeConfig{
957+
{
958+
JobName: "podMonitor/test/simple/0",
959+
ScrapeInterval: model.Duration(30 * time.Second),
960+
ScrapeProtocols: promconfig.DefaultScrapeProtocols,
961+
ScrapeTimeout: model.Duration(10 * time.Second),
962+
HonorTimestamps: true,
963+
HonorLabels: false,
964+
Scheme: "http",
965+
MetricsPath: "/metrics",
966+
ServiceDiscoveryConfigs: []discovery.Config{
967+
&kubeDiscovery.SDConfig{
968+
Role: "pod",
969+
NamespaceDiscovery: kubeDiscovery.NamespaceDiscovery{
970+
Names: []string{namespace},
971+
IncludeOwnNamespace: false,
972+
},
973+
HTTPClientConfig: config.DefaultHTTPClientConfig,
974+
AttachMetadata: kubeDiscovery.AttachMetadataConfig{
975+
Node: true, // Added by scrape-class!
976+
},
977+
},
978+
},
979+
HTTPClientConfig: config.DefaultHTTPClientConfig,
980+
EnableCompression: true,
981+
},
982+
},
983+
},
984+
},
922985
}
923986
for _, tt := range tests {
924987
t.Run(tt.name, func(t *testing.T) {
@@ -1244,6 +1307,7 @@ func getTestPrometheusCRWatcher(
12441307
ProbeNamespaceSelector: cfg.PrometheusCR.ProbeNamespaceSelector,
12451308
ScrapeConfigSelector: cfg.PrometheusCR.ScrapeConfigSelector,
12461309
ScrapeConfigNamespaceSelector: cfg.PrometheusCR.ScrapeConfigNamespaceSelector,
1310+
ScrapeClasses: cfg.PrometheusCR.ScrapeClasses,
12471311
ServiceDiscoveryRole: &serviceDiscoveryRole,
12481312
},
12491313
EvaluationInterval: monitoringv1.Duration("30s"),

0 commit comments

Comments
 (0)