mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-04-06 00:32:12 +02:00
2.5 KiB
2.5 KiB
OpenTelemetry Profiles: Remaining Roadmap
All core phases (ingestion, storage, query API, frontend UI, alerting, docs) are implemented. This document tracks remaining future work items.
Performance Optimization
- Materialized Views: Pre-aggregate top functions per service per hour for faster queries
- Server-Side Sampling: Downsampling for high-volume services to control storage costs
- Query Caching: Cache aggregated flamegraph results to reduce ClickHouse load
Symbolization Pipeline
Symbolization is NOT yet standardized in the OTel Profiles spec. The eBPF agent handles on-target symbolization for Go, and many runtimes provide symbol info at collection time. A dedicated symbolization pipeline (symbol uploads, deferred re-symbolization, object storage) can be added once the spec stabilizes.
Conformance Validation
Integrate OTel profcheck tool into CI once core profiling features stabilize.
Key Risks & Mitigations
| Risk | Impact | Mitigation |
|---|---|---|
| OTLP Profiles is still Alpha — proto schema may change | Breaking changes to ingestion | Pin to specific OTLP proto version (v1.10.0+), add version detection |
v1development package path will change to v1 at GA |
Proto import path migration | Abstract proto version behind internal types; plan migration script for when GA lands |
| High storage volume from continuous profiling | ClickHouse disk/cost growth | Server-side sampling, aggressive TTL defaults (15 days), ZSTD(3) compression |
| Flamegraph rendering performance with large profiles | Slow UI | Limit to top 10K stacktraces, lazy-load deep frames, pre-aggregate via materialized views |
| Symbolization is not standardized | Unsymbolized frames in flamegraphs | Store build IDs for deferred symbolization; accept eBPF agent's on-target symbolization as baseline |
Semantic conventions are minimal (only profile.frame.type) |
Schema may need changes as conventions mature | Keep attribute storage flexible (JSON columns); avoid hardcoding specific attribute names |