You've already forked prometheus-postgres-exporter
Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
fb218484d0
|
|||
b29f79370c
|
|||
814dd01995
|
|||
75292a54ca | |||
744e0141e4
|
|||
cc61720a11
|
|||
90d48f8450
|
|||
ad69f02f8f
|
|||
3ea3f94429
|
|||
11c58d99fa
|
|||
2958540cf7
|
|||
b0a16dc214
|
|||
2a04fb1966
|
|||
fcf64a215d
|
|||
2b6f0dbda4
|
|||
93884a4f51
|
@ -5,6 +5,8 @@ on:
|
|||||||
paths: [ "README.md", "values.yaml" ]
|
paths: [ "README.md", "values.yaml" ]
|
||||||
types: [ "opened", "reopened", "synchronize" ]
|
types: [ "opened", "reopened", "synchronize" ]
|
||||||
push:
|
push:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
paths: [ "README.md", "values.yaml" ]
|
paths: [ "README.md", "values.yaml" ]
|
||||||
tags-ignore:
|
tags-ignore:
|
||||||
- '**'
|
- '**'
|
||||||
@ -13,14 +15,14 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
generate-parameters:
|
generate-parameters:
|
||||||
container:
|
container:
|
||||||
image: docker.io/library/node:22.9.0-alpine
|
image: docker.io/library/node:23.6.0-alpine
|
||||||
runs-on:
|
runs-on:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install tooling
|
- name: Install tooling
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
apk add git
|
apk add git npm
|
||||||
- uses: actions/checkout@v4.2.2
|
- uses: actions/checkout@v4.2.2
|
||||||
- name: Generate parameter section in README
|
- name: Generate parameter section in README
|
||||||
run: |
|
run: |
|
||||||
|
@ -4,6 +4,8 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
types: [ "opened", "reopened", "synchronize" ]
|
types: [ "opened", "reopened", "synchronize" ]
|
||||||
push:
|
push:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
tags-ignore:
|
tags-ignore:
|
||||||
- '**'
|
- '**'
|
||||||
workflow_dispatch: {}
|
workflow_dispatch: {}
|
||||||
@ -11,7 +13,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
helm-lint:
|
helm-lint:
|
||||||
container:
|
container:
|
||||||
image: docker.io/volkerraschek/helm:3.16.1
|
image: docker.io/volkerraschek/helm:3.16.4
|
||||||
runs-on:
|
runs-on:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
@ -26,7 +28,7 @@ jobs:
|
|||||||
|
|
||||||
helm-unittest:
|
helm-unittest:
|
||||||
container:
|
container:
|
||||||
image: docker.io/volkerraschek/helm:3.16.1
|
image: docker.io/volkerraschek/helm:3.16.4
|
||||||
runs-on:
|
runs-on:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
@ -5,6 +5,8 @@ on:
|
|||||||
paths: [ "**/*.md" ]
|
paths: [ "**/*.md" ]
|
||||||
types: [ "opened", "reopened", "synchronize" ]
|
types: [ "opened", "reopened", "synchronize" ]
|
||||||
push:
|
push:
|
||||||
|
branches:
|
||||||
|
- '**'
|
||||||
paths: [ "**/*.md" ]
|
paths: [ "**/*.md" ]
|
||||||
tags-ignore:
|
tags-ignore:
|
||||||
- '**'
|
- '**'
|
||||||
@ -13,14 +15,14 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
markdown-link-checker:
|
markdown-link-checker:
|
||||||
container:
|
container:
|
||||||
image: docker.io/library/node:22.9.0-alpine
|
image: docker.io/library/node:23.6.0-alpine
|
||||||
runs-on:
|
runs-on:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install tooling
|
- name: Install tooling
|
||||||
run: |
|
run: |
|
||||||
apk update
|
apk update
|
||||||
apk add git
|
apk add git npm
|
||||||
- uses: actions/checkout@v4.2.2
|
- uses: actions/checkout@v4.2.2
|
||||||
- name: Verify links in markdown files
|
- name: Verify links in markdown files
|
||||||
run: |
|
run: |
|
||||||
@ -29,7 +31,7 @@ jobs:
|
|||||||
|
|
||||||
markdown-lint:
|
markdown-lint:
|
||||||
container:
|
container:
|
||||||
image: docker.io/library/node:22.9.0-alpine
|
image: docker.io/library/node:23.6.0-alpine
|
||||||
runs-on:
|
runs-on:
|
||||||
- ubuntu-latest
|
- ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
|
@ -8,7 +8,7 @@ on:
|
|||||||
jobs:
|
jobs:
|
||||||
publish-chart:
|
publish-chart:
|
||||||
container:
|
container:
|
||||||
image: docker.io/volkerraschek/helm:3.16.1
|
image: docker.io/volkerraschek/helm:3.16.4
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Install tooling
|
- name: Install tooling
|
||||||
|
33
README.md
33
README.md
@ -46,7 +46,7 @@ version of the chart must be in sync with the `values.yaml`. Newer *minor* versi
|
|||||||
versions can break something!
|
versions can break something!
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CHART_VERSION=0.1.0
|
CHART_VERSION=0.3.1
|
||||||
helm show values prometheus-exporters/prometheus-postgres-exporter --version "${CHART_VERSION}" > values.yaml
|
helm show values prometheus-exporters/prometheus-postgres-exporter --version "${CHART_VERSION}" > values.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -63,6 +63,35 @@ for customizations. These can be configured in more detail via `values.yaml`.
|
|||||||
|
|
||||||
The following examples serve as individual configurations and as inspiration for how deployment problems can be solved.
|
The following examples serve as individual configurations and as inspiration for how deployment problems can be solved.
|
||||||
|
|
||||||
|
#### Avoid CPU throttling by defining a CPU limit
|
||||||
|
|
||||||
|
If the application is deployed with a CPU resource limit, Prometheus may throw a CPU throttling warning for the
|
||||||
|
application. This has more or less to do with the fact that the application finds the number of CPUs of the host, but
|
||||||
|
cannot use the available CPU time to perform computing operations.
|
||||||
|
|
||||||
|
The application must be informed that despite several CPUs only a part (limit) of the available computing time is
|
||||||
|
available. As this is a Golang application, this can be implemented using `GOMAXPROCS`. The following example is one way
|
||||||
|
of defining `GOMAXPROCS` automatically based on the defined CPU limit like `100m`. Please keep in mind, that the CFS
|
||||||
|
rate of `100ms` - default on each kubernetes node, is also very important to avoid CPU throttling.
|
||||||
|
|
||||||
|
Further information about this topic can be found [here](https://kanishk.io/posts/cpu-throttling-in-containerized-go-apps/).
|
||||||
|
|
||||||
|
> [!NOTE]
|
||||||
|
> The environment variable `GOMAXPROCS` is set automatically, when a CPU limit is defined. An explicit configuration is
|
||||||
|
> not anymore required.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
helm install prometheus-postgres-exporter prometheus-exporters/prometheus-postgres-exporter \
|
||||||
|
--set 'config.database.secret.databaseUsername=postgres' \
|
||||||
|
--set 'config.database.secret.databasePassword=postgres' \
|
||||||
|
--set 'config.database.secret.databaseConnectionUrl="postgres.example.local:5432/postgres?ssl=disable"' \
|
||||||
|
--set 'prometheus.metrics.enabled=true' \
|
||||||
|
--set 'prometheus.metrics.serviceMonitor.enabled=true' \
|
||||||
|
--set 'deployment.postgresExporter.env.name=GOMAXPROCS' \
|
||||||
|
--set 'deployment.postgresExporter.env.valueFrom.resourceFieldRef.resource=limits.cpu' \
|
||||||
|
--set 'deployment.postgresExporter.resources.limits.cpu=100m'
|
||||||
|
```
|
||||||
|
|
||||||
#### TLS authentication and encryption
|
#### TLS authentication and encryption
|
||||||
|
|
||||||
The first example shows how to deploy the metric exporter with TLS encryption. The verification of the custom TLS
|
The first example shows how to deploy the metric exporter with TLS encryption. The verification of the custom TLS
|
||||||
@ -219,7 +248,7 @@ deployment:
|
|||||||
| `deployment.replicas` | Number of replicas for the postgres-exporter deployment. | `1` |
|
| `deployment.replicas` | Number of replicas for the postgres-exporter deployment. | `1` |
|
||||||
| `deployment.restartPolicy` | Restart policy of the postgres-exporter deployment. | `""` |
|
| `deployment.restartPolicy` | Restart policy of the postgres-exporter deployment. | `""` |
|
||||||
| `deployment.securityContext` | Security context of the postgres-exporter deployment. | `{}` |
|
| `deployment.securityContext` | Security context of the postgres-exporter deployment. | `{}` |
|
||||||
| `deployment.strategy.type` | Strategy type - `Recreate` or `Rollingupdate`. | `Recreate` |
|
| `deployment.strategy.type` | Strategy type - `Recreate` or `Rollingupdate`. | `Rollingupdate` |
|
||||||
| `deployment.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods during a rolling update. | `1` |
|
| `deployment.strategy.rollingUpdate.maxSurge` | The maximum number of pods that can be scheduled above the desired number of pods during a rolling update. | `1` |
|
||||||
| `deployment.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during a rolling update. | `1` |
|
| `deployment.strategy.rollingUpdate.maxUnavailable` | The maximum number of pods that can be unavailable during a rolling update. | `1` |
|
||||||
| `deployment.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod. | `60` |
|
| `deployment.terminationGracePeriodSeconds` | How long to wait until forcefully kill the pod. | `60` |
|
||||||
|
@ -3,7 +3,6 @@
|
|||||||
"assignees": [ "volker.raschek" ],
|
"assignees": [ "volker.raschek" ],
|
||||||
"customManagers": [
|
"customManagers": [
|
||||||
{
|
{
|
||||||
"description": "Update container image reference",
|
|
||||||
"fileMatch": [
|
"fileMatch": [
|
||||||
"^Chart\\.yaml$"
|
"^Chart\\.yaml$"
|
||||||
],
|
],
|
||||||
@ -16,33 +15,50 @@
|
|||||||
"versioningTemplate": "semver"
|
"versioningTemplate": "semver"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"description": "Detect helm chart version in README",
|
"fileMatch": ["^README\\.md$"],
|
||||||
"fileMatch": [
|
|
||||||
"^README\\.md$"
|
|
||||||
],
|
|
||||||
"matchStrings": [
|
"matchStrings": [
|
||||||
"^CHART_VERSION=(?<currentValue>.*)$"
|
"VERSION=(?<currentValue>.*)"
|
||||||
],
|
],
|
||||||
"datasourceTemplate": "git-tags",
|
|
||||||
"depNameTemplate": "volker.raschek/prometheus-postgres-exporter",
|
"depNameTemplate": "volker.raschek/prometheus-postgres-exporter",
|
||||||
"packageNameTemplate": "git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
|
"packageNameTemplate": "https://git.cryptic.systems/volker.raschek/prometheus-postgres-exporter",
|
||||||
|
"datasourceTemplate": "git-tags",
|
||||||
"versioningTemplate": "semver"
|
"versioningTemplate": "semver"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"labels": [ "renovate" ],
|
"labels": [ "renovate" ],
|
||||||
"packageRules": [
|
"packageRules": [
|
||||||
{
|
|
||||||
"addLabels": [ "renovate/automerge", "renovate/droneci" ],
|
|
||||||
"automerge": true,
|
|
||||||
"matchManagers": "droneci",
|
|
||||||
"matchUpdateTypes": [ "minor", "patch"]
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"addLabels": [ "renovate/automerge", "renovate/npm" ],
|
"addLabels": [ "renovate/automerge", "renovate/npm" ],
|
||||||
"automerge": true,
|
"automerge": true,
|
||||||
"matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ],
|
"matchPackageNames": [ "markdownlint-cli", "@bitnami/readme-generator-for-helm" ],
|
||||||
"matchManagers": [ "npm" ],
|
"matchManagers": [ "npm" ],
|
||||||
"matchUpdateTypes": [ "minor", "patch"]
|
"matchUpdateTypes": [ "minor", "patch"]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"addLabels": [ "renovate/automerge", "renovate/container" ],
|
||||||
|
"automerge": true,
|
||||||
|
"excludePackagePatterns": [
|
||||||
|
"prometheuscommunity/postgres-exporter"
|
||||||
|
],
|
||||||
|
"matchDatasources": [
|
||||||
|
"docker"
|
||||||
|
],
|
||||||
|
"matchUpdateTypes": [
|
||||||
|
"minor",
|
||||||
|
"patch"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"addLabels": [ "renovate/automerge", "renovate/documentation" ],
|
||||||
|
"automerge": true,
|
||||||
|
"matchDepNames": [
|
||||||
|
"volker.raschek/prometheus-postgres-exporter"
|
||||||
|
],
|
||||||
|
"matchUpdateTypes": [
|
||||||
|
"major",
|
||||||
|
"minor",
|
||||||
|
"patch"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"rebaseLabel": "renovate/rebase",
|
"rebaseLabel": "renovate/rebase",
|
||||||
|
@ -9,6 +9,17 @@
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|
||||||
|
{{/* env */}}
|
||||||
|
|
||||||
|
{{- define "prometheus-postgres-exporter.deployment.env" -}}
|
||||||
|
{{- $env := dict "env" (.Values.deployment.postgresExporter.env | default (list) ) }}
|
||||||
|
{{- if and (hasKey .Values.deployment.postgresExporter.resources "limits") (hasKey .Values.deployment.postgresExporter.resources.limits "cpu") }}
|
||||||
|
{{- $env = merge $env (dict "env" (list (dict "name" "GOMAXPROCS" "valueFrom" (dict "resourceFieldRef" (dict "divisor" "1" "resource" "limits.cpu"))))) }}
|
||||||
|
{{- end }}
|
||||||
|
{{ toYaml $env }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
|
||||||
{{/* envFrom */}}
|
{{/* envFrom */}}
|
||||||
|
|
||||||
{{- define "prometheus-postgres-exporter.deployment.envFrom" -}}
|
{{- define "prometheus-postgres-exporter.deployment.envFrom" -}}
|
||||||
|
@ -34,9 +34,10 @@ spec:
|
|||||||
{{- range .Values.deployment.postgresExporter.args }}
|
{{- range .Values.deployment.postgresExporter.args }}
|
||||||
- {{ . | quote }}
|
- {{ . | quote }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- with .Values.deployment.postgresExporter.env }}
|
{{- $env := (include "prometheus-postgres-exporter.deployment.env" . | fromYaml) }}
|
||||||
|
{{- if and (hasKey $env "env") (gt (len $env.env) 0) }}
|
||||||
env:
|
env:
|
||||||
{{- toYaml . | nindent 8 }}
|
{{- toYaml $env.env | nindent 8 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }}
|
{{- $envFrom := (include "prometheus-postgres-exporter.deployment.envFrom" . | fromYaml) }}
|
||||||
{{- if hasKey $envFrom "envFrom" }}
|
{{- if hasKey $envFrom "envFrom" }}
|
||||||
@ -125,3 +126,7 @@ spec:
|
|||||||
volumes:
|
volumes:
|
||||||
{{- toYaml $volumes.volumes | nindent 6 }}
|
{{- toYaml $volumes.volumes | nindent 6 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- with .Values.deployment.strategy }}
|
||||||
|
strategy:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
@ -95,6 +95,13 @@ tests:
|
|||||||
path: spec.template.spec.tolerations
|
path: spec.template.spec.tolerations
|
||||||
- notExists:
|
- notExists:
|
||||||
path: spec.template.spec.topologySpreadConstraints
|
path: spec.template.spec.topologySpreadConstraints
|
||||||
|
- equal:
|
||||||
|
path: spec.strategy
|
||||||
|
value:
|
||||||
|
type: "Rollingupdate"
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 1
|
||||||
|
maxUnavailable: 1
|
||||||
|
|
||||||
- it: Test custom replicas
|
- it: Test custom replicas
|
||||||
set:
|
set:
|
||||||
@ -227,6 +234,14 @@ tests:
|
|||||||
cpu: 25m
|
cpu: 25m
|
||||||
memory: 100MB
|
memory: 100MB
|
||||||
asserts:
|
asserts:
|
||||||
|
- equal:
|
||||||
|
path: spec.template.spec.containers[0].env
|
||||||
|
value:
|
||||||
|
- name: GOMAXPROCS
|
||||||
|
valueFrom:
|
||||||
|
resourceFieldRef:
|
||||||
|
divisor: "1"
|
||||||
|
resource: limits.cpu
|
||||||
- equal:
|
- equal:
|
||||||
path: spec.template.spec.containers[0].resources
|
path: spec.template.spec.containers[0].resources
|
||||||
value:
|
value:
|
||||||
|
@ -228,7 +228,7 @@ deployment:
|
|||||||
## @param deployment.strategy.rollingUpdate.maxSurge The maximum number of pods that can be scheduled above the desired number of pods during a rolling update.
|
## @param deployment.strategy.rollingUpdate.maxSurge The maximum number of pods that can be scheduled above the desired number of pods during a rolling update.
|
||||||
## @param deployment.strategy.rollingUpdate.maxUnavailable The maximum number of pods that can be unavailable during a rolling update.
|
## @param deployment.strategy.rollingUpdate.maxUnavailable The maximum number of pods that can be unavailable during a rolling update.
|
||||||
strategy:
|
strategy:
|
||||||
type: "Recreate"
|
type: "Rollingupdate"
|
||||||
rollingUpdate:
|
rollingUpdate:
|
||||||
maxSurge: 1
|
maxSurge: 1
|
||||||
maxUnavailable: 1
|
maxUnavailable: 1
|
||||||
@ -266,7 +266,7 @@ grafana:
|
|||||||
enabled: false
|
enabled: false
|
||||||
|
|
||||||
## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment.
|
## @param grafana.dashboardDiscoveryLabels Labels that Grafana uses to discover resources. The labels may vary depending on the Grafana deployment.
|
||||||
## @skip grafana.dashboardDiscoveryLabels
|
## @skip grafana.dashboardDiscoveryLabels Skip individual configuration.
|
||||||
dashboardDiscoveryLabels:
|
dashboardDiscoveryLabels:
|
||||||
grafana_dashboard: "1"
|
grafana_dashboard: "1"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user