Skip to content

Commit

Permalink
config: expose metrics configuration.
Browse files Browse the repository at this point in the history
Add configuration bits for controlling which metrics are
collected. Enable polled collection of policy metrics by
default.

Signed-off-by: Krisztian Litkey <[email protected]>
  • Loading branch information
klihub committed Nov 11, 2024
1 parent 827ea9c commit ff456df
Show file tree
Hide file tree
Showing 13 changed files with 296 additions and 22 deletions.
28 changes: 26 additions & 2 deletions config/crd/bases/config.nri_balloonspolicies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -320,12 +320,36 @@ spec:
to expose Prometheus metrics among other things.
example: :8891
type: string
metrics:
default:
polled:
- policy
description: Metrics defines which metrics to collect.
properties:
enabled:
description: Enabled enables collection for metrics matched
by glob patterns.
example:
- '*'
items:
type: string
type: array
polled:
description: Polled enabled polled collection for metrics
matched by glob patterns.
example:
- policy
items:
type: string
type: array
type: object
prometheusExport:
description: PrometheusExport enables exporting /metrics for Prometheus.
type: boolean
reportPeriod:
description: ReportPeriod is the interval between reporting aggregated
metrics.
default: 30s
description: ReportPeriod is the interval between between collecting
polled metrics.
format: duration
type: string
samplingRatePerMillion:
Expand Down
28 changes: 26 additions & 2 deletions config/crd/bases/config.nri_templatepolicies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,36 @@ spec:
to expose Prometheus metrics among other things.
example: :8891
type: string
metrics:
default:
polled:
- policy
description: Metrics defines which metrics to collect.
properties:
enabled:
description: Enabled enables collection for metrics matched
by glob patterns.
example:
- '*'
items:
type: string
type: array
polled:
description: Polled enabled polled collection for metrics
matched by glob patterns.
example:
- policy
items:
type: string
type: array
type: object
prometheusExport:
description: PrometheusExport enables exporting /metrics for Prometheus.
type: boolean
reportPeriod:
description: ReportPeriod is the interval between reporting aggregated
metrics.
default: 30s
description: ReportPeriod is the interval between between collecting
polled metrics.
format: duration
type: string
samplingRatePerMillion:
Expand Down
28 changes: 26 additions & 2 deletions config/crd/bases/config.nri_topologyawarepolicies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -119,12 +119,36 @@ spec:
to expose Prometheus metrics among other things.
example: :8891
type: string
metrics:
default:
polled:
- policy
description: Metrics defines which metrics to collect.
properties:
enabled:
description: Enabled enables collection for metrics matched
by glob patterns.
example:
- '*'
items:
type: string
type: array
polled:
description: Polled enabled polled collection for metrics
matched by glob patterns.
example:
- policy
items:
type: string
type: array
type: object
prometheusExport:
description: PrometheusExport enables exporting /metrics for Prometheus.
type: boolean
reportPeriod:
description: ReportPeriod is the interval between reporting aggregated
metrics.
default: 30s
description: ReportPeriod is the interval between between collecting
polled metrics.
format: duration
type: string
samplingRatePerMillion:
Expand Down
28 changes: 26 additions & 2 deletions deployment/helm/balloons/crds/config.nri_balloonspolicies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -320,12 +320,36 @@ spec:
to expose Prometheus metrics among other things.
example: :8891
type: string
metrics:
default:
polled:
- policy
description: Metrics defines which metrics to collect.
properties:
enabled:
description: Enabled enables collection for metrics matched
by glob patterns.
example:
- '*'
items:
type: string
type: array
polled:
description: Polled enabled polled collection for metrics
matched by glob patterns.
example:
- policy
items:
type: string
type: array
type: object
prometheusExport:
description: PrometheusExport enables exporting /metrics for Prometheus.
type: boolean
reportPeriod:
description: ReportPeriod is the interval between reporting aggregated
metrics.
default: 30s
description: ReportPeriod is the interval between between collecting
polled metrics.
format: duration
type: string
samplingRatePerMillion:
Expand Down
28 changes: 26 additions & 2 deletions deployment/helm/template/crds/config.nri_templatepolicies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,36 @@ spec:
to expose Prometheus metrics among other things.
example: :8891
type: string
metrics:
default:
polled:
- policy
description: Metrics defines which metrics to collect.
properties:
enabled:
description: Enabled enables collection for metrics matched
by glob patterns.
example:
- '*'
items:
type: string
type: array
polled:
description: Polled enabled polled collection for metrics
matched by glob patterns.
example:
- policy
items:
type: string
type: array
type: object
prometheusExport:
description: PrometheusExport enables exporting /metrics for Prometheus.
type: boolean
reportPeriod:
description: ReportPeriod is the interval between reporting aggregated
metrics.
default: 30s
description: ReportPeriod is the interval between between collecting
polled metrics.
format: duration
type: string
samplingRatePerMillion:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,12 +119,36 @@ spec:
to expose Prometheus metrics among other things.
example: :8891
type: string
metrics:
default:
polled:
- policy
description: Metrics defines which metrics to collect.
properties:
enabled:
description: Enabled enables collection for metrics matched
by glob patterns.
example:
- '*'
items:
type: string
type: array
polled:
description: Polled enabled polled collection for metrics
matched by glob patterns.
example:
- policy
items:
type: string
type: array
type: object
prometheusExport:
description: PrometheusExport enables exporting /metrics for Prometheus.
type: boolean
reportPeriod:
description: ReportPeriod is the interval between reporting aggregated
metrics.
default: 30s
description: ReportPeriod is the interval between between collecting
polled metrics.
format: duration
type: string
samplingRatePerMillion:
Expand Down
8 changes: 7 additions & 1 deletion pkg/apis/config/v1alpha1/instrumentation/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,12 @@
package instrumentation

import (
"github.com/containers/nri-plugins/pkg/apis/config/v1alpha1/metrics"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)

// Config provides runtime configuration for instrumentation.
// +k8s:deepcopy-gen=true
type Config struct {
// SamplingRatePerMillion is the number of samples to collect per million spans.
// +optional
Expand All @@ -33,9 +35,10 @@ type Config struct {
// +optional
// +kubebuilder:example="otlp-http://localhost:4318"
TracingCollector string `json:"tracingCollector,omitempty"`
// ReportPeriod is the interval between reporting aggregated metrics.
// ReportPeriod is the interval between between collecting polled metrics.
// +optional
// +kubebuilder:validation:Format="duration"
// +kubebuilder:default="30s"
ReportPeriod metav1.Duration `json:"reportPeriod,omitempty"`
// HTTPEndpoint is the address our HTTP server listens on. This endpoint is used
// to expose Prometheus metrics among other things.
Expand All @@ -45,4 +48,7 @@ type Config struct {
// PrometheusExport enables exporting /metrics for Prometheus.
// +optional
PrometheusExport bool `json:"prometheusExport,omitempty"`
// Metrics defines which metrics to collect.
// +kubebuilder:default={"polled": {"policy"}}
Metrics *metrics.Config `json:"metrics,omitempty"`
}
44 changes: 44 additions & 0 deletions pkg/apis/config/v1alpha1/instrumentation/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

28 changes: 28 additions & 0 deletions pkg/apis/config/v1alpha1/metrics/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright The NRI Plugins Authors. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package metrics

// Config provides runtime configuration for metrics collection.
// +k8s:deepcopy-gen=true
type Config struct {
// Enabled enables collection for metrics matched by glob patterns.
// +optional
// +kubebuilder:example={"*"}
Enabled []string `json:"enabled,omitempty"`
// Polled enabled polled collection for metrics matched by glob patterns.
// +optional
// +kubebuilder:example={"policy"}
Polled []string `json:"polled,omitempty"`
}
46 changes: 46 additions & 0 deletions pkg/apis/config/v1alpha1/metrics/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit ff456df

Please sign in to comment.