Skip to content

Commit 0faa18e

Browse files
author
tony-landreth
committed
When OpenTelemetryMetrics enabled, ~ExporterEnabled
1 parent 420fe70 commit 0faa18e

File tree

5 files changed

+35
-25
lines changed

5 files changed

+35
-25
lines changed

internal/controller/postgrescluster/pgmonitor.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ func (r *Reconciler) reconcilePGMonitorExporter(ctx context.Context,
6262
// the `EnableExporterInPostgreSQL` funcs; that way we are always running
6363
// that function against an updated and running pod.
6464

65-
if pgmonitor.ExporterEnabled(cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
65+
if pgmonitor.ExporterEnabled(ctx, cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
6666
sql, err := os.ReadFile(fmt.Sprintf("%s/pg%d/setup.sql", pgmonitor.GetQueriesConfigDir(ctx), cluster.Spec.PostgresVersion))
6767
if err != nil {
6868
return err
@@ -99,7 +99,7 @@ func (r *Reconciler) reconcilePGMonitorExporter(ctx context.Context,
9999
return pgmonitor.EnableExporterInPostgreSQL(ctx, exec, monitoringSecret, pgmonitor.ExporterDB, setup)
100100
}
101101

102-
if !pgmonitor.ExporterEnabled(cluster) && !feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
102+
if !pgmonitor.ExporterEnabled(ctx, cluster) && !feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
103103
action = func(ctx context.Context, exec postgres.Executor) error {
104104
return pgmonitor.DisableExporterInPostgreSQL(ctx, exec)
105105
}
@@ -157,7 +157,7 @@ func (r *Reconciler) reconcileMonitoringSecret(
157157
return nil, err
158158
}
159159

160-
if !pgmonitor.ExporterEnabled(cluster) && !feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
160+
if !pgmonitor.ExporterEnabled(ctx, cluster) && !feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
161161
// TODO: Checking if the exporter is enabled to determine when monitoring
162162
// secret should be created. If more tools are added to the monitoring
163163
// suite, they could need the secret when the exporter is not enabled.
@@ -235,7 +235,7 @@ func addPGMonitorExporterToInstancePodSpec(
235235
template *corev1.PodTemplateSpec,
236236
exporterQueriesConfig, exporterWebConfig *corev1.ConfigMap) {
237237

238-
if !pgmonitor.ExporterEnabled(cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
238+
if !pgmonitor.ExporterEnabled(ctx, cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
239239
return
240240
}
241241

@@ -385,7 +385,7 @@ func (r *Reconciler) reconcileExporterWebConfig(ctx context.Context,
385385
return nil, err
386386
}
387387

388-
if !pgmonitor.ExporterEnabled(cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) || cluster.Spec.Monitoring.PGMonitor.Exporter.CustomTLSSecret == nil {
388+
if !pgmonitor.ExporterEnabled(ctx, cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) || cluster.Spec.Monitoring.PGMonitor.Exporter.CustomTLSSecret == nil {
389389
// We could still have a NotFound error here so check the err.
390390
// If no error that means the configmap is found and needs to be deleted
391391
if err == nil {
@@ -442,7 +442,7 @@ func (r *Reconciler) reconcileExporterQueriesConfig(ctx context.Context,
442442
return nil, err
443443
}
444444

445-
if !pgmonitor.ExporterEnabled(cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
445+
if !pgmonitor.ExporterEnabled(ctx, cluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
446446
// We could still have a NotFound error here so check the err.
447447
// If no error that means the configmap is found and needs to be deleted
448448
if err == nil {

internal/controller/postgrescluster/pgmonitor_test.go

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ func testExporterCollectorsAnnotation(t *testing.T, ctx context.Context, cluster
3939
naming.PostgresExporterCollectorsAnnotation: "wrong-value",
4040
})
4141

42-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, queriesConfig, webConfig))
42+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, queriesConfig, webConfig)
4343

4444
assert.Equal(t, len(template.Spec.Containers), 1)
4545
container := template.Spec.Containers[0]
@@ -56,7 +56,7 @@ func testExporterCollectorsAnnotation(t *testing.T, ctx context.Context, cluster
5656
naming.PostgresExporterCollectorsAnnotation: "None",
5757
})
5858

59-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, queriesConfig, webConfig))
59+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, queriesConfig, webConfig)
6060

6161
assert.Equal(t, len(template.Spec.Containers), 1)
6262
container := template.Spec.Containers[0]
@@ -71,7 +71,7 @@ func testExporterCollectorsAnnotation(t *testing.T, ctx context.Context, cluster
7171
naming.PostgresExporterCollectorsAnnotation: "none",
7272
})
7373

74-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, queriesConfig, webConfig))
74+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, queriesConfig, webConfig)
7575
assert.Assert(t, cmp.Contains(strings.Join(template.Spec.Containers[0].Command, "\n"), "--[no-]collector"))
7676
})
7777
})
@@ -100,7 +100,7 @@ func TestAddPGMonitorExporterToInstancePodSpec(t *testing.T) {
100100

101101
t.Run("ExporterDisabled", func(t *testing.T) {
102102
template := &corev1.PodTemplateSpec{}
103-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, nil, nil))
103+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, nil, nil)
104104
assert.DeepEqual(t, template, &corev1.PodTemplateSpec{})
105105
})
106106

@@ -121,8 +121,7 @@ func TestAddPGMonitorExporterToInstancePodSpec(t *testing.T) {
121121
},
122122
}
123123

124-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, nil))
125-
124+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, nil)
126125
assert.Equal(t, len(template.Spec.Containers), 2)
127126
container := template.Spec.Containers[1]
128127

@@ -205,8 +204,7 @@ volumeMounts:
205204
},
206205
}
207206

208-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, nil))
209-
207+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, nil)
210208
assert.Equal(t, len(template.Spec.Containers), 2)
211209
container := template.Spec.Containers[1]
212210

@@ -255,8 +253,7 @@ name: exporter-config
255253
},
256254
}
257255

258-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, nil))
259-
256+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, nil)
260257
assert.Equal(t, len(template.Spec.Containers), 2)
261258
container := template.Spec.Containers[1]
262259

@@ -301,8 +298,7 @@ name: exporter-config
301298
testConfigMap := new(corev1.ConfigMap)
302299
testConfigMap.Name = "test-web-conf"
303300

304-
assert.NilError(t, addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, testConfigMap))
305-
301+
addPGMonitorExporterToInstancePodSpec(ctx, cluster, template, exporterQueriesConfig, testConfigMap)
306302
assert.Equal(t, len(template.Spec.Containers), 2)
307303
container := template.Spec.Containers[1]
308304

internal/pgmonitor/postgres.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ const (
2424
// PostgreSQLHBAs provides the Postgres HBA rules for allowing the monitoring
2525
// exporter to be accessible
2626
func PostgreSQLHBAs(ctx context.Context, inCluster *v1beta1.PostgresCluster, outHBAs *postgres.HBAs) {
27-
if ExporterEnabled(inCluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
27+
if ExporterEnabled(ctx, inCluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
2828
// Limit the monitoring user to local connections using SCRAM.
2929
outHBAs.Mandatory = append(outHBAs.Mandatory,
3030
postgres.NewHBA().TCP().User(MonitoringUser).Method("scram-sha-256").Network("127.0.0.0/8"),
@@ -36,7 +36,7 @@ func PostgreSQLHBAs(ctx context.Context, inCluster *v1beta1.PostgresCluster, out
3636
// PostgreSQLParameters provides additional required configuration parameters
3737
// that Postgres needs to support monitoring
3838
func PostgreSQLParameters(ctx context.Context, inCluster *v1beta1.PostgresCluster, outParameters *postgres.Parameters) {
39-
if ExporterEnabled(inCluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
39+
if ExporterEnabled(ctx, inCluster) || feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
4040
// Exporter expects that shared_preload_libraries are installed
4141
// pg_stat_statements: https://access.crunchydata.com/documentation/pgmonitor/latest/exporter/
4242
// pgnodemx: https://github.com/CrunchyData/pgnodemx

internal/pgmonitor/util.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"context"
99
"os"
1010

11+
"github.com/crunchydata/postgres-operator/internal/feature"
1112
"github.com/crunchydata/postgres-operator/internal/logging"
1213
"github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
1314
)
@@ -26,7 +27,7 @@ func GetQueriesConfigDir(ctx context.Context) string {
2627
}
2728

2829
// ExporterEnabled returns true if the monitoring exporter is enabled
29-
func ExporterEnabled(cluster *v1beta1.PostgresCluster) bool {
30+
func ExporterEnabled(ctx context.Context, cluster *v1beta1.PostgresCluster) bool {
3031
if cluster.Spec.Monitoring == nil {
3132
return false
3233
}
@@ -36,5 +37,8 @@ func ExporterEnabled(cluster *v1beta1.PostgresCluster) bool {
3637
if cluster.Spec.Monitoring.PGMonitor.Exporter == nil {
3738
return false
3839
}
40+
if feature.Enabled(ctx, feature.OpenTelemetryMetrics) {
41+
return false
42+
}
3943
return true
4044
}

internal/pgmonitor/util_test.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,34 @@
55
package pgmonitor
66

77
import (
8+
"context"
89
"testing"
910

1011
"gotest.tools/v3/assert"
1112

13+
"github.com/crunchydata/postgres-operator/internal/feature"
1214
"github.com/crunchydata/postgres-operator/pkg/apis/postgres-operator.crunchydata.com/v1beta1"
1315
)
1416

1517
func TestExporterEnabled(t *testing.T) {
1618
cluster := &v1beta1.PostgresCluster{}
17-
assert.Assert(t, !ExporterEnabled(cluster))
19+
ctx := context.Background()
20+
assert.Assert(t, !ExporterEnabled(ctx, cluster))
1821

1922
cluster.Spec.Monitoring = &v1beta1.MonitoringSpec{}
20-
assert.Assert(t, !ExporterEnabled(cluster))
23+
assert.Assert(t, !ExporterEnabled(ctx, cluster))
2124

2225
cluster.Spec.Monitoring.PGMonitor = &v1beta1.PGMonitorSpec{}
23-
assert.Assert(t, !ExporterEnabled(cluster))
26+
assert.Assert(t, !ExporterEnabled(ctx, cluster))
2427

2528
cluster.Spec.Monitoring.PGMonitor.Exporter = &v1beta1.ExporterSpec{}
26-
assert.Assert(t, ExporterEnabled(cluster))
29+
assert.Assert(t, ExporterEnabled(ctx, cluster))
2730

31+
gate := feature.NewGate()
32+
assert.NilError(t, gate.SetFromMap(map[string]bool{
33+
feature.OpenTelemetryMetrics: true,
34+
}))
35+
ctx = feature.NewContext(ctx, gate)
36+
cluster.Spec.Monitoring.PGMonitor.Exporter = &v1beta1.ExporterSpec{}
37+
assert.Assert(t, !ExporterEnabled(ctx, cluster))
2838
}

0 commit comments

Comments
 (0)