Repository navigation
monitoring: platform VictoriaLogs (vlinsert-generic) silently unavailable — logs dropped while HelmRelease is Ready #3181
Description
Activity
- addedkind/bugCategorizes issue or PR as related to a bugCategorizes issue or PR as related to a bugarea/monitoringIssues or PRs related to the monitoring stack (vlogs, vmstack, grafana, workloadmonitor)Issues or PRs related to the monitoring stack (vlogs, vmstack, grafana, workloadmonitor)
on Jul 2, 2026 Opened #3215 to address this.
The PR tackles the two failure modes from the report as independent, complementary fixes:
-
Silent
Readywhile the log store is missing — themonitoring-systemHelmRelease now uses apollerwaitStrategywith ahealthCheckExprsgate on theVLCluster'sstatus.updateStatus. During install/upgrade (including theVLogs → VLClustermigration that triggered this in the first place) the release waits for theVLClusterto reachoperationaland goes not-ready (up totimeout) if it never does — instead of reportingReadywith no log store. Mirrors the existing seaweedfs CNPG pattern. -
Dangling
vlinsert-genericExternalName — thecozy-monitoring → tenant-rootvlinsert/vminsertredirects incozystack-basicsare now created only when the root tenant actually hosts monitoring. The template reads the liveTenant/rootspec.monitoringvialookup(authoritative on a real cluster, so it can't drift from the tenant's real state) and falls back to a new platform valuemonitoring.rootEnabledwhenlookupis empty (dry-run / first render).
I also made an empty
logsStoragesa hard render error, so that degenerate config can't silently reproduce the same "Ready with no log store" hole.On the local vs centralized question: the PR commits to the centralized-in-
tenant-rootmodel (which the platform bundle already assumes viaglobal.target: tenant-root) and makes both failure modes loud rather than picking a new topology.Known limitation / follow-up: the readiness gate is evaluated during helm install/upgrade, not on a no-op periodic reconcile — so it covers the migration/upgrade root cause here, but not arbitrary post-install deletion of the
VLCluster(that would needdriftDetection). Also, the legacycozystack.monitoringPackageSource that installs directly intocozy-monitoringcan't carry the gate yet (vendored helm-controller API lacks the fields); it isn't referenced by any active bundle.-
- added 4 commits that reference this issue
on Jul 7, 2026 - added a commit that references this issue
on Jul 31, 2026 - addedtriage/needs-triageIndicates an issue needs triage by a maintainerIndicates an issue needs triage by a maintainer
on Aug 12, 2026 - added 2 commits that reference this issue
on Aug 18, 2026 6 remaining items
- added 4 commits that reference this issue
on Sep 2, 2026 - addedtriage/not-reproducibleIndicates an issue can not be reproduced as describedIndicates an issue can not be reproduced as describedand removedtriage/needs-triageIndicates an issue needs triage by a maintainerIndicates an issue needs triage by a maintainer
on Sep 23, 2026 Fixed by #3215: the
vlinsert-genericandvminsert-*services are gated on monitoring being enabled, and the release waits for the VLCluster.- added 4 commits that reference this issue
on Sep 23, 2026
Describe the bug
On a management cluster the platform monitoring stack (
system/monitoring, released asmonitoringincozy-monitoring) reportsReadyand its VMClusters (shortterm/longterm) run fine, but VictoriaLogs ingestion is completely broken and all logs are silently dropped.The observed cause is a
vlinsert-genericService incozy-monitoringthat is a danglingExternalNamepointing at a VictoriaLogs instance that does not exist:packages/system/cozystack-basics/templates/monitoring-external-services.yamlunconditionally creates threeExternalNameServices incozy-monitoring—vlinsert-generic,vminsert-shortterm,vminsert-longterm— all targeting*.tenant-root.svc.cluster.local.packages/core/platform/sources/monitoring.yamlinstallssystem/monitoringintocozy-monitoringwith nologsStoragesoverride, so the chart default (logsStorages: [{name: generic}]) applies and the release is expected to create a localVLCluster/generic. The VictoriaMetrics operator then owns an insert Service namedvlinsert-generic— the same name and namespace as the ExternalName above.vminsert-shortterm/vminsert-longtermClusterIP Services take over the ExternalName aliases.VLCluster/genericobject was absent (noVLCluster/VLogspresent in the cluster at all), so the operator never created the realvlinsert-genericService. Thecozystack-basicsExternalName therefore stays and points tovlinsert-generic.tenant-root.svc, which does not resolve because the root Tenant hasmonitoring: false(the CRD default) and hosts no VictoriaLogs.Net effect: fluent-bit ships to
vlinsert-generic.cozy-monitoring.svc:9481, the ExternalName CNAME dead-ends intenant-root, DNS returns no data, chunks fail and are dropped. ThemonitoringHelmRelease still reportsReady, so the failure is completely silent.Environment
main, v1.5.0)To Reproduce
monitoring: false.cozy-monitoring/monitoringisReadybutVLCluster/genericis not present (in the observed cluster the release had gone through theVLogs->VLClustermigration).kubectl -n cozy-monitoring get vlcluster-> none;kubectl -n cozy-monitoring get svc vlinsert-generic->ExternalName->vlinsert-generic.tenant-root.svc.Expected behaviour
Platform log ingestion must not fail silently. Either the local
VLCluster/genericis reliably present whenever themonitoringrelease isReady, or a missing log store surfaces as a not-ready/failing condition instead of logs being dropped. Avlinsert-genericExternalName pointing at a non-existenttenant-rootVictoriaLogs (defaultmonitoring: false) should not be a silent fallback.Actual behaviour
monitoringHelmRelease:Ready; VMClusters running.VLCluster/VLogsanywhere; no realvlinsert-genericService.vlinsert-genericincozy-monitoringis anExternalName->vlinsert-generic.tenant-root.svc(owned by thecozystack-basicsrelease);tenant-roothas no VictoriaLogs.Logs
Additional context
Two things combine into a silent failure:
cozystack-basicsunconditionally injects avlinsert-genericExternalName intocozy-monitoringthat shadows the platform monitoring's own log-insert Service and points attenant-root, which by default has no VictoriaLogs (monitoring: false).monitoringHelmRelease reportsReadyeven though itsVLCluster/genericis not present, so nothing surfaces the broken log pipeline.Question for maintainers: is platform VictoriaLogs intended to live locally in
cozy-monitoring, or to be centralized intenant-root(which would require the root Tenant to havemonitoring: true)? The unconditional ExternalName ->tenant-rootand the locallogsStorages: [generic]default appear to pull in opposite directions.Checklist