Skip to content

Commit c921528

Browse files
committed
[OSPRH-13151] Use JoinHostPort for scrape targets
This uses a golang net.JoinHostPort to handle concatenating ports to hosts. It handles IPv6 correctly and fixes the OSPRH-13151 issue.
1 parent 8b036b7 commit c921528

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

controllers/metricstorage_controller.go

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"net"
2323
"reflect"
2424
"regexp"
25+
"strconv"
2526
"strings"
2627

2728
corev1 "k8s.io/api/core/v1"
@@ -556,7 +557,7 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
556557

557558
// ScrapeConfig for ceilometer monitoring
558559
ceilometerRoute := fmt.Sprintf("%s-internal.%s.svc", ceilometer.ServiceName, instance.Namespace)
559-
ceilometerTarget := []string{fmt.Sprintf("%s:%d", ceilometerRoute, ceilometer.CeilometerPrometheusPort)}
560+
ceilometerTarget := []string{net.JoinHostPort(ceilometerRoute, strconv.Itoa(ceilometer.CeilometerPrometheusPort))}
560561
ceilometerCfgName := fmt.Sprintf("%s-ceilometer", telemetry.ServiceName)
561562
desiredScrapeConfig := metricstorage.ScrapeConfig(
562563
instance,
@@ -572,7 +573,7 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
572573

573574
// ScrapeConfig for kube-state-metrics
574575
ksmRoute := fmt.Sprintf("%s.%s.svc", availability.KSMServiceName, instance.Namespace)
575-
ksmTarget := []string{fmt.Sprintf("%s:%d", ksmRoute, availability.KSMMetricsPort)}
576+
ksmTarget := []string{net.JoinHostPort(ksmRoute, strconv.Itoa(availability.KSMMetricsPort))}
576577
ksmCfgName := fmt.Sprintf("%s-ksm", telemetry.ServiceName)
577578
desiredScrapeConfig = metricstorage.ScrapeConfig(
578579
instance,
@@ -601,7 +602,7 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
601602
rabbitTargets := []string{}
602603
for _, rabbit := range rabbitList.Items {
603604
rabbitServerName := fmt.Sprintf("%s.%s.svc", rabbit.Name, rabbit.Namespace)
604-
rabbitTargets = append(rabbitTargets, fmt.Sprintf("%s:%d", rabbitServerName, metricstorage.RabbitMQPrometheusPort))
605+
rabbitTargets = append(rabbitTargets, net.JoinHostPort(rabbitServerName, strconv.Itoa(metricstorage.RabbitMQPrometheusPort)))
605606
}
606607
rabbitCfgName := fmt.Sprintf("%s-rabbitmq", telemetry.ServiceName)
607608
desiredScrapeConfig = metricstorage.ScrapeConfig(
@@ -699,9 +700,10 @@ func (r *MetricStorageReconciler) createScrapeConfigs(
699700
for _, galera := range exportedGaleras {
700701
// NOTE: the galera port is hardcoded in the mariadb-operator without
701702
// any declared constant we could use here
703+
galeraServiceURL := fmt.Sprintf("%s.%s.svc", galera, instance.Namespace)
702704
mysqldExporterTargets = append(
703705
mysqldExporterTargets,
704-
fmt.Sprintf("%s.%s.svc:3306", galera, instance.Namespace),
706+
net.JoinHostPort(galeraServiceURL, "3306"),
705707
)
706708
}
707709
desiredScrapeConfig = metricstorage.ScrapeConfigMysqldExporter(
@@ -735,7 +737,7 @@ func getNodeExporterTargets(nodes []ConnectionInfo) ([]metricstorage.LabeledTarg
735737
nonTLS := []metricstorage.LabeledTarget{}
736738
for _, node := range nodes {
737739
target := metricstorage.LabeledTarget{
738-
IP: fmt.Sprintf("%s:%d", node.IP, telemetryv1.DefaultNodeExporterPort),
740+
IP: net.JoinHostPort(node.IP, strconv.Itoa(telemetryv1.DefaultNodeExporterPort)),
739741
FQDN: node.FQDN,
740742
}
741743
if node.TLS {
@@ -752,7 +754,7 @@ func getKeplerTargets(nodes []ConnectionInfo) ([]metricstorage.LabeledTarget, []
752754
nonTLS := []metricstorage.LabeledTarget{}
753755
for _, node := range nodes {
754756
target := metricstorage.LabeledTarget{
755-
IP: fmt.Sprintf("%s:%d", node.IP, telemetryv1.DefaultKeplerPort),
757+
IP: net.JoinHostPort(node.IP, strconv.Itoa(telemetryv1.DefaultKeplerPort)),
756758
FQDN: node.FQDN,
757759
}
758760
if node.TLS {

0 commit comments

Comments
 (0)