Skip to content

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

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions