You've already forked prometheus-postgres-exporter
							
							Compare commits
	
		
			9 Commits
		
	
	
		
			0.2.5
			...
			0e1a7a3924
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 0e1a7a3924 | |||
| 11c58d99fa | |||
| 2958540cf7 | |||
| b0a16dc214 | |||
| 2a04fb1966 | |||
| fcf64a215d | |||
| 2b6f0dbda4 | |||
| 93884a4f51 | |||
| 42ca0a7370 | 
| @@ -13,14 +13,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: | | ||||||
|   | |||||||
| @@ -11,7 +11,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 +26,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: | ||||||
|   | |||||||
| @@ -13,14 +13,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 +29,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 | ||||||
| @@ -21,7 +21,7 @@ jobs: | |||||||
|           HELM_REPO_NAME: upload |           HELM_REPO_NAME: upload | ||||||
|  |  | ||||||
|           CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }} |           CHARTMUSEUM_PASSWORD: ${{ secrets.CHARTMUSEUM_PASSWORD }} | ||||||
|           CHARTMUSEUM_REPOSITORY: ${{ vars.CHARMUSEUM_REPOSITORY }} |           CHARTMUSEUM_REPOSITORY: ${{ vars.CHARTMUSEUM_REPOSITORY }} | ||||||
|           CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }} |           CHARTMUSEUM_USERNAME: ${{ secrets.CHARTMUSEUM_USERNAME }} | ||||||
|           CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }} |           CHARTMUSEUM_HOSTNAME: ${{ vars.CHARTMUSEUM_HOSTNAME }} | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										29
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								README.md
									
									
									
									
									
								
							| @@ -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 | ||||||
|   | |||||||
| @@ -17,32 +17,50 @@ | |||||||
|     }, |     }, | ||||||
|     { |     { | ||||||
|       "description": "Detect helm chart version in README", |       "description": "Detect helm chart version in README", | ||||||
|       "fileMatch": [ |       "fileMatch": ["^README\\.md$"], | ||||||
|         "^README\\.md$" |  | ||||||
|       ], |  | ||||||
|       "matchStrings": [ |       "matchStrings": [ | ||||||
|         "^CHART_VERSION=(?<currentValue>.*)$" |         "^CHART_VERSION=(?<currentValue>.*)$" | ||||||
|       ], |       ], | ||||||
|       "datasourceTemplate": "git-tags", |       "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", | ||||||
|       "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 "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" }} | ||||||
|   | |||||||
| @@ -227,6 +227,13 @@ tests: | |||||||
|         cpu: 25m |         cpu: 25m | ||||||
|         memory: 100MB |         memory: 100MB | ||||||
|   asserts: |   asserts: | ||||||
|  |   - equal: | ||||||
|  |       path: spec.template.spec.containers[0].env | ||||||
|  |       value: | ||||||
|  |       - name: GOMAXPROCS | ||||||
|  |         valueFrom: | ||||||
|  |           resourceFieldRef: | ||||||
|  |             resource: limits.cpu | ||||||
|   - equal: |   - equal: | ||||||
|       path: spec.template.spec.containers[0].resources |       path: spec.template.spec.containers[0].resources | ||||||
|       value: |       value: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user