Skip to content

Self-telemetry: every component ingests to its own HoldFast instance #64

@BrewingCoder

Description

@BrewingCoder

Summary

HoldFast should eat its own dogfood. Every component in a HoldFast deployment — backend, frontend, and infrastructure — should automatically send telemetry to the HoldFast instance it's running alongside. No manual configuration required.

What's already done (this issue tracks the remainder)

  • SystemBootstrapService — creates the HoldFast workspace + project on every startup (idempotent, always runs)
  • .NET backend OTeL SDK wired — traces + metrics via OTLP to OTEL_EXPORTER_OTLP_ENDPOINT (defaults to http://localhost:8082)
  • Docker Compose: OTEL_EXPORTER_OTLP_ENDPOINT=http://backend:8082 set for backend container
  • Login response shape fixed ({token, user: {uid, email}})

Remaining work

Frontend browser SDK

Backend log export

  • Add OpenTelemetry.Exporter.OpenTelemetryProtocol log exporter alongside traces/metrics
  • Wire ILogger → OTeL → /otel/v1/logs

Infrastructure exporters (Docker Compose)

  • PostgreSQL: add postgres-exporter sidecar → Prometheus → OTeL collector → HoldFast
  • ClickHouse: add clickhouse-exporter → HoldFast
  • Kafka: add JMX exporter or kafka-exporter → HoldFast
  • Redis: add redis-exporter → HoldFast

OTeL Collector (optional)

  • Add otel-collector container as a central aggregation point for infra exporters
  • Routes all infra metrics to the HoldFast public endpoint

Helm / k8s

Design principle

When someone installs HoldFast on-prem, they should open the dashboard after first boot and already see their own platform's health data. Zero additional configuration.

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions