Skip to content

Commit da7f73c

Browse files
committed
K8SPG-718 patroni metrics to pmm
1 parent 8f9fb6f commit da7f73c

File tree

5 files changed

+28
-8
lines changed

5 files changed

+28
-8
lines changed

e2e-tests/tests/monitoring-pmm3/03-create-cluster.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ commands:
1010
1111
get_cr \
1212
| yq eval '.spec.pmm.enabled=true' - \
13+
| yq eval '.spec.crVersion="2.8.0"' - \
1314
| yq eval ".spec.pmm.image=\"${IMAGE_PMM3_CLIENT}\"" - \
1415
| kubectl -n "${NAMESPACE}" apply -f -

e2e-tests/tests/monitoring-pmm3/05-check-qan.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ commands:
1111
instance=$(kubectl get -n "${NAMESPACE}" pod -l postgres-operator.crunchydata.com/instance-set=instance1 -o 'jsonpath={.items[].metadata.name}')
1212
1313
get_metric_values node_boot_time_seconds ${NAMESPACE}-${instance} ${token}
14+
get_metric_values patroni_postgres_running ${NAMESPACE}-${instance} ${token}
1415
get_qan20_values_pmm3 ${NAMESPACE}-${instance} ${token}
1516
timeout: 240

percona/pmm/pmm.go

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ func sidecarContainerV2(pgc *v2.PerconaPGCluster) corev1.Container {
224224
},
225225
{
226226
Name: "PMM_AGENT_PRERUN_SCRIPT",
227-
Value: agentPrerunScript(pgc.Spec.PMM.QuerySource, pgc),
227+
Value: agentPrerunScript(pgc, false),
228228
},
229229
{
230230
Name: "PMM_AGENT_PATHS_TEMPDIR",
@@ -407,7 +407,7 @@ func sidecarContainerV3(pgc *v2.PerconaPGCluster) corev1.Container {
407407
},
408408
{
409409
Name: "PMM_AGENT_PRERUN_SCRIPT",
410-
Value: agentPrerunScript(pgc.Spec.PMM.QuerySource, pgc),
410+
Value: agentPrerunScript(pgc, true),
411411
},
412412
{
413413
Name: "PMM_AGENT_PATHS_TEMPDIR",
@@ -419,7 +419,7 @@ func sidecarContainerV3(pgc *v2.PerconaPGCluster) corev1.Container {
419419
return container
420420
}
421421

422-
func agentPrerunScript(querySource v2.PMMQuerySource, pgc *v2.PerconaPGCluster) string {
422+
func agentPrerunScript(pgc *v2.PerconaPGCluster, isPMM3 bool) string {
423423
wait := "pmm-admin status --wait=10s"
424424
annotate := "pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'"
425425

@@ -435,7 +435,7 @@ func agentPrerunScript(querySource v2.PMMQuerySource, pgc *v2.PerconaPGCluster)
435435
"--skip-connection-check",
436436
"--metrics-mode=push",
437437
"--service-name=$(PMM_AGENT_SETUP_NODE_NAME)",
438-
fmt.Sprintf("--query-source=%s", querySource),
438+
fmt.Sprintf("--query-source=%s", pgc.Spec.PMM.QuerySource),
439439
}
440440

441441
if pgc.CompareVersion("2.7.0") >= 0 {
@@ -449,5 +449,11 @@ func agentPrerunScript(querySource v2.PMMQuerySource, pgc *v2.PerconaPGCluster)
449449
}
450450
addService := fmt.Sprintf("pmm-admin add postgresql %s", strings.Join(addServiceArgs, " "))
451451

452+
if pgc.CompareVersion("2.8.0") >= 0 && isPMM3 {
453+
addPatroniMetrics := fmt.Sprintf(
454+
"pmm-admin add external --scheme=https --listen-port=%d --tls-skip-verify --service-name=$(PMM_AGENT_SETUP_NODE_NAME)-patroni-external", pgc.Spec.Patroni.GetPort())
455+
return fmt.Sprintf("%s; %s; %s; %s", wait, addService, addPatroniMetrics, annotate)
456+
}
457+
452458
return wait + "; " + addService + "; " + annotate
453459
}

percona/pmm/pmm_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ func TestContainer(t *testing.T) {
2626

2727
pgc := &v2.PerconaPGCluster{
2828
Spec: v2.PerconaPGClusterSpec{
29-
CRVersion: "2.6.0",
29+
CRVersion: "2.8.0",
3030
PMM: pmmSpec,
3131
},
3232
ObjectMeta: metav1.ObjectMeta{
@@ -152,7 +152,7 @@ func TestSidecarContainerV2(t *testing.T) {
152152

153153
pgc := &v2.PerconaPGCluster{
154154
Spec: v2.PerconaPGClusterSpec{
155-
CRVersion: "2.7.0",
155+
CRVersion: "2.8.0",
156156
PMM: pmmSpec,
157157
},
158158
ObjectMeta: metav1.ObjectMeta{
@@ -264,7 +264,7 @@ func TestSidecarContainerV3(t *testing.T) {
264264

265265
pgc := &v2.PerconaPGCluster{
266266
Spec: v2.PerconaPGClusterSpec{
267-
CRVersion: "2.7.0",
267+
CRVersion: "2.8.0",
268268
PMM: pmmSpec,
269269
},
270270
ObjectMeta: metav1.ObjectMeta{
@@ -320,7 +320,7 @@ func TestSidecarContainerV3(t *testing.T) {
320320
"DB_TYPE": "postgresql",
321321
"DB_USER": v2.UserMonitoring,
322322
"DB_PASS": "", // secret reference is asserted separately
323-
"PMM_AGENT_PRERUN_SCRIPT": "pmm-admin status --wait=10s; pmm-admin add postgresql --username=$(DB_USER) --password='$(DB_PASS)' --host=127.0.0.1 --port=5432 --tls-cert-file=/pgconf/tls/tls.crt --tls-key-file=/pgconf/tls/tls.key --tls-ca-file=/pgconf/tls/ca.crt --tls-skip-verify --skip-connection-check --metrics-mode=push --service-name=$(PMM_AGENT_SETUP_NODE_NAME) --query-source= --cluster=test-cluster --environment=dev-postgres; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'",
323+
"PMM_AGENT_PRERUN_SCRIPT": "pmm-admin status --wait=10s; pmm-admin add postgresql --username=$(DB_USER) --password='$(DB_PASS)' --host=127.0.0.1 --port=5432 --tls-cert-file=/pgconf/tls/tls.crt --tls-key-file=/pgconf/tls/tls.key --tls-ca-file=/pgconf/tls/ca.crt --tls-skip-verify --skip-connection-check --metrics-mode=push --service-name=$(PMM_AGENT_SETUP_NODE_NAME) --query-source= --cluster=test-cluster --environment=dev-postgres; pmm-admin add external --scheme=https --listen-port=8008 --tls-skip-verify --service-name=$(PMM_AGENT_SETUP_NODE_NAME)-patroni-external; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'",
324324
"PMM_AGENT_PATHS_TEMPDIR": "/tmp",
325325
}
326326

pkg/apis/postgres-operator.crunchydata.com/v1beta1/patroni_types.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,9 @@ type PatroniSwitchover struct {
8383
const (
8484
PatroniSwitchoverTypeFailover = "Failover"
8585
PatroniSwitchoverTypeSwitchover = "Switchover"
86+
87+
// K8SPG-718
88+
patroniDefaultPort = int32(8008)
8689
)
8790

8891
// Default sets the default values for certain Patroni configuration attributes,
@@ -105,6 +108,15 @@ func (s *PatroniSpec) Default() {
105108
}
106109
}
107110

111+
// GetPort returns the patroni port. Added as part of K8SPG-718.
112+
func (s *PatroniSpec) GetPort() int32 {
113+
patroniPort := patroniDefaultPort
114+
if s != nil && s.Port != nil {
115+
patroniPort = *s.Port
116+
}
117+
return patroniPort
118+
}
119+
108120
type PatroniStatus struct {
109121

110122
// - "database_system_identifier" of https://github.com/zalando/patroni/blob/v2.0.1/docs/rest_api.rst#monitoring-endpoint

0 commit comments

Comments
 (0)