feat(monitor): add display name support for health monitor logging

Add a DisplayNameKey struct to pass display names from routes through the task
parent hierarchy to the health monitor. This allows the health monitor to use
more descriptive names for logging instead of internal task names.

BREAKING CHANGE: The monitor.DisplayNameKey struct is now part of the public API
This commit is contained in:
yusing
2026-02-13 22:12:19 +08:00
parent fa9239f5eb
commit 322bb70f02
5 changed files with 11 additions and 1 deletions

View File

@@ -21,6 +21,8 @@ import (
)
type (
DisplayNameKey struct{}
HealthCheckFunc func(url *url.URL) (result types.HealthCheckResult, err error)
monitor struct {
service string
@@ -85,9 +87,13 @@ func (mon *monitor) Start(parent task.Parent) error {
return ErrNegativeInterval
}
mon.service = parent.Name()
mon.task = parent.Subtask("health_monitor", true)
mon.service = parent.Name()
if displayName, ok := parent.GetValue(DisplayNameKey{}).(string); ok {
mon.service = displayName
}
go func() {
logger := log.With().Str("name", mon.service).Logger()

View File

@@ -80,6 +80,7 @@ func NewFileServer(base *Route) (*FileServer, error) {
// Start implements task.TaskStarter.
func (s *FileServer) Start(parent task.Parent) error {
s.task = parent.Subtask("fileserver."+s.Name(), false)
s.task.SetValue(monitor.DisplayNameKey{}, s.DisplayName())
pathPatterns := s.PathPatterns
switch {

View File

@@ -126,6 +126,7 @@ func (r *ReveseProxyRoute) ReverseProxy() *reverseproxy.ReverseProxy {
// Start implements task.TaskStarter.
func (r *ReveseProxyRoute) Start(parent task.Parent) error {
r.task = parent.Subtask("http."+r.Name(), false)
r.task.SetValue(monitor.DisplayNameKey{}, r.DisplayName())
switch {
case r.UseIdleWatcher():

View File

@@ -514,6 +514,7 @@ func (r *Route) start(parent task.Parent) error {
}
r.task = parent.Subtask("excluded."+r.Name(), false)
r.task.SetValue(monitor.DisplayNameKey{}, r.DisplayName())
ep.ExcludedRoutes().Add(r.impl)
r.task.OnCancel("remove_route_from_excluded", func() {
ep.ExcludedRoutes().Del(r.impl)

View File

@@ -47,6 +47,7 @@ func (r *StreamRoute) Start(parent task.Parent) error {
r.stream = stream
r.task = parent.Subtask("stream."+r.Name(), !r.ShouldExclude())
r.task.SetValue(monitor.DisplayNameKey{}, r.DisplayName())
switch {
case r.UseIdleWatcher():