mirror of
https://github.com/OneUptime/oneuptime.git
synced 2026-01-11 19:56:44 +00:00
- 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.
294 lines
No EOL
11 KiB
JSON
294 lines
No EOL
11 KiB
JSON
{
|
|
"resourceMetrics":[
|
|
{
|
|
"resource":{
|
|
"attributes":[
|
|
{
|
|
"key":"host.name",
|
|
"value":{
|
|
"stringValue":"c16e92aabd73"
|
|
}
|
|
},
|
|
{
|
|
"key":"process.command_args",
|
|
"value":{
|
|
"arrayValue":{
|
|
"values":[
|
|
{
|
|
"stringValue":"/app/main"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"key":"process.executable.name",
|
|
"value":{
|
|
"stringValue":"main"
|
|
}
|
|
},
|
|
{
|
|
"key":"process.executable.path",
|
|
"value":{
|
|
"stringValue":"/app/main"
|
|
}
|
|
},
|
|
{
|
|
"key":"process.owner",
|
|
"value":{
|
|
"stringValue":"root"
|
|
}
|
|
},
|
|
{
|
|
"key":"process.pid",
|
|
"value":{
|
|
"intValue":"1"
|
|
}
|
|
},
|
|
{
|
|
"key":"process.runtime.description",
|
|
"value":{
|
|
"stringValue":"go version go1.21.2 linux/arm64"
|
|
}
|
|
},
|
|
{
|
|
"key":"process.runtime.name",
|
|
"value":{
|
|
"stringValue":"go"
|
|
}
|
|
},
|
|
{
|
|
"key":"process.runtime.version",
|
|
"value":{
|
|
"stringValue":"go1.21.2"
|
|
}
|
|
},
|
|
{
|
|
"key":"service.name",
|
|
"value":{
|
|
"stringValue":"demo-client"
|
|
}
|
|
},
|
|
{
|
|
"key":"telemetry.sdk.language",
|
|
"value":{
|
|
"stringValue":"go"
|
|
}
|
|
},
|
|
{
|
|
"key":"telemetry.sdk.name",
|
|
"value":{
|
|
"stringValue":"opentelemetry"
|
|
}
|
|
},
|
|
{
|
|
"key":"telemetry.sdk.version",
|
|
"value":{
|
|
"stringValue":"1.19.0"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"scopeMetrics":[
|
|
{
|
|
"scope":{
|
|
"name":"demo-client-meter"
|
|
},
|
|
"metrics":[
|
|
{
|
|
"name":"demo_client/request_latency",
|
|
"description":"The latency of requests processed",
|
|
"histogram":{
|
|
"dataPoints":[
|
|
{
|
|
"startTimeUnixNano":"1698055858300756753",
|
|
"timeUnixNano":"1698073168340861251",
|
|
"count":"12262",
|
|
"sum":5009057.084501003,
|
|
"bucketCounts":[
|
|
"0",
|
|
"268",
|
|
"700",
|
|
"1805",
|
|
"852",
|
|
"770",
|
|
"645",
|
|
"1041",
|
|
"1731",
|
|
"1761",
|
|
"1451",
|
|
"1238",
|
|
"0",
|
|
"0",
|
|
"0",
|
|
"0"
|
|
],
|
|
"explicitBounds":[
|
|
0,
|
|
5,
|
|
10,
|
|
25,
|
|
50,
|
|
75,
|
|
100,
|
|
250,
|
|
500,
|
|
750,
|
|
1000,
|
|
2500,
|
|
5000,
|
|
7500,
|
|
10000
|
|
],
|
|
"attributes":[
|
|
{
|
|
"key":"client",
|
|
"value":{
|
|
"stringValue":"cli"
|
|
}
|
|
},
|
|
{
|
|
"key":"method",
|
|
"value":{
|
|
"stringValue":"repl"
|
|
}
|
|
}
|
|
],
|
|
"min":0.827,
|
|
"max":2003.162543
|
|
}
|
|
],
|
|
"aggregationTemporality":"AGGREGATION_TEMPORALITY_CUMULATIVE"
|
|
}
|
|
},
|
|
{
|
|
"name":"demo_client/request_counts",
|
|
"description":"The number of requests processed",
|
|
"sum":{
|
|
"dataPoints":[
|
|
{
|
|
"startTimeUnixNano":"1698055858300764253",
|
|
"timeUnixNano":"1698073168340863543",
|
|
"asInt":"12262",
|
|
"attributes":[
|
|
{
|
|
"key":"client",
|
|
"value":{
|
|
"stringValue":"cli"
|
|
}
|
|
},
|
|
{
|
|
"key":"method",
|
|
"value":{
|
|
"stringValue":"repl"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"aggregationTemporality":"AGGREGATION_TEMPORALITY_CUMULATIVE",
|
|
"isMonotonic":true
|
|
}
|
|
},
|
|
{
|
|
"name":"demo_client/line_lengths",
|
|
"description":"The lengths of the various lines in",
|
|
"histogram":{
|
|
"dataPoints":[
|
|
{
|
|
"startTimeUnixNano":"1698055858300770170",
|
|
"timeUnixNano":"1698073168340864918",
|
|
"count":"36845",
|
|
"sum":18342968,
|
|
"bucketCounts":[
|
|
"27",
|
|
"174",
|
|
"185",
|
|
"586",
|
|
"928",
|
|
"967",
|
|
"904",
|
|
"5531",
|
|
"9221",
|
|
"9200",
|
|
"9122",
|
|
"0",
|
|
"0",
|
|
"0",
|
|
"0",
|
|
"0"
|
|
],
|
|
"explicitBounds":[
|
|
0,
|
|
5,
|
|
10,
|
|
25,
|
|
50,
|
|
75,
|
|
100,
|
|
250,
|
|
500,
|
|
750,
|
|
1000,
|
|
2500,
|
|
5000,
|
|
7500,
|
|
10000
|
|
],
|
|
"attributes":[
|
|
{
|
|
"key":"client",
|
|
"value":{
|
|
"stringValue":"cli"
|
|
}
|
|
},
|
|
{
|
|
"key":"method",
|
|
"value":{
|
|
"stringValue":"repl"
|
|
}
|
|
}
|
|
],
|
|
"min":0,
|
|
"max":998
|
|
}
|
|
],
|
|
"aggregationTemporality":"AGGREGATION_TEMPORALITY_CUMULATIVE"
|
|
}
|
|
},
|
|
{
|
|
"name":"demo_client/line_counts",
|
|
"description":"The counts of the lines in",
|
|
"sum":{
|
|
"dataPoints":[
|
|
{
|
|
"startTimeUnixNano":"1698055858300772836",
|
|
"timeUnixNano":"1698073168340865418",
|
|
"asInt":"36845",
|
|
"attributes":[
|
|
{
|
|
"key":"client",
|
|
"value":{
|
|
"stringValue":"cli"
|
|
}
|
|
},
|
|
{
|
|
"key":"method",
|
|
"value":{
|
|
"stringValue":"repl"
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"aggregationTemporality":"AGGREGATION_TEMPORALITY_CUMULATIVE",
|
|
"isMonotonic":true
|
|
}
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"schemaUrl":"https://opentelemetry.io/schemas/1.21.0"
|
|
}
|
|
]
|
|
} |