zqr10159 opened a new pull request, #4195: URL: https://github.com/apache/hertzbeat/pull/4195
## Summary This change adds an entity-free three-signal observability transition to the existing Angular frontend on top of `apache/master`. - Accept OTLP Metrics, Logs, and Traces over HTTP/JSON, HTTP/Protobuf, and gRPC. - Store and query all three signals through GreptimeDB. - Add Angular workbenches for Metrics, Logs, and Traces with shared time controls and cross-signal context handoff. - Replace the separate log stream navigation entry with an in-page Query/Live switch while keeping legacy log routes compatible. - Add a simple OTLP onboarding form that generates Collector, Java Agent, environment, and curl configurations and verifies each signal independently. ## Scope and compatibility - The transition deliberately does not introduce Entity, Workspace, Topology, or the Next.js frontend. - Existing Angular monitoring pages remain unchanged; OTLP Metrics use the new `/metrics/manage` workbench. - Existing `/log/*` routes remain compatible. - GreptimeDB is a release prerequisite for the three-signal path. - Cross-signal navigation preserves time range, service/resource attributes, trace/span identifiers, environment, and operation context. ## Backend and reliability - Adds entity-free Metrics and Trace query contracts plus OTLP resource-aware Log filters. - Adds Greptime trace schema and log pipeline initialization with explicit startup failure when storage is unavailable. - Reuses managed HertzBeat access tokens for HTTP and gRPC bearer authentication. - Separates Greptime query, write, and initialization clients with typed timeouts. - Adds bounded workloads and fast rejection with retryable `429`/`503` responses. - Cancels stale Angular queries through debounced `switchMap` flows. - Returns HTTP `400` for invalid PromQL and resource filter expressions. - Uses typed Trace span-event contracts and calculates trace duration across the complete span coverage. ## Angular experience - Adds one shared signal time rail with relative presets, absolute ranges, previous/next window movement, manual refresh, and optional auto-refresh. - Adds explicit Metrics / Logs / Traces navigation in each workbench. - Uses flat operator workbenches instead of nested statistics cards. - Metrics provides PromQL autocomplete, trend, series, and samples. - Logs provides typed severity filters, advanced resource expressions, trend, paginated results, details, and live mode. - Traces provides service, operation, environment, duration, and error filters plus a span waterfall, structured events, attributes, and log/metric handoffs. - Keeps all localized copy in the existing Angular i18n resources. ## Validation - 41 focused backend tests passed across common-core, warehouse, log, and manager. - 21 focused Angular interaction tests passed in ChromeHeadless. - `./mvnw -pl hertzbeat-startup -am -DskipTests package` passed across the 24-module reactor. - Angular production build passed. - Full Angular TypeScript lint and focused LESS style checks passed. - Locale JSON parsing, hardcoded-CJK scan, and `git diff --check` passed. - Real GreptimeDB smoke validation confirmed non-empty Metrics, Logs, and Traces; a correlated trace contained 6 spans, 11 events, 1 error, and 9 matching logs. - Authentication and invalid-query smoke checks returned HTTP `401` and `400` respectively. - Continuous local OTLP writes recovered automatically after backend restarts. ## Known risk The Angular production build retains the existing initial bundle budget warning: 3.12 MB versus the configured 2.00 MB warning threshold. The build succeeds, but bundle reduction remains follow-up work. AI assistance: used for draft implementation and test iteration. Human validation: the maintainer reviewed the production Angular pages throughout implementation; final Maven, Angular, ChromeHeadless, lint, i18n, CJK, diff, and real GreptimeDB/API checks passed. Risk notes: GreptimeDB is required for the new three-signal path; Entity, Workspace, Topology, alert integration, saved views, and Next.js are intentionally out of scope. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
