From 68b2d797008c06b65f71f13ce46fd3e1ad07ea64 Mon Sep 17 00:00:00 2001 From: yusing Date: Fri, 13 Dec 2024 12:44:20 +0800 Subject: [PATCH] fix docker healthcheck formatting --- internal/watcher/health/monitor/docker.go | 14 +++----------- internal/watcher/health/monitor/json.go | 6 +++++- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/internal/watcher/health/monitor/docker.go b/internal/watcher/health/monitor/docker.go index 3d758f9..6a5e79e 100644 --- a/internal/watcher/health/monitor/docker.go +++ b/internal/watcher/health/monitor/docker.go @@ -1,8 +1,6 @@ package monitor import ( - "bytes" - "github.com/yusing/go-proxy/internal/docker" "github.com/yusing/go-proxy/internal/net/types" @@ -36,16 +34,10 @@ func (mon *DockerHealthMonitor) CheckHealth() (result *health.HealthCheckResult, } result = new(health.HealthCheckResult) result.Healthy = cont.State.Health.Status == dockerTypes.Healthy - detail := new(bytes.Buffer) - for _, status := range cont.State.Health.Log { - detail.WriteString(status.Output) - detail.WriteString("\n") - } - result.Detail = detail.String() if len(cont.State.Health.Log) > 0 { - last := cont.State.Health.Log[len(cont.State.Health.Log)-1].End - first := cont.State.Health.Log[0].Start - result.Latency = last.Sub(first) + lastLog := cont.State.Health.Log[len(cont.State.Health.Log)-1] + result.Detail = lastLog.Output + result.Latency = lastLog.End.Sub(lastLog.Start) } return } diff --git a/internal/watcher/health/monitor/json.go b/internal/watcher/health/monitor/json.go index 2bcb21e..1bbe03a 100644 --- a/internal/watcher/health/monitor/json.go +++ b/internal/watcher/health/monitor/json.go @@ -28,6 +28,10 @@ func (jsonRepr *JSONRepresentation) MarshalJSON() ([]byte, error) { if url == "http://:0" { url = "" } + lastSeen := "never" + if !jsonRepr.LastSeen.IsZero() { + lastSeen = strutils.FormatTime(jsonRepr.LastSeen) + } return json.Marshal(map[string]any{ "name": jsonRepr.Name, "config": jsonRepr.Config, @@ -39,7 +43,7 @@ func (jsonRepr *JSONRepresentation) MarshalJSON() ([]byte, error) { "latency": jsonRepr.Latency.Seconds(), "latencyStr": strconv.Itoa(int(jsonRepr.Latency.Milliseconds())) + " ms", "lastSeen": jsonRepr.LastSeen.Unix(), - "lastSeenStr": strutils.FormatTime(jsonRepr.LastSeen), + "lastSeenStr": lastSeen, "detail": jsonRepr.Detail, "url": url, "extra": jsonRepr.Extra,