Skip to content

Commit 5d9af66

Browse files
feat(analytics): rebrand to analytics engine and establish resource-to-value framework (#288)
1 parent 4d48c93 commit 5d9af66

File tree

27 files changed

+763
-544
lines changed

27 files changed

+763
-544
lines changed

Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ help:
3737
@echo " make k3s-status - Show K3s namespace status"
3838
@echo " make k3s-df - Check cluster image disk usage"
3939
@echo " make k3s-prune - Cleanup unused images and ghost pods"
40-
@echo " make build-collectors - Build and sideload collectors image"
40+
@echo " make build-analytics - Build and sideload analytics image"
4141
@echo " make build-postgres - Build and sideload custom postgres image"
42-
@echo " make k3s-collectors-up - Deploy/Restart Collectors"
42+
@echo " make k3s-analytics-up - Deploy/Restart Analytics"
4343
@echo " make k3s-logs-<pod> - Tail logs for a specific pod (e.g., make k3s-logs-loki-0)"
4444
@echo " make k3s-backup-<name> - Backup a resource (e.g., make k3s-backup-postgres)"

cmd/analytics/main.go

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package main
2+
3+
import (
4+
"context"
5+
"fmt"
6+
"os"
7+
"os/signal"
8+
"syscall"
9+
10+
"observability-hub/internal/analytics"
11+
"observability-hub/internal/db/postgres"
12+
"observability-hub/internal/env"
13+
"observability-hub/internal/secrets"
14+
"observability-hub/internal/telemetry"
15+
)
16+
17+
func main() {
18+
env.Load()
19+
20+
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt, syscall.SIGTERM)
21+
defer stop()
22+
23+
thanosURL := os.Getenv("THANOS_URL")
24+
if thanosURL == "" {
25+
telemetry.Error("missing_thanos_url")
26+
os.Exit(1)
27+
}
28+
29+
// 1. Initialize Telemetry
30+
shutdown, err := telemetry.Init(ctx, analytics.ServiceName)
31+
if err != nil {
32+
fmt.Printf("Warning: OTel init failed: %v\n", err)
33+
}
34+
defer shutdown()
35+
36+
// 2. Initialize Secrets & DB
37+
secretStore, err := secrets.NewBaoProvider()
38+
if err != nil {
39+
telemetry.Error("secret_provider_init_failed", "error", err)
40+
os.Exit(1)
41+
}
42+
43+
wrapper, err := postgres.ConnectPostgres("postgres", secretStore)
44+
if err != nil {
45+
telemetry.Error("db_connection_failed", "error", err)
46+
os.Exit(1)
47+
}
48+
defer wrapper.DB.Close()
49+
50+
store := analytics.NewMetricsStore(wrapper)
51+
if err := store.EnsureSchema(ctx); err != nil {
52+
telemetry.Error("schema_init_failed", "error", err)
53+
os.Exit(1)
54+
}
55+
56+
thanosClient := analytics.NewThanosClient(thanosURL)
57+
svc := analytics.NewService(
58+
thanosClient,
59+
store,
60+
analytics.NewThanosResourceProvider(thanosClient),
61+
)
62+
63+
if err := svc.Start(ctx); err != nil {
64+
telemetry.Error("service_failed", "error", err)
65+
os.Exit(1)
66+
}
67+
}

0 commit comments

Comments
 (0)