From b1c058ba7eeb535d62fc9a2c1dddcc853894e09b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Sch=C3=BCnemann?= Date: Tue, 24 Mar 2026 11:29:26 +0100 Subject: [PATCH 1/5] feat: add victoria logs --- component-constructor.yaml | 16 ++ component-settings.yaml | 3 + .../kustomization.yaml | 1 + .../log-collector.yaml | 92 +++++++++ .../victoria-logs/client-certificates.yaml | 35 ++++ .../victoria-logs/gateway-certificate.yaml | 11 ++ .../victoria-logs/gateway-issuer.yaml | 6 + kustomizations/victoria-logs/gateway.yaml | 35 ++++ kustomizations/victoria-logs/httproute.yaml | 17 ++ .../victoria-logs/kustomization.yaml | 9 + .../victoria-logs/victoria-logs.yaml | 59 ++++++ .../observability-stack.yaml | 24 ++- .../otel-collector.yaml | 8 + resource-graph-definitions/victoria-logs.yaml | 181 ++++++++++++++++++ test/e2e/obs_stack_test.go | 11 ++ .../observability-stack.yaml | 4 + test/e2e/victoria-logs.go | 48 +++++ 17 files changed, 559 insertions(+), 1 deletion(-) create mode 100644 kustomizations/opentelemetry-collector/log-collector.yaml create mode 100644 kustomizations/victoria-logs/client-certificates.yaml create mode 100644 kustomizations/victoria-logs/gateway-certificate.yaml create mode 100644 kustomizations/victoria-logs/gateway-issuer.yaml create mode 100644 kustomizations/victoria-logs/gateway.yaml create mode 100644 kustomizations/victoria-logs/httproute.yaml create mode 100644 kustomizations/victoria-logs/kustomization.yaml create mode 100644 kustomizations/victoria-logs/victoria-logs.yaml create mode 100644 resource-graph-definitions/victoria-logs.yaml create mode 100644 test/e2e/victoria-logs.go diff --git a/component-constructor.yaml b/component-constructor.yaml index cf1c9e5..d92310f 100644 --- a/component-constructor.yaml +++ b/component-constructor.yaml @@ -164,3 +164,19 @@ components: type: ociArtifact imageReference: "${KUSTOMIZATIONS_LOCATION_PREFIX}/metrics:${OBSERVABILITY_STACK_VERSION}" + # victoria logs + - name: victoria-logs-kustomization + version: ${OBSERVABILITY_STACK_VERSION} + type: kustomization + access: + type: ociArtifact + imageReference: "${KUSTOMIZATIONS_LOCATION_PREFIX}/victoria-logs:${OBSERVABILITY_STACK_VERSION}" + + - name: victoria-logs-image + version: ${VICTORIA_LOGS_IMAGE_VERSION} + type: ociImage + input: + type: ociImage + path: "docker.io/victoriametrics/victoria-logs:${VICTORIA_LOGS_IMAGE_VERSION}" + repository: images/victoria-logs + diff --git a/component-settings.yaml b/component-settings.yaml index 9a42ce6..0cdb69e 100644 --- a/component-settings.yaml +++ b/component-settings.yaml @@ -26,6 +26,9 @@ PROMETHEUS_IMAGE_VERSION: "v3.10.0" # prometheus alertmanager ALERTMANAGER_IMAGE_VERSION: "v0.31.1" +# victoria logs +VICTORIA_LOGS_IMAGE_VERSION: "v1.6.0-victorialogs" + # E2E Test dependencies # Not used for deployment diff --git a/kustomizations/opentelemetry-collector/kustomization.yaml b/kustomizations/opentelemetry-collector/kustomization.yaml index a1320d5..c09d510 100644 --- a/kustomizations/opentelemetry-collector/kustomization.yaml +++ b/kustomizations/opentelemetry-collector/kustomization.yaml @@ -2,4 +2,5 @@ apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - collector.yaml + - log-collector.yaml - servicemonitor.yaml diff --git a/kustomizations/opentelemetry-collector/log-collector.yaml b/kustomizations/opentelemetry-collector/log-collector.yaml new file mode 100644 index 0000000..bf90267 --- /dev/null +++ b/kustomizations/opentelemetry-collector/log-collector.yaml @@ -0,0 +1,92 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: open-telemetry-log-collector +--- +apiVersion: opentelemetry.io/v1beta1 +kind: OpenTelemetryCollector +metadata: + name: logs +spec: + mode: daemonset + serviceAccount: open-telemetry-log-collector + securityContext: + runAsUser: 0 + config: + receivers: + filelog: + include: + - /var/log/pods/*/*/*.log + start_at: beginning + include_file_path: true + include_file_name: false + operators: + # Route to the correct parser based on container runtime format + - type: router + id: get-format + routes: + - output: parser-docker + expr: 'body matches "^\\{"' + default: parser-containerd + + # Docker JSON format (e.g. Docker Desktop, older clusters) + - type: json_parser + id: parser-docker + output: extract-pod-metadata + timestamp: + parse_from: attributes.time + layout: '%Y-%m-%dT%H:%M:%S.%LZ' + + # Containerd / CRI-O space-delimited format (most modern clusters) + - type: regex_parser + id: parser-containerd + regex: '^(?P