Skip to content

Commit d571996

Browse files
authored
feat: add postgres exporter (#16244)
Part of coder/internal#150 - Adds postgres exporter that gets picked up by the prometheus remote writer
1 parent 7b46433 commit d571996

File tree

2 files changed

+59
-5
lines changed

2 files changed

+59
-5
lines changed

scaletest/terraform/action/prometheus.tf

+58-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
locals {
2-
prometheus_helm_repo = "https://prometheus-community.github.io/helm-charts"
3-
prometheus_helm_chart = "kube-prometheus-stack"
4-
prometheus_release_name = "prometheus"
5-
prometheus_remote_write_send_interval = "15s"
6-
prometheus_remote_write_metrics_regex = ".*"
2+
prometheus_helm_repo = "https://prometheus-community.github.io/helm-charts"
3+
prometheus_helm_chart = "kube-prometheus-stack"
4+
prometheus_release_name = "prometheus"
5+
prometheus_remote_write_send_interval = "15s"
6+
prometheus_remote_write_metrics_regex = ".*"
7+
prometheus_postgres_exporter_helm_repo = "https://prometheus-community.github.io/helm-charts"
8+
prometheus_postgres_exporter_helm_chart = "prometheus-postgres-exporter"
9+
prometheus_postgres_exporter_release_name = "prometheus-postgres-exporter"
710
}
811

912
resource "helm_release" "prometheus_chart_primary" {
@@ -43,6 +46,56 @@ YAML
4346
depends_on = [helm_release.prometheus_chart_primary]
4447
}
4548

49+
resource "kubernetes_secret" "prometheus_postgres_password" {
50+
provider = kubernetes.primary
51+
52+
type = "kubernetes.io/basic-auth"
53+
metadata {
54+
name = "prometheus-postgres"
55+
namespace = kubernetes_namespace.coder_primary.metadata.0.name
56+
}
57+
data = {
58+
username = "${var.name}-prometheus"
59+
password = random_password.prometheus_postgres_password.result
60+
}
61+
lifecycle {
62+
ignore_changes = [timeouts, wait_for_service_account_token]
63+
}
64+
}
65+
66+
resource "helm_release" "prometheus_postgres_exporter" {
67+
provider = helm.primary
68+
69+
repository = local.prometheus_postgres_exporter_helm_repo
70+
chart = local.prometheus_postgres_exporter_helm_chart
71+
name = local.prometheus_postgres_exporter_release_name
72+
namespace = kubernetes_namespace.coder_primary.metadata.0.name
73+
values = [<<EOF
74+
affinity:
75+
nodeAffinity:
76+
requiredDuringSchedulingIgnoredDuringExecution:
77+
nodeSelectorTerms:
78+
- matchExpressions:
79+
- key: "cloud.google.com/gke-nodepool"
80+
operator: "In"
81+
values: ["${google_container_node_pool.node_pool["primary_misc"].name}"]
82+
config:
83+
datasource:
84+
host: "${google_sql_database_instance.db.private_ip_address}"
85+
user: "${var.name}-prometheus"
86+
database: "${var.name}-coder"
87+
passwordSecret:
88+
name: "${kubernetes_secret.prometheus_postgres_password.metadata.0.name}"
89+
key: password
90+
autoDiscoverDatabases: true
91+
serviceMonitor:
92+
enabled: true
93+
EOF
94+
]
95+
96+
depends_on = [helm_release.prometheus_chart_primary]
97+
}
98+
4699
resource "helm_release" "prometheus_chart_europe" {
47100
provider = helm.europe
48101

scaletest/terraform/action/prometheus_helm_values.tftpl

+1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ prometheus:
2424
externalLabels:
2525
cluster: "${cluster}"
2626
podMonitorSelectorNilUsesHelmValues: false
27+
serviceMonitorSelectorNilUsesHelmValues: false
2728
remoteWrite:
2829
- url: "${prometheus_remote_write_url}"
2930
tlsConfig:

0 commit comments

Comments
 (0)