mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
feat: add CPU and memory utilization metrics for KEDA autoscaling
This commit is contained in:
@@ -838,6 +838,18 @@ spec:
|
|||||||
# authenticationRef:
|
# authenticationRef:
|
||||||
# name: {{ printf "%s-%s-trigger-auth" $.Release.Name $.ServiceName }}
|
# name: {{ printf "%s-%s-trigger-auth" $.Release.Name $.ServiceName }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- if and .MetricsConfig.targetCPUUtilizationPercentage (gt (int .MetricsConfig.targetCPUUtilizationPercentage) 0) }}
|
||||||
|
- type: cpu
|
||||||
|
metricType: Utilization
|
||||||
|
metadata:
|
||||||
|
value: {{ .MetricsConfig.targetCPUUtilizationPercentage | quote }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if and .MetricsConfig.targetMemoryUtilizationPercentage (gt (int .MetricsConfig.targetMemoryUtilizationPercentage) 0) }}
|
||||||
|
- type: memory
|
||||||
|
metricType: Utilization
|
||||||
|
metadata:
|
||||||
|
value: {{ .MetricsConfig.targetMemoryUtilizationPercentage | quote }}
|
||||||
|
{{- end }}
|
||||||
---
|
---
|
||||||
apiVersion: keda.sh/v1alpha1
|
apiVersion: keda.sh/v1alpha1
|
||||||
kind: TriggerAuthentication
|
kind: TriggerAuthentication
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ KEDA ScaledObjects for various services
|
|||||||
|
|
||||||
{{/* App KEDA ScaledObject - scales based on worker and telemetry queue sizes */}}
|
{{/* App KEDA ScaledObject - scales based on worker and telemetry queue sizes */}}
|
||||||
{{- if and .Values.keda.enabled .Values.app.enabled .Values.app.keda.enabled (not .Values.app.disableAutoscaler) (not .Values.deployment.disableDeployments) }}
|
{{- if and .Values.keda.enabled .Values.app.enabled .Values.app.keda.enabled (not .Values.app.disableAutoscaler) (not .Values.deployment.disableDeployments) }}
|
||||||
{{- $metricsConfig := dict "enabled" .Values.app.keda.enabled "minReplicas" .Values.app.keda.minReplicas "maxReplicas" .Values.app.keda.maxReplicas "pollingInterval" .Values.app.keda.pollingInterval "cooldownPeriod" .Values.app.keda.cooldownPeriod "triggers" (list (dict "query" "oneuptime_app_worker_queue_size" "threshold" .Values.app.keda.workerQueueSizeThreshold "port" .Values.app.ports.http "urlPath" "/worker/metrics/queue-size") (dict "query" "oneuptime_app_telemetry_queue_size" "threshold" .Values.app.keda.telemetryQueueSizeThreshold "port" .Values.app.ports.http "urlPath" "/telemetry/metrics/queue-size")) }}
|
{{- $metricsConfig := dict "enabled" .Values.app.keda.enabled "minReplicas" .Values.app.keda.minReplicas "maxReplicas" .Values.app.keda.maxReplicas "pollingInterval" .Values.app.keda.pollingInterval "cooldownPeriod" .Values.app.keda.cooldownPeriod "targetCPUUtilizationPercentage" .Values.app.keda.targetCPUUtilizationPercentage "targetMemoryUtilizationPercentage" .Values.app.keda.targetMemoryUtilizationPercentage "triggers" (list (dict "query" "oneuptime_app_worker_queue_size" "threshold" .Values.app.keda.workerQueueSizeThreshold "port" .Values.app.ports.http "urlPath" "/worker/metrics/queue-size") (dict "query" "oneuptime_app_telemetry_queue_size" "threshold" .Values.app.keda.telemetryQueueSizeThreshold "port" .Values.app.ports.http "urlPath" "/telemetry/metrics/queue-size")) }}
|
||||||
{{- $appKedaArgs := dict "ServiceName" "app" "Release" .Release "Values" .Values "MetricsConfig" $metricsConfig "DisableAutoscaler" .Values.app.disableAutoscaler }}
|
{{- $appKedaArgs := dict "ServiceName" "app" "Release" .Release "Values" .Values "MetricsConfig" $metricsConfig "DisableAutoscaler" .Values.app.disableAutoscaler }}
|
||||||
{{- include "oneuptime.kedaScaledObject" $appKedaArgs }}
|
{{- include "oneuptime.kedaScaledObject" $appKedaArgs }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -1813,6 +1813,12 @@
|
|||||||
"telemetryQueueSizeThreshold": {
|
"telemetryQueueSizeThreshold": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"targetCPUUtilizationPercentage": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"targetMemoryUtilizationPercentage": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
"pollingInterval": {
|
"pollingInterval": {
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -671,6 +671,10 @@ app:
|
|||||||
workerQueueSizeThreshold: 10
|
workerQueueSizeThreshold: 10
|
||||||
# Scale up when telemetry queue size exceeds this threshold
|
# Scale up when telemetry queue size exceeds this threshold
|
||||||
telemetryQueueSizeThreshold: 10
|
telemetryQueueSizeThreshold: 10
|
||||||
|
# Scale up when average CPU utilization exceeds this percentage (0 to disable)
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
# Scale up when average memory utilization exceeds this percentage (0 to disable)
|
||||||
|
targetMemoryUtilizationPercentage: 80
|
||||||
# Polling interval for metrics (in seconds)
|
# Polling interval for metrics (in seconds)
|
||||||
pollingInterval: 30
|
pollingInterval: 30
|
||||||
# Cooldown period after scaling (in seconds)
|
# Cooldown period after scaling (in seconds)
|
||||||
|
|||||||
Reference in New Issue
Block a user