- Implement CodeRepositoryService for database interactions.
- Enhance GitHub utility functions for app authentication and repository management.
- Introduce new permissions for Code Repository actions (create, delete, edit, read).
- Create Code Repository pages and routes in the dashboard.
- Add side menu and breadcrumbs for Code Repository navigation.
- Implement settings and delete functionality for Code Repositories.
- Update Helm chart to include GitHub App configuration options.
- Modify example environment configuration to include GitHub App credentials.
- Add Telemetry service entrypoint
- Telemetry/Index.ts: app bootstrap, routes mounting, infrastructure init and Telemetry SDK init.
- Unified queue + worker
- Telemetry/Jobs/TelemetryIngest/ProcessTelemetry.ts: single worker that dispatches queued jobs to specific processors (logs, traces, metrics, syslog, fluent logs).
- Telemetry/Services/Queue/TelemetryQueueService.ts: central queue API and job payload types.
- Per-type Queue wrappers (LogsQueueService, MetricsQueueService, TracesQueueService, FluentLogsQueueService, SyslogQueueService).
- OpenTelemetry ingestion middleware and proto support
- Telemetry/Middleware/OtelRequestMiddleware.ts: detect OTLP endpoint (logs/traces/metrics), decode protobuf bodies using protobufjs and set product type.
- Telemetry/ProtoFiles/OTel/v1/*.proto: include common.proto, logs.proto, metrics.proto, resource.proto, traces.proto for OTLP v1 messages.
- Ingest services
- Telemetry/Services/OtelLogsIngestService.ts: parse incoming OTLP logs, map attributes, convert timestamps, batch insert logs.
- Telemetry/Services/OtelTracesIngestService.ts: parse OTLP traces, build span rows, extract exceptions, batch insert spans and exceptions, save telemetry exception summary.
- Telemetry/Services/OtelMetricsIngestService.ts: parse OTLP metrics, normalize datapoints, batch insert metrics and index metric name -> service map.
- Telemetry/Services/SyslogIngestService.ts: syslog ingestion endpoints, parser integration, map syslog fields to attributes and logs.
- Telemetry/Services/FluentLogsIngestService.ts: ingest Fluentd style logs, normalize entries and insert into log backend.
- Telemetry/Services/OtelIngestBaseService.ts: helpers to resolve service name from attributes/headers.
- Syslog parser and utilities
- Telemetry/Utils/SyslogParser.ts: robust RFC5424 and RFC3164 parser, structured data extraction and sanitization.
- Telemetry/Tests/Utils/SyslogParser.test.ts: unit tests for parser behavior.
- Telemetry exception utilities
- Telemetry/Utils/Exception.ts: generate exception fingerprint and upsert telemetry exception status (saveOrUpdateTelemetryException).
- Queue & job integration
- New integration with Common/Server/Infrastructure/Queue and QueueWorker, job id generation and telemetry job types.
- Telemetry services add ingestion jobs instead of processing synchronously.
- Config, build and dev tooling
- Add Telemetry/package.json, package-lock.json, tsconfig.json, nodemon.json, jest config.
- New script configs and dependencies (protobufjs, ts-node, jest, nodemon, etc).
- Docker / environment updates
- docker-compose.base.yml, docker-compose.dev.yml, docker-compose.yml: rename service from open-telemetry-ingest -> telemetry and wire TELEMETRY_* envs.
- config.example.env: rename and consolidate environment variables (OPEN_TELEMETRY_* -> TELEMETRY_*, update hostnames and ports).
- Tests/Scripts/status-check.sh: update ready-check target to telemetry/status/ready.
- Other
- Telemetry/Services/Queue/*: export helpers and legacy-compatible job interface shims.
- Memory cleanup and batching safeguards across ingest services.
- Logging and capture spans added to key code paths.
BREAKING CHANGES / MIGRATION NOTES:
- Environment variables and docker service names changed:
- Replace OPEN_TELEMETRY_... vars with TELEMETRY_... (PORT, HOSTNAME, CONCURRENCY, DISABLE_TELEMETRY, etc).
- docker-compose entries moved from "open-telemetry-ingest" to "telemetry" and image name changed to oneuptime/telemetry.
- Update any deployment automation and monitoring checks referencing the old service name or endpoints.
- Consumers: OTLP endpoints and behavior remain supported, but ingestion is now queued and processed asynchronously.
Testing / Running:
- Install deps in Telemetry/ (npm install) after syncing Common workspace.
- Run dev: npx nodemon (nodemon.json) or build & start using provided scripts.
- Run tests with jest (Telemetry test suite includes SyslogParser unit tests).
Files added/modified (high level):
- Added many files under Telemetry/: Index, Jobs, Middleware, ProtoFiles, Services, Utils, Tests, package and config artifacts.
- Modified docker-compose.* and config.example.env and status check script to use new TELEMETRY service/vars.
- Move Fluent/Fluent Bit logs ingestion into open-telemetry-ingest:
- Add OpenTelemetryIngest/API/Fluent.ts (routes for /fluentd and queue endpoints)
- Add Queue service, job worker and processor:
- OpenTelemetryIngest/Services/Queue/FluentLogsQueueService.ts
- OpenTelemetryIngest/Jobs/TelemetryIngest/ProcessFluentLogs.ts
- Register Fluent API and job processing in OpenTelemetryIngest/Index.ts
- Introduce QueueName.FluentLogs and related queue usage
- Remove legacy FluentIngest service and configuration:
- Delete fluent-ingest docker-compose/dev/base entries and docker-compose.yml service
- Remove fluent-ingest related helm values, KEDA scaledobject, ingress host and schema entries
- Remove FLUENTD_HOST env/values and replace FLUENT_INGEST_HOSTNAME -> FLUENT_LOGS_HOSTNAME (pointing to open-telemetry-ingest)
- Update config.example.env keys (FLUENT_LOGS_CONCURRENCY, DISABLE_TELEMETRY_FOR_FLUENT_LOGS)
- Remove FluentIngestRoute and FLUENT_INGEST_URL/hostname usages from UI config/templates
- Remove VSCode launch debug config for Fluent Ingest
- Remove Fluent ingest E2E status check entry in Tests/Scripts/status-check.sh
- Update docs/architecture diagram and Helm templates to reflect "FluentLogs" / Fluent Bit flow
- Misc:
- Remove FLUENTD_HOST environment injection from docker-compose.base.yml
- Cleanup related values.schema.json and values.yaml entries
This consolidates log ingestion under the OpenTelemetry ingest service and removes the separate FluentIngest service and its configuration.
- Remove FluentIngest CI jobs and release/test deploy steps (build.yml, compile.yml, release.yml, test-release.yaml)
- Delete test.fluent-ingest workflow
- Remove Fluent-related env vars/hostnames from config.example.env, docker-compose.base.yml, HelmChart templates and EnvironmentConfig.ts
- Remove fluent-ingest service block from docker-compose.base.yml
- Bump Playwright and TypeORM versions in OpenTelemetryIngest package-lock.json
Replace separate commonServer/commonUi and oneuptimeSecret includes with a single
oneuptime.env.runtime include across deployments. Move oneuptimeSecret into the
common env where appropriate and remove SERVER_ADMIN_DASHBOARD_HOSTNAME.
Update all affected templates to use the new runtime include.
Nest the top-level provisionSSL into ssl.provision in values.yaml and values.schema.json,
and update _helpers.tpl to read the new path (using default false via dig) so PROVISION_SSL
env is derived from ssl.provision.
- add server-certs emptyDir volume and mount to nginx Deployment
- update default.conf.template to conditionally listen on 7850 and use /etc/nginx/certs/ServerCerts/${PRIMARY_DOMAIN}.crt/.key when PROVISION_SSL is set
- enhance run.sh to export PRIMARY_DOMAIN, temporarily adjust PROVISION_SSL for envsubst, and restore original PROVISION_SSL afterwards
- add ProvisionPrimaryDomain worker job to order/renew ACME certificates for the HOST
- register job import in Worker Routes
- add ProvisionSsl env flag in Common/Server/EnvironmentConfig
- expose PROVISION_SSL in Helm chart (values.yaml, values.schema.json, _helpers.tpl)
- Add Helm helpers oneuptime.image.tag and oneuptime.image to centralize image name/tag formatting
- If image.type is "enterprise-edition" and tag doesn't already contain "enterprise", prefix tag with "enterprise-"
- Replace inline image printf calls with include "oneuptime.image" across deployments, cronjob and tests
- Add image.type to values.schema.json and set default type to "community-edition" in values.yaml
- Update TelemetryUsageBilling description to include Exceptions.
- Add AverageExceptionRowSizeInBytes env/config (env example, docker-compose, Helm values & schema).
- Use ExceptionInstanceService in TelemetryUsageBillingService to include exception row counts when estimating bytes for Traces.
- Add helper to read average exception row size and adjust billing calculations.
- Parse NO_PROXY / no_proxy in Probe Config into a trimmed list
- Wire NO_PROXY into UI docs, Helm chart values, and probe Docker/compose examples
- Add NO_PROXY env var to Helm probe template when provided
- Pass target URL to ProxyConfig.getRequestProxyAgents / getHttpProxyAgent / getHttpsProxyAgent so proxy selection is per-request
- Update probe calls (Alive, Metrics, FetchList, FetchMonitorTest, Register, Monitor ingest/reporting, Api/Website/Ssl monitors) to use local URL variables and supply them to proxy helpers
- Minor refactors to avoid inline URL construction where reused
- add billing.telemetry.{averageSpanRowSizeInBytes, averageLogRowSizeInBytes, averageMetricRowSizeInBytes} to values.yaml with defaults
- add schema validation for these fields in values.schema.json (integer, minimum 1)
- expose AVERAGE_SPAN_ROW_SIZE_IN_BYTES, AVERAGE_LOG_ROW_SIZE_IN_BYTES, AVERAGE_METRIC_ROW_SIZE_IN_BYTES in templates/_helpers.tpl