Add OpenObserve telemetry storage node to the hosting-provider group #1116
No reviewers
fediversity/developers
Labels
No labels
0 points
0.5 points
1 point
13 points
2 points
21 points
3 points
34 points
5 points
55 points
8 points
ambition
application-offering
ambition
configure-applications
ambition
front-end
ambition/install-applications
ambition
security
ambition
switch-host
ambition
update-applications
ambition
user-management
api service
blocked
component: fediversity panel
component: nixops4
documentation
estimation high: >3d
estimation low: <2h
estimation mid: <8h
infinite points
productisation
project-management
question
role: application developer
role: application operator
role: hosting provider
role: maintainer
security
technical debt
testing
type unclear
type: bug
type: deliverable
type: key result
type: objective
type: task
type: user story
user experience
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
fediversity/fediversity!1116
Loading…
Reference in a new issue
No description provided.
Delete branch "kiara/fediversity:prometheus-otel"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
What
Adds a
monitoringnode to the hosting-provider group running OpenObserve as an all-signal telemetry store, and teaches the otel-collector (#1002) to additionally export traces, metrics, and logs to it.The collector previously fanned every signal only to the
debugexporter, so nothing was stored -- it landed in the journal and was lost. #1002 listed "storage back-end" as the open follow-up, and parent issue #184 requires tests covering collection and storage in a back-end.OpenObserve ingests metrics, logs, and traces over OTLP from a single binary with no ClickHouse/Postgres/ZooKeeper (embedded sqlite meta + local disk in single-node mode), so it fits a small ~20-machine hosting provider. The original ask named "a prometheus node", but Prometheus stores metrics only and would drop the traces/logs that #184 cares most about; the decision (made with the maintainer) was to store all three signals in one backend.
Changes
monitoring.nix(new) -- OpenObserve systemd unit underservices.fediversity-monitoring. Noservices.openobserveNixOS module exists, so the unit is hand-written. The root password is delivered viaLoadCredential+ anExecStartwrapper that exportsZO_ROOT_USER_PASSWORDfrom the credential file, keeping the secret out of the unit/store (same spirit as the S3/openbao secret handling). Outbound usage telemetry and the GeoIP database download are disabled.monitoring/default.nix(new) -- thin application declaration, modeled onotel-collector/default.nix; enables spiffe for consistency.otel-collector.nix-- new nullableopenobserveoption that, when set, adds anotlphttp/openobserveexporter to all three pipelines while keepingdebug. Default null keeps existing tests and standalone use unchanged.hosts-common.nix-- wires the collector'sopenobserve.endpointfrom the group'sappHosts.monitoring, mirroring the spireserverAddresspattern. The collector reads itsAuthorizationheader from a file the deployment overlay provisions; that credential bootstrap is left deployment-side like the openbao/incus bootstraps.groups/hosting-provider.nix(placeholder node),applications/hosting-provider/default.nix(imports),openbao/openbao.nix(consumerHosts),checks/default.nix(test-monitoring-storage).monitoring-test.nix(new,test-monitoring-storage) -- co-locates the collector and OpenObserve on one node, posts a synthetic OTLP trace and metric to the collector's4318, and asserts both are queryable back out of OpenObserve's search API. This proves the full receive -> process -> export -> store -> query path.Testing
Run on
fediversity-ci:test-monitoring-storage-- green (primary E2E)test-otel-collector-service,test-otel-wiring-- green (regression: the new collector option defaults to null)treefmt-- greennix-unit-resources-otelfails only on the pre-existing offline-FOD limitation (thesystemd-openbaosource cannot be fetched fromgit.lix.systemsin the sandbox);src/resources/otelis untouched by this change.Follow-ups (out of scope)
Disclaimer: I used a coding agent in the creation of this patch.
WIP: Add OpenObserve telemetry storage node to the hosting-provider groupto Add OpenObserve telemetry storage node to the hosting-provider group.pyfile