feature: Implement Event stream for Application/Instance/Service #1472 (#1487) * Feat: Add event timeline for application/instance/service with K8s event ingestion ([#1472](https://github.com/apache/dubbo-admin/issues/1472)) - Add K8sEvent resource type (proto + Go spec) and store indexes - Add K8sEventListerWatcher to watch K8s /api/v1/events via client-go - Register K8sEventListerWatcher in Kubernetes EngineFactory - Add /application/event, /instance/event, /service/event console API endpoints - Add EventTimeline shared Vue component with normal/warning node styles - Wire up event tabs for application, instance, and service detail pages - Un-hide event tab routes in frontend router - Add mock event handlers for development - Add PlatformEvent resource type (platformevent_types.go) with store indexes - Add shared platform_event_recorder utility for event recording - Record ZK config change events (tag-route, condition-route, dynamic-config) - Record ZK metadata events (provider/consumer metadata added/updated) - Record Nacos instance registration/deregistration events - Record Nacos consumer metadata change events - Merge K8s events and Platform events into unified timeline in event query service - Downgrade "no subscriber" log level from INFO to DEBUG to reduce log noise * Fix: Address review feedback for K8s event timeline — zero timestamps, watch spam, silent drops, delete-before-add - K8sEventListerWatcher: check IsZero() before formatting FirstTimestamp/LastTimestamp to avoid emitting synthetic "0001-01-01 00:00:00" values that break timeline ordering. - EventTimeline.vue: remove unconditional watch() that triggered cascading loadMore calls; rely solely on IntersectionObserver for scroll-based pagination. - RecordRegistryEvent: log a warning when dropping events due to empty Mesh or Message instead of silently discarding them. - K8sEventSubscriber.writeEvent: delete the informer-written (original-key) entry only after a successful Add of the timestamp-prefixed entry, preventing permanent event loss when Add fails. * Refactor: Rename K8sEvent to LifecycleEvent for unified event model K8sEvent was originally named for K8s-sourced events only, but now also carries registry-side events (ZK/Nacos) via the EventSource discriminator. Rename to LifecycleEvent to accurately reflect its role as a unified lifecycle event type covering both K8s and registry origins. - Proto: K8sEvent → LifecycleEvent - Resource: K8sEventResource → LifecycleEventResource - Kind: K8sEventKind → LifecycleEventKind - Subscriber: K8sEventSubscriber → LifecycleEventSubscriber - Index constants: ByK8sEvent* → ByLifecycleEvent* - Files: k8s_event.* → lifecycle_event.* - Retained: K8sEventListerWatcher (K8s-specific component)
Dubbo Admin is the console designed for better visualization of Dubbo applications.
The main code repositories of Dubbo Admin include:
Please refer to official website.
Please refer to RoadMap.
Refer to CONTRIBUTING.md
Apache License 2.0, see LICENSE.