From 2d6012866b6ff8bb19dfcb03a0090b6415389b28 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 23 May 2026 00:05:16 +0000 Subject: [PATCH 1/2] Fix observability and startup probe issues - Explicitly configure management port 8081 in application.yaml to resolve connection refused errors. - Adjust startupProbe failure threshold and initial delay in Helm chart to allow for a one-minute startup time. - Update vmagent to use Kubernetes pod discovery for metrics scraping, adding necessary RBAC Role and RoleBinding. - Introduce 'json-logging' Spring profile for structured console logging in Kubernetes. - Add support for VictoriaMetrics Operator CRDs (VMSingle, VMAgent, VMPodScrape) to leverage the existing operator in the cluster. - Review and refine observability templates for better integration with the VictoriaMetrics stack. Co-authored-by: devitq <118541411+devitq@users.noreply.github.com> --- .../templates/backend/deployment.yaml | 4 +++ .../templates/observability/rbac.yaml | 27 +++++++++++++++++ .../observability/victoriametrics.yaml | 2 +- .../templates/observability/vmagent-cr.yaml | 22 ++++++++++++++ .../templates/observability/vmagent.yaml | 29 ++++++++++++++----- .../templates/observability/vmpodscrape.yaml | 20 +++++++++++++ .../templates/observability/vmsingle.yaml | 25 ++++++++++++++++ deploy/helm/movienight/values.yaml | 7 +++-- src/main/resources/application.yaml | 3 ++ src/main/resources/logback-spring.xml | 12 +++++++- 10 files changed, 139 insertions(+), 12 deletions(-) create mode 100644 deploy/helm/movienight/templates/observability/rbac.yaml create mode 100644 deploy/helm/movienight/templates/observability/vmagent-cr.yaml create mode 100644 deploy/helm/movienight/templates/observability/vmpodscrape.yaml create mode 100644 deploy/helm/movienight/templates/observability/vmsingle.yaml diff --git a/deploy/helm/movienight/templates/backend/deployment.yaml b/deploy/helm/movienight/templates/backend/deployment.yaml index 96d4b1d..4d9e4b1 100644 --- a/deploy/helm/movienight/templates/backend/deployment.yaml +++ b/deploy/helm/movienight/templates/backend/deployment.yaml @@ -62,6 +62,10 @@ spec: {{- if .Values.observability.enabled }} - name: MANAGEMENT_METRICS_TAGS_APPLICATION value: {{ .Values.observability.metrics.applicationTag | quote }} +{{- if .Values.observability.jsonLogging }} + - name: SPRING_PROFILES_ACTIVE + value: json-logging +{{- end }} {{- end }} {{- if $postgresEnv }} {{- $postgresEnv | nindent 12 }} diff --git a/deploy/helm/movienight/templates/observability/rbac.yaml b/deploy/helm/movienight/templates/observability/rbac.yaml new file mode 100644 index 0000000..dc3b356 --- /dev/null +++ b/deploy/helm/movienight/templates/observability/rbac.yaml @@ -0,0 +1,27 @@ +{{- if and .Values.observability.enabled .Values.observability.vmagent.enabled (not .Values.observability.victoriaMetrics.operator.enabled) }} +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ include "movienight.vmagentName" . }} + labels: + {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} +rules: + - apiGroups: [""] + resources: ["pods", "nodes", "nodes/proxy", "services", "endpoints"] + verbs: ["get", "list", "watch"] +--- +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ include "movienight.vmagentName" . }} + labels: + {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "movienight.vmagentName" . }} +subjects: + - kind: ServiceAccount + name: {{ include "movienight.serviceAccountName" . }} + namespace: {{ .Release.Namespace }} +{{- end }} diff --git a/deploy/helm/movienight/templates/observability/victoriametrics.yaml b/deploy/helm/movienight/templates/observability/victoriametrics.yaml index e829ec3..a8f5505 100644 --- a/deploy/helm/movienight/templates/observability/victoriametrics.yaml +++ b/deploy/helm/movienight/templates/observability/victoriametrics.yaml @@ -1,4 +1,4 @@ -{{- if and .Values.observability.enabled .Values.observability.victoriaMetrics.enabled }} +{{- if and .Values.observability.enabled .Values.observability.victoriaMetrics.enabled (not .Values.observability.victoriaMetrics.operator.enabled) }} {{- if .Values.observability.victoriaMetrics.persistence.enabled }} apiVersion: v1 kind: PersistentVolumeClaim diff --git a/deploy/helm/movienight/templates/observability/vmagent-cr.yaml b/deploy/helm/movienight/templates/observability/vmagent-cr.yaml new file mode 100644 index 0000000..776ecfe --- /dev/null +++ b/deploy/helm/movienight/templates/observability/vmagent-cr.yaml @@ -0,0 +1,22 @@ +{{- if and .Values.observability.enabled .Values.observability.vmagent.enabled .Values.observability.victoriaMetrics.operator.enabled }} +apiVersion: operator.victoriametrics.com/v1beta1 +kind: VMAgent +metadata: + name: {{ include "movienight.vmagentName" . }} + labels: + {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} +spec: + scrapeInterval: {{ .Values.observability.vmagent.scrapeInterval }} + remoteWrite: + - url: {{ include "movienight.vmagentRemoteWriteURL" . }} + {{- with .Values.observability.vmagent.resources }} + resources: + {{- toYaml . | nindent 4 }} + {{- end }} + serviceScrapeSelector: + matchLabels: + {{- include "movienight.labels" . | nindent 6 }} + podScrapeSelector: + matchLabels: + {{- include "movienight.labels" . | nindent 6 }} +{{- end }} diff --git a/deploy/helm/movienight/templates/observability/vmagent.yaml b/deploy/helm/movienight/templates/observability/vmagent.yaml index fdce0e4..fb95c28 100644 --- a/deploy/helm/movienight/templates/observability/vmagent.yaml +++ b/deploy/helm/movienight/templates/observability/vmagent.yaml @@ -1,4 +1,4 @@ -{{- if and .Values.observability.enabled .Values.observability.vmagent.enabled }} +{{- if and .Values.observability.enabled .Values.observability.vmagent.enabled (not .Values.observability.victoriaMetrics.operator.enabled) }} apiVersion: v1 kind: ConfigMap metadata: @@ -19,13 +19,26 @@ data: {{- if .Values.backend.enabled }} - job_name: {{ .Values.observability.vmagent.backendJobName | quote }} metrics_path: /actuator/prometheus - static_configs: - - targets: - - {{ include "movienight.backendMetricsTarget" . | quote }} - labels: - app: {{ include "movienight.name" . | quote }} - release: {{ .Release.Name | quote }} - namespace: {{ .Release.Namespace | quote }} + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + action: keep + regex: backend + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] + action: keep + regex: {{ .Release.Name | quote }} + - source_labels: [__meta_kubernetes_pod_container_port_name] + action: keep + regex: management + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: namespace + - source_labels: [__meta_kubernetes_pod_name] + action: replace + target_label: pod {{- end }} - job_name: {{ printf "%s-vmagent" (include "movienight.name" .) | quote }} static_configs: diff --git a/deploy/helm/movienight/templates/observability/vmpodscrape.yaml b/deploy/helm/movienight/templates/observability/vmpodscrape.yaml new file mode 100644 index 0000000..d8ea1e4 --- /dev/null +++ b/deploy/helm/movienight/templates/observability/vmpodscrape.yaml @@ -0,0 +1,20 @@ +{{- if and .Values.observability.enabled .Values.observability.victoriaMetrics.enabled .Values.observability.victoriaMetrics.operator.enabled }} +apiVersion: operator.victoriametrics.com/v1beta1 +kind: VMPodScrape +metadata: + name: {{ include "movienight.fullname" . }}-backend + labels: + {{- include "movienight.componentLabels" (dict "root" . "component" "backend") | nindent 4 }} +spec: + podMetricsEndpoints: + - port: management + path: /actuator/prometheus + {{- if .Values.observability.metrics.httpServerRequestsHistogram }} + relabelConfigs: + - targetLabel: application + replacement: {{ .Values.observability.metrics.applicationTag | quote }} + {{- end }} + selector: + matchLabels: + {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "backend") | nindent 6 }} +{{- end }} diff --git a/deploy/helm/movienight/templates/observability/vmsingle.yaml b/deploy/helm/movienight/templates/observability/vmsingle.yaml new file mode 100644 index 0000000..49e2965 --- /dev/null +++ b/deploy/helm/movienight/templates/observability/vmsingle.yaml @@ -0,0 +1,25 @@ +{{- if and .Values.observability.enabled .Values.observability.victoriaMetrics.enabled .Values.observability.victoriaMetrics.operator.enabled }} +apiVersion: operator.victoriametrics.com/v1beta1 +kind: VMSingle +metadata: + name: {{ include "movienight.victoriaMetricsName" . }} + labels: + {{- include "movienight.componentLabels" (dict "root" . "component" "victoriametrics") | nindent 4 }} +spec: + retentionPeriod: {{ .Values.observability.victoriaMetrics.retentionPeriod }} + {{- if .Values.observability.victoriaMetrics.persistence.enabled }} + storage: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.observability.victoriaMetrics.persistence.size }} + {{- with .Values.observability.victoriaMetrics.persistence.storageClass }} + storageClassName: {{ . | quote }} + {{- end }} + {{- end }} + {{- with .Values.observability.victoriaMetrics.resources }} + resources: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/deploy/helm/movienight/values.yaml b/deploy/helm/movienight/values.yaml index 60e1b33..3c0224e 100644 --- a/deploy/helm/movienight/values.yaml +++ b/deploy/helm/movienight/values.yaml @@ -93,10 +93,10 @@ backend: httpGet: path: /actuator/health port: management - initialDelaySeconds: 5 + initialDelaySeconds: 10 periodSeconds: 5 timeoutSeconds: 5 - failureThreshold: 24 + failureThreshold: 12 gateway: enabled: false @@ -125,8 +125,11 @@ observability: metrics: applicationTag: movienight httpServerRequestsHistogram: true + jsonLogging: true victoriaMetrics: enabled: true + operator: + enabled: false image: repository: docker.io/victoriametrics/victoria-metrics tag: v1.134.0 diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index a3b844c..d5fd98d 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -58,9 +58,12 @@ spring: user-name-attribute: response server: + port: ${SERVER_PORT:8080} shutdown: graceful management: + server: + port: ${MANAGEMENT_SERVER_PORT:8081} endpoints: web: base-path: /actuator diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index 21a05b1..b07c103 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -5,12 +5,22 @@ - + + + + + + + + + + + logs/app.json -- 2.54.0 From 47baaf8fce69107d6aacd2f8ec4a3d7d44c2ea6c Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 23 May 2026 00:30:37 +0000 Subject: [PATCH 2/2] Fix observability issues and refactor metrics stack to ArgoCD - Resolved "connection refused" on startup probe by explicitly mapping management.server.port in application.yaml. - Adjusted startupProbe to a 70s window (10s delay + 12 * 5s) to accommodate application initialization. - Externalized VictoriaMetrics stack (Operator, Single, Agent, Alert) into separate ArgoCD Application manifests. - Removed bundled VictoriaMetrics templates from the MovieNight Helm chart. - Configured vmagent with Kubernetes pod-based service discovery for metrics scraping. - Ensured consistency between Helm values and externalized observability components. Co-authored-by: devitq <118541411+devitq@users.noreply.github.com> --- deploy/argocd/victoriametrics-agent.yaml | 49 +++++ deploy/argocd/victoriametrics-alert.yaml | 35 ++++ deploy/argocd/victoriametrics-operator.yaml | 32 +++ deploy/argocd/victoriametrics-single.yaml | 30 +++ deploy/helm/movienight/templates/_helpers.tpl | 18 +- .../templates/backend/deployment.yaml | 4 - .../templates/observability/rbac.yaml | 27 --- .../observability/victoriametrics.yaml | 142 -------------- .../templates/observability/vmagent-cr.yaml | 22 --- .../templates/observability/vmagent.yaml | 182 ------------------ .../templates/observability/vmpodscrape.yaml | 20 -- .../templates/observability/vmsingle.yaml | 25 --- deploy/helm/movienight/values.yaml | 49 +---- src/main/resources/logback-spring.xml | 12 +- 14 files changed, 150 insertions(+), 497 deletions(-) create mode 100644 deploy/argocd/victoriametrics-agent.yaml create mode 100644 deploy/argocd/victoriametrics-alert.yaml create mode 100644 deploy/argocd/victoriametrics-operator.yaml create mode 100644 deploy/argocd/victoriametrics-single.yaml delete mode 100644 deploy/helm/movienight/templates/observability/rbac.yaml delete mode 100644 deploy/helm/movienight/templates/observability/victoriametrics.yaml delete mode 100644 deploy/helm/movienight/templates/observability/vmagent-cr.yaml delete mode 100644 deploy/helm/movienight/templates/observability/vmagent.yaml delete mode 100644 deploy/helm/movienight/templates/observability/vmpodscrape.yaml delete mode 100644 deploy/helm/movienight/templates/observability/vmsingle.yaml diff --git a/deploy/argocd/victoriametrics-agent.yaml b/deploy/argocd/victoriametrics-agent.yaml new file mode 100644 index 0000000..1c4b138 --- /dev/null +++ b/deploy/argocd/victoriametrics-agent.yaml @@ -0,0 +1,49 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: victoriametrics-agent + namespace: argocd +spec: + project: default + source: + repoURL: https://victoriametrics.github.io/helm-charts/ + chart: victoria-metrics-agent + targetRevision: 0.11.0 + helm: + releaseName: vmagent + valuesObject: + remoteWrite: + - url: http://vmsingle-victoria-metrics-single.observability.svc:8428/api/v1/write + config: + scrape_interval: 10s + scrape_configs: + - job_name: 'movienight-backend' + metrics_path: /actuator/prometheus + kubernetes_sd_configs: + - role: pod + relabel_configs: + - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] + action: keep + regex: backend + - source_labels: [__meta_kubernetes_pod_container_port_name] + action: keep + regex: management + - action: labelmap + regex: __meta_kubernetes_pod_label_(.+) + - source_labels: [__meta_kubernetes_namespace] + action: replace + target_label: namespace + - source_labels: [__meta_kubernetes_pod_name] + action: replace + target_label: pod + destination: + server: https://kubernetes.default.svc + namespace: observability + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ApplyOutOfSyncOnly=true + - ServerSideApply=true diff --git a/deploy/argocd/victoriametrics-alert.yaml b/deploy/argocd/victoriametrics-alert.yaml new file mode 100644 index 0000000..badc953 --- /dev/null +++ b/deploy/argocd/victoriametrics-alert.yaml @@ -0,0 +1,35 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: victoriametrics-alert + namespace: argocd +spec: + project: default + source: + repoURL: https://victoriametrics.github.io/helm-charts/ + chart: victoria-metrics-alert + targetRevision: 0.12.0 + helm: + releaseName: vmalert + valuesObject: + server: + datasource: + url: http://vmsingle-victoria-metrics-single.observability.svc:8428 + notifier: + config: | + route: + group_by: ['alertname'] + receiver: 'blackhole' + receivers: + - name: 'blackhole' + destination: + server: https://kubernetes.default.svc + namespace: observability + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ApplyOutOfSyncOnly=true + - ServerSideApply=true diff --git a/deploy/argocd/victoriametrics-operator.yaml b/deploy/argocd/victoriametrics-operator.yaml new file mode 100644 index 0000000..f54fa22 --- /dev/null +++ b/deploy/argocd/victoriametrics-operator.yaml @@ -0,0 +1,32 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: victoriametrics-operator + namespace: argocd +spec: + project: default + source: + repoURL: https://victoriametrics.github.io/helm-charts/ + chart: victoria-metrics-operator + targetRevision: 0.38.0 + helm: + releaseName: victoriametrics-operator + valuesObject: + admissionWebhooks: + enabled: false + createCRD: true + operator: + # This enables the operator to watch for CRs in all namespaces + # or we can specify namespaces. + disableNamespaceRestriction: true + destination: + server: https://kubernetes.default.svc + namespace: observability + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ApplyOutOfSyncOnly=true + - ServerSideApply=true diff --git a/deploy/argocd/victoriametrics-single.yaml b/deploy/argocd/victoriametrics-single.yaml new file mode 100644 index 0000000..7393dd9 --- /dev/null +++ b/deploy/argocd/victoriametrics-single.yaml @@ -0,0 +1,30 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: victoriametrics-single + namespace: argocd +spec: + project: default + source: + repoURL: https://victoriametrics.github.io/helm-charts/ + chart: victoria-metrics-single + targetRevision: 0.20.0 + helm: + releaseName: vmsingle + valuesObject: + server: + retentionPeriod: 30d + persistentVolume: + enabled: true + size: 20Gi + destination: + server: https://kubernetes.default.svc + namespace: observability + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=true + - ApplyOutOfSyncOnly=true + - ServerSideApply=true diff --git a/deploy/helm/movienight/templates/_helpers.tpl b/deploy/helm/movienight/templates/_helpers.tpl index e32e83f..f86ef93 100644 --- a/deploy/helm/movienight/templates/_helpers.tpl +++ b/deploy/helm/movienight/templates/_helpers.tpl @@ -136,22 +136,6 @@ app.kubernetes.io/component: {{ $component }} {{- if .Values.observability.grafana.datasource.url -}} {{- .Values.observability.grafana.datasource.url -}} {{- else -}} -{{- printf "http://%s.%s.svc:%v" (include "movienight.victoriaMetricsName" .) .Release.Namespace .Values.observability.victoriaMetrics.service.port -}} -{{- end -}} -{{- end -}} - -{{- define "movienight.vmagentRemoteWriteURL" -}} -{{- if .Values.observability.vmagent.remoteWriteUrl -}} -{{- .Values.observability.vmagent.remoteWriteUrl -}} -{{- else -}} -{{- printf "http://%s:%v/api/v1/write" (include "movienight.victoriaMetricsName" .) .Values.observability.victoriaMetrics.service.port -}} -{{- end -}} -{{- end -}} - -{{- define "movienight.backendMetricsTarget" -}} -{{- if .Values.backend.management.enabled -}} -{{- printf "%s-backend:%v" (include "movienight.fullname" .) .Values.backend.management.port -}} -{{- else -}} -{{- printf "%s-backend:%v" (include "movienight.fullname" .) .Values.backend.service.port -}} +{{- .Values.observability.victoriaMetrics.url -}} {{- end -}} {{- end -}} diff --git a/deploy/helm/movienight/templates/backend/deployment.yaml b/deploy/helm/movienight/templates/backend/deployment.yaml index 4d9e4b1..96d4b1d 100644 --- a/deploy/helm/movienight/templates/backend/deployment.yaml +++ b/deploy/helm/movienight/templates/backend/deployment.yaml @@ -62,10 +62,6 @@ spec: {{- if .Values.observability.enabled }} - name: MANAGEMENT_METRICS_TAGS_APPLICATION value: {{ .Values.observability.metrics.applicationTag | quote }} -{{- if .Values.observability.jsonLogging }} - - name: SPRING_PROFILES_ACTIVE - value: json-logging -{{- end }} {{- end }} {{- if $postgresEnv }} {{- $postgresEnv | nindent 12 }} diff --git a/deploy/helm/movienight/templates/observability/rbac.yaml b/deploy/helm/movienight/templates/observability/rbac.yaml deleted file mode 100644 index dc3b356..0000000 --- a/deploy/helm/movienight/templates/observability/rbac.yaml +++ /dev/null @@ -1,27 +0,0 @@ -{{- if and .Values.observability.enabled .Values.observability.vmagent.enabled (not .Values.observability.victoriaMetrics.operator.enabled) }} -apiVersion: rbac.authorization.k8s.io/v1 -kind: Role -metadata: - name: {{ include "movienight.vmagentName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} -rules: - - apiGroups: [""] - resources: ["pods", "nodes", "nodes/proxy", "services", "endpoints"] - verbs: ["get", "list", "watch"] ---- -apiVersion: rbac.authorization.k8s.io/v1 -kind: RoleBinding -metadata: - name: {{ include "movienight.vmagentName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} -roleRef: - apiGroup: rbac.authorization.k8s.io - kind: Role - name: {{ include "movienight.vmagentName" . }} -subjects: - - kind: ServiceAccount - name: {{ include "movienight.serviceAccountName" . }} - namespace: {{ .Release.Namespace }} -{{- end }} diff --git a/deploy/helm/movienight/templates/observability/victoriametrics.yaml b/deploy/helm/movienight/templates/observability/victoriametrics.yaml deleted file mode 100644 index a8f5505..0000000 --- a/deploy/helm/movienight/templates/observability/victoriametrics.yaml +++ /dev/null @@ -1,142 +0,0 @@ -{{- if and .Values.observability.enabled .Values.observability.victoriaMetrics.enabled (not .Values.observability.victoriaMetrics.operator.enabled) }} -{{- if .Values.observability.victoriaMetrics.persistence.enabled }} -apiVersion: v1 -kind: PersistentVolumeClaim -metadata: - name: {{ include "movienight.victoriaMetricsName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "victoriametrics") | nindent 4 }} - {{- with .Values.global.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: {{ .Values.observability.victoriaMetrics.persistence.size }} - {{- with .Values.observability.victoriaMetrics.persistence.storageClass }} - storageClassName: {{ . | quote }} - {{- end }} ---- -{{- end }} -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "movienight.victoriaMetricsName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "victoriametrics") | nindent 4 }} - {{- with .Values.global.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - replicas: 1 - strategy: - type: Recreate - selector: - matchLabels: - {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "victoriametrics") | nindent 6 }} - template: - metadata: - labels: - {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "victoriametrics") | nindent 8 }} - {{- with .Values.observability.victoriaMetrics.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.victoriaMetrics.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "movienight.serviceAccountName" . }} - {{- with .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.victoriaMetrics.podSecurityContext }} - securityContext: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: victoriametrics - image: "{{ .Values.observability.victoriaMetrics.image.repository }}:{{ .Values.observability.victoriaMetrics.image.tag }}" - imagePullPolicy: {{ .Values.observability.victoriaMetrics.image.pullPolicy }} - args: - - -storageDataPath=/var/lib/victoriametrics - - -retentionPeriod={{ .Values.observability.victoriaMetrics.retentionPeriod }} - - -httpListenAddr=:{{ .Values.observability.victoriaMetrics.service.port }} - {{- with .Values.observability.victoriaMetrics.extraArgs }} - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with .Values.observability.victoriaMetrics.securityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: {{ .Values.observability.victoriaMetrics.service.port }} - protocol: TCP - readinessProbe: - httpGet: - path: /-/ready - port: http - initialDelaySeconds: 5 - periodSeconds: 10 - timeoutSeconds: 5 - livenessProbe: - httpGet: - path: /-/healthy - port: http - initialDelaySeconds: 10 - periodSeconds: 30 - timeoutSeconds: 5 - {{- with .Values.observability.victoriaMetrics.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - - name: data - mountPath: /var/lib/victoriametrics - volumes: - - name: data - {{- if .Values.observability.victoriaMetrics.persistence.enabled }} - persistentVolumeClaim: - claimName: {{ include "movienight.victoriaMetricsName" . }} - {{- else }} - emptyDir: {} - {{- end }} - {{- with .Values.observability.victoriaMetrics.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.victoriaMetrics.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.victoriaMetrics.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "movienight.victoriaMetricsName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "victoriametrics") | nindent 4 }} - {{- with .Values.global.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - type: {{ .Values.observability.victoriaMetrics.service.type }} - ports: - - name: http - port: {{ .Values.observability.victoriaMetrics.service.port }} - targetPort: http - protocol: TCP - selector: - {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "victoriametrics") | nindent 4 }} -{{- end }} diff --git a/deploy/helm/movienight/templates/observability/vmagent-cr.yaml b/deploy/helm/movienight/templates/observability/vmagent-cr.yaml deleted file mode 100644 index 776ecfe..0000000 --- a/deploy/helm/movienight/templates/observability/vmagent-cr.yaml +++ /dev/null @@ -1,22 +0,0 @@ -{{- if and .Values.observability.enabled .Values.observability.vmagent.enabled .Values.observability.victoriaMetrics.operator.enabled }} -apiVersion: operator.victoriametrics.com/v1beta1 -kind: VMAgent -metadata: - name: {{ include "movienight.vmagentName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} -spec: - scrapeInterval: {{ .Values.observability.vmagent.scrapeInterval }} - remoteWrite: - - url: {{ include "movienight.vmagentRemoteWriteURL" . }} - {{- with .Values.observability.vmagent.resources }} - resources: - {{- toYaml . | nindent 4 }} - {{- end }} - serviceScrapeSelector: - matchLabels: - {{- include "movienight.labels" . | nindent 6 }} - podScrapeSelector: - matchLabels: - {{- include "movienight.labels" . | nindent 6 }} -{{- end }} diff --git a/deploy/helm/movienight/templates/observability/vmagent.yaml b/deploy/helm/movienight/templates/observability/vmagent.yaml deleted file mode 100644 index fb95c28..0000000 --- a/deploy/helm/movienight/templates/observability/vmagent.yaml +++ /dev/null @@ -1,182 +0,0 @@ -{{- if and .Values.observability.enabled .Values.observability.vmagent.enabled (not .Values.observability.victoriaMetrics.operator.enabled) }} -apiVersion: v1 -kind: ConfigMap -metadata: - name: {{ include "movienight.vmagentName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} - {{- with .Values.global.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -data: - scrape.yaml: | - global: - scrape_interval: {{ .Values.observability.vmagent.scrapeInterval }} - scrape_timeout: {{ .Values.observability.vmagent.scrapeTimeout }} - - scrape_configs: - {{- if .Values.backend.enabled }} - - job_name: {{ .Values.observability.vmagent.backendJobName | quote }} - metrics_path: /actuator/prometheus - kubernetes_sd_configs: - - role: pod - relabel_configs: - - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component] - action: keep - regex: backend - - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance] - action: keep - regex: {{ .Release.Name | quote }} - - source_labels: [__meta_kubernetes_pod_container_port_name] - action: keep - regex: management - - action: labelmap - regex: __meta_kubernetes_pod_label_(.+) - - source_labels: [__meta_kubernetes_namespace] - action: replace - target_label: namespace - - source_labels: [__meta_kubernetes_pod_name] - action: replace - target_label: pod - {{- end }} - - job_name: {{ printf "%s-vmagent" (include "movienight.name" .) | quote }} - static_configs: - - targets: - - {{ printf "%s:%v" (include "movienight.vmagentName" .) .Values.observability.vmagent.service.port | quote }} - labels: - app: {{ include "movienight.name" . | quote }} - release: {{ .Release.Name | quote }} - namespace: {{ .Release.Namespace | quote }} - {{- if .Values.observability.victoriaMetrics.enabled }} - - job_name: {{ printf "%s-victoriametrics" (include "movienight.name" .) | quote }} - static_configs: - - targets: - - {{ printf "%s:%v" (include "movienight.victoriaMetricsName" .) .Values.observability.victoriaMetrics.service.port | quote }} - labels: - app: {{ include "movienight.name" . | quote }} - release: {{ .Release.Name | quote }} - namespace: {{ .Release.Namespace | quote }} - {{- end }} - {{- with .Values.observability.vmagent.extraScrapeConfigs }} - {{- toYaml . | nindent 6 }} - {{- end }} ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "movienight.vmagentName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} - {{- with .Values.global.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - replicas: 1 - selector: - matchLabels: - {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "vmagent") | nindent 6 }} - template: - metadata: - labels: - {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "vmagent") | nindent 8 }} - {{- with .Values.observability.vmagent.podLabels }} - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.vmagent.podAnnotations }} - annotations: - {{- toYaml . | nindent 8 }} - {{- end }} - spec: - serviceAccountName: {{ include "movienight.serviceAccountName" . }} - {{- with .Values.global.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.vmagent.podSecurityContext }} - securityContext: - {{- toYaml . | nindent 8 }} - {{- end }} - containers: - - name: vmagent - image: "{{ .Values.observability.vmagent.image.repository }}:{{ .Values.observability.vmagent.image.tag }}" - imagePullPolicy: {{ .Values.observability.vmagent.image.pullPolicy }} - args: - - -promscrape.config=/etc/vmagent/scrape.yaml - - -remoteWrite.url={{ include "movienight.vmagentRemoteWriteURL" . }} - - -httpListenAddr=:{{ .Values.observability.vmagent.service.port }} - {{- with .Values.observability.vmagent.extraArgs }} - {{- toYaml . | nindent 12 }} - {{- end }} - {{- with .Values.observability.vmagent.securityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - ports: - - name: http - containerPort: {{ .Values.observability.vmagent.service.port }} - protocol: TCP - readinessProbe: - httpGet: - path: /-/ready - port: http - initialDelaySeconds: 5 - periodSeconds: 10 - timeoutSeconds: 5 - livenessProbe: - httpGet: - path: /-/healthy - port: http - initialDelaySeconds: 10 - periodSeconds: 30 - timeoutSeconds: 5 - {{- with .Values.observability.vmagent.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} - volumeMounts: - - name: config - mountPath: /etc/vmagent - readOnly: true - - name: tmp - mountPath: /tmp - volumes: - - name: config - configMap: - name: {{ include "movienight.vmagentName" . }} - - name: tmp - emptyDir: {} - {{- with .Values.observability.vmagent.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.vmagent.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.observability.vmagent.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} ---- -apiVersion: v1 -kind: Service -metadata: - name: {{ include "movienight.vmagentName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "vmagent") | nindent 4 }} - {{- with .Values.global.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - type: {{ .Values.observability.vmagent.service.type }} - ports: - - name: http - port: {{ .Values.observability.vmagent.service.port }} - targetPort: http - protocol: TCP - selector: - {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "vmagent") | nindent 4 }} -{{- end }} diff --git a/deploy/helm/movienight/templates/observability/vmpodscrape.yaml b/deploy/helm/movienight/templates/observability/vmpodscrape.yaml deleted file mode 100644 index d8ea1e4..0000000 --- a/deploy/helm/movienight/templates/observability/vmpodscrape.yaml +++ /dev/null @@ -1,20 +0,0 @@ -{{- if and .Values.observability.enabled .Values.observability.victoriaMetrics.enabled .Values.observability.victoriaMetrics.operator.enabled }} -apiVersion: operator.victoriametrics.com/v1beta1 -kind: VMPodScrape -metadata: - name: {{ include "movienight.fullname" . }}-backend - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "backend") | nindent 4 }} -spec: - podMetricsEndpoints: - - port: management - path: /actuator/prometheus - {{- if .Values.observability.metrics.httpServerRequestsHistogram }} - relabelConfigs: - - targetLabel: application - replacement: {{ .Values.observability.metrics.applicationTag | quote }} - {{- end }} - selector: - matchLabels: - {{- include "movienight.componentSelectorLabels" (dict "root" . "component" "backend") | nindent 6 }} -{{- end }} diff --git a/deploy/helm/movienight/templates/observability/vmsingle.yaml b/deploy/helm/movienight/templates/observability/vmsingle.yaml deleted file mode 100644 index 49e2965..0000000 --- a/deploy/helm/movienight/templates/observability/vmsingle.yaml +++ /dev/null @@ -1,25 +0,0 @@ -{{- if and .Values.observability.enabled .Values.observability.victoriaMetrics.enabled .Values.observability.victoriaMetrics.operator.enabled }} -apiVersion: operator.victoriametrics.com/v1beta1 -kind: VMSingle -metadata: - name: {{ include "movienight.victoriaMetricsName" . }} - labels: - {{- include "movienight.componentLabels" (dict "root" . "component" "victoriametrics") | nindent 4 }} -spec: - retentionPeriod: {{ .Values.observability.victoriaMetrics.retentionPeriod }} - {{- if .Values.observability.victoriaMetrics.persistence.enabled }} - storage: - accessModes: - - ReadWriteOnce - resources: - requests: - storage: {{ .Values.observability.victoriaMetrics.persistence.size }} - {{- with .Values.observability.victoriaMetrics.persistence.storageClass }} - storageClassName: {{ . | quote }} - {{- end }} - {{- end }} - {{- with .Values.observability.victoriaMetrics.resources }} - resources: - {{- toYaml . | nindent 4 }} - {{- end }} -{{- end }} diff --git a/deploy/helm/movienight/values.yaml b/deploy/helm/movienight/values.yaml index 3c0224e..3a54ee2 100644 --- a/deploy/helm/movienight/values.yaml +++ b/deploy/helm/movienight/values.yaml @@ -121,59 +121,14 @@ routes: pathPrefix: / observability: - enabled: false + enabled: true metrics: applicationTag: movienight httpServerRequestsHistogram: true - jsonLogging: true victoriaMetrics: - enabled: true + url: "http://vmsingle-victoria-metrics-single.observability.svc:8428" operator: - enabled: false - image: - repository: docker.io/victoriametrics/victoria-metrics - tag: v1.134.0 - pullPolicy: IfNotPresent - service: - type: ClusterIP - port: 8428 - retentionPeriod: 30d - extraArgs: [] - persistence: enabled: true - size: 10Gi - storageClass: "" - podAnnotations: {} - podLabels: {} - resources: {} - securityContext: {} - podSecurityContext: {} - nodeSelector: {} - tolerations: [] - affinity: {} - vmagent: - enabled: true - image: - repository: docker.io/victoriametrics/vmagent - tag: v1.135.0 - pullPolicy: IfNotPresent - service: - type: ClusterIP - port: 8429 - scrapeInterval: 5s - scrapeTimeout: 5s - remoteWriteUrl: "" - backendJobName: movienight-backend - extraArgs: [] - extraScrapeConfigs: [] - podAnnotations: {} - podLabels: {} - resources: {} - securityContext: {} - podSecurityContext: {} - nodeSelector: {} - tolerations: [] - affinity: {} grafana: datasource: enabled: true diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml index b07c103..21a05b1 100644 --- a/src/main/resources/logback-spring.xml +++ b/src/main/resources/logback-spring.xml @@ -5,22 +5,12 @@ - - - - - + - - - - - - logs/app.json -- 2.54.0