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