This is an automated email from the ASF dual-hosted git repository. nferraro pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-k.git
The following commit(s) were added to refs/heads/master by this push: new e9c4932 Add Prometheus ServiceMonitor labels trait configuration e9c4932 is described below commit e9c493251659ddd884b24013a224d1d6a4a86163 Author: Antonin Stefanutti <anto...@stefanutti.fr> AuthorDate: Tue Jan 29 10:41:15 2019 +0100 Add Prometheus ServiceMonitor labels trait configuration --- docs/traits.adoc | 14 +++++++++----- pkg/trait/prometheus.go | 20 +++++++++++++++----- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/docs/traits.adoc b/docs/traits.adoc index 338272c..60456cb 100644 --- a/docs/traits.adoc +++ b/docs/traits.adoc @@ -177,16 +177,20 @@ The following is a list of common traits that can be configured by the end users | prometheus | Kubernetes, OpenShift -| Exposes the integration with a Service and a ServiceMonitor resources so that the Prometheus endpoint can be scraped. - + - + - It's disabled by default. +| Exposes the integration with a `Service` and a `ServiceMonitor` resources so that the Prometheus endpoint can be scraped. + +WARNING: It requires the https://github.com/coreos/prometheus-operator[Prometheus Operator] custom resource definitions to be installed. + +It's disabled by default. [cols="m,"] !=== +! prometheus.labels +! The `ServiceMonitor` resource labels. + ! prometheus.port -! To configure a different Prometheus endpoint port (default `9778`). +! The Prometheus endpoint port (default `9778`). !=== diff --git a/pkg/trait/prometheus.go b/pkg/trait/prometheus.go index 3ee31e9..7a4d7be 100644 --- a/pkg/trait/prometheus.go +++ b/pkg/trait/prometheus.go @@ -18,6 +18,7 @@ limitations under the License. package trait import ( + "strings" "strconv" "github.com/apache/camel-k/pkg/apis/camel/v1alpha1" @@ -33,6 +34,7 @@ import ( type prometheusTrait struct { BaseTrait `property:",squash"` + Labels string `property:"labels"` Port int `property:"port"` } @@ -107,6 +109,9 @@ func (t *prometheusTrait) Apply(e *Environment) (err error) { } func (t *prometheusTrait) getServiceMonitorFor(e *Environment) *monitoringv1.ServiceMonitor { + labels := parseLabels(t.Labels) + labels["camel.apache.org/integration"] = e.Integration.Name + smt := monitoringv1.ServiceMonitor{ TypeMeta: metav1.TypeMeta{ Kind: "ServiceMonitor", @@ -115,11 +120,7 @@ func (t *prometheusTrait) getServiceMonitorFor(e *Environment) *monitoringv1.Ser ObjectMeta: metav1.ObjectMeta{ Name: e.Integration.Name, Namespace: e.Integration.Namespace, - Labels: map[string]string{ - // TODO: add the ability to configure additional labels - "camel.apache.org/integration": e.Integration.Name, - "team": "fuse", - }, + Labels: labels, }, Spec: monitoringv1.ServiceMonitorSpec{ Selector: metav1.LabelSelector{ @@ -136,3 +137,12 @@ func (t *prometheusTrait) getServiceMonitorFor(e *Environment) *monitoringv1.Ser } return &smt } + +func parseLabels(labels string) map[string]string { + m := make(map[string]string) + for _, label := range strings.Split(labels, ",") { + kv := strings.Split(label, "=") + m[kv[0]] = kv[1] + } + return m +}