Commit Graph

36 Commits

Author SHA1 Message Date
Nawaz Dhandala
f49b1995df feat(telemetry): add new Telemetry service (OTel, Syslog, Fluent, Metrics, Traces) and unified ingestion pipeline
- 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.
2025-11-07 21:36:47 +00:00
Simon Larsen
1ac6e71f7e chore(config,docker,ci,ui): rename IS_ENTERPRISE to IS_ENTERPRISE_EDITION across env, Dockerfiles, compose and workflows 2025-11-03 11:25:12 +00:00
Nawaz Dhandala
1c1a48b78f chore(ci): build/publish enterprise image variants and add IS_ENTERPRISE arg to Dockerfiles 2025-10-31 14:49:07 +00:00
Nico Aymet (nikuzz)
fed1478bcb Update Dockerfile.tpl
When otel-collector runs with runAsNonRoot: true and a specific runAsUser UID, gomplate can't write to /etc. Change the output path to /tmp to avoid permission issues
2025-05-21 18:15:22 +01:00
Simon Larsen
367480fff1 feat: update FluentBit and OTelCollector configurations to include service name in headers and adjust logging level 2025-04-04 15:24:40 +01:00
Simon Larsen
032c03a877 docs: update health check extension comment to indicate deprecation and suggest upgrade to health_check_v2 2025-01-29 15:42:19 +00:00
Simon Larsen
b959e84032 feat: add health check extension to OTel collector configuration 2025-01-29 15:38:57 +00:00
Simon Larsen
30edc194f4 feat: add batch processor configuration for OTLP exporter in collector config template 2025-01-29 14:07:49 +00:00
Simon Larsen
1045a7399f fix: change OTLP exporter protocol from http/json to http/protobuf in config template 2025-01-28 19:44:51 +00:00
Simon Larsen
0f3ef0027b fix: update OTLP exporter protocol from http/protobuf to http/json in config template 2025-01-28 19:19:24 +00:00
Simon Larsen
eb9e20dad5 fix: update OpenTelemetry configuration template to use index for environment variables 2025-01-23 21:31:58 +00:00
Simon Larsen
5494a2244e feat: update Dockerfile.tpl to use new OpenTelemetry Collector version and improve gomplate installation 2025-01-22 12:44:22 +00:00
Simon Larsen
23be5b1736 fix: downgrade collector version to 0.104.0 and enhance config output in Dockerfile.tpl 2025-01-22 12:12:15 +00:00
Simon Larsen
9f3a9bc915 fix: update download command in Dockerfile.tpl to use uname for architecture detection 2025-01-22 11:34:00 +00:00
Simon Larsen
84d322f476 fix: correct echo command syntax in OTelCollector Dockerfile.tpl 2025-01-22 11:15:23 +00:00
Simon Larsen
f94fbcc2ae feat: improve architecture detection and installation process in Dockerfile.tpl 2025-01-22 11:11:14 +00:00
Simon Larsen
0e85162b50 fix: update architecture detection syntax in Dockerfile.tpl for compatibility 2025-01-21 15:59:59 +00:00
Simon Larsen
a5927f3681 feat: refactor Dockerfile.tpl to streamline gomplate installation and architecture detection 2025-01-21 15:58:20 +00:00
Simon Larsen
0d37587199 feat: enhance OpenTelemetry Collector configuration with sending queue parameters 2025-01-21 15:20:50 +00:00
Simon Larsen
4674578c90 feat: update OTel Collector Dockerfile and configuration for gomplate integration 2025-01-21 15:10:44 +00:00
Simon Larsen
79ff8b1f82 Enable debug logging in telemetry configuration for improved diagnostics 2024-12-09 17:59:58 +00:00
Simon Larsen
3a1f5c7120 Refactor OpenTelemetry Ingest Dockerfile and configuration; update environment variables and docker-compose for new service integration 2024-11-21 17:08:35 +00:00
Simon Larsen
3bf74edae4 feat: Update OneUptime chart to use probes instead of probe for probe configuration 2024-08-01 19:37:46 -06:00
Simon Larsen
6911cf59f4 pin otel collector version 2024-07-10 11:56:26 +01:00
Simon Larsen
5172d7f349 chore: Add CORS headers to Telemetry and OTelCollector
This commit adds CORS headers to the Telemetry and OTelCollector components to allow cross-origin resource sharing. This enables the client to make requests to these components from different origins. The headers include "Access-Control-Allow-Credentials", "Access-Control-Allow-Origin", "Access-Control-Allow-Methods", and "Access-Control-Allow-Headers".
2024-07-10 11:48:22 +01:00
Simon Larsen
308dba7f24 Add CORS configuration to OTelCollector HTTP receiver 2024-04-26 19:12:38 +01:00
Simon Larsen
aeaf9f55e4 Add OpenTelemetry HTTP and Express instrumentations 2024-02-20 13:14:27 +00:00
Simon Larsen
2c8e044057 Update API endpoints to use "/otlp" instead of "/otel" 2023-12-30 22:55:14 +00:00
Simon Larsen
a27c94395e Refactor otel-collector environment variable in Helm chart and OTelCollector config
Update environment variables in docker-compose.base.yml
2023-12-30 21:51:44 +00:00
Simon Larsen
502f298a3a add authentication 2023-11-12 15:12:49 +00:00
Simon Larsen
d8d5556f1a add header setter 2023-11-12 14:24:27 +00:00
Simon Larsen
625c96b91a fix otel collector 2023-11-09 21:37:23 +00:00
Simon Larsen
32960b90f8 get gzip body 2023-10-10 13:49:48 +01:00
Simon Larsen
f1b4214379 add proto files 2023-10-10 11:16:22 +01:00
Simon Larsen
591c89a320 add otel collector to nginx 2023-10-09 19:18:46 +01:00
Simon Larsen
45bdadde87 add otel collector 2023-10-09 18:50:37 +01:00