mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 14:06:36 +08:00
63cd906cfc
- Merge all files inside openflare-server to the repository root directory. - Relocate agent, relay, and flared subprojects from internal/ to internal/apps/. - Combine docker-compose files and update build context paths to root. - Update GitHub workflows and Dockerfiles to refer to new directories and package names. - Rewrite Go package imports across all files. - Resolve database renew test race condition and clean up docs.
51 lines
1.6 KiB
Go
51 lines
1.6 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package flared
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/Rain-kl/Wavelet/internal/apps/openflare/agent"
|
|
"github.com/Rain-kl/Wavelet/internal/db"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
const flaredRuntimeUnhealthyEventType = "flared_runtime_unhealthy"
|
|
|
|
func persistFlaredObservability(ctx context.Context, nodeID string, payload HeartbeatPayload, reportedAt time.Time) {
|
|
connected := make([]string, 0, len(payload.ConnectedRelays))
|
|
for _, relay := range payload.ConnectedRelays {
|
|
connected = append(connected, fmt.Sprintf("%s:%s", relay.RelayNodeID, relay.Status))
|
|
}
|
|
managedTypes := map[string]struct{}{
|
|
flaredRuntimeUnhealthyEventType: {},
|
|
}
|
|
var events []agent.NodeHealthEvent
|
|
if payload.TunnelStatus == "unhealthy" {
|
|
events = append(events, agent.NodeHealthEvent{
|
|
EventType: flaredRuntimeUnhealthyEventType,
|
|
Severity: "critical",
|
|
Message: "openflared runtime is not healthy",
|
|
TriggeredAtUnix: reportedAt.Unix(),
|
|
Metadata: map[string]string{
|
|
"tunnel_status": payload.TunnelStatus,
|
|
"client_version": payload.ClientVersion,
|
|
"current_version": payload.CurrentVersion,
|
|
"current_checksum": payload.CurrentChecksum,
|
|
"connected_relays": strings.Join(connected, ","),
|
|
},
|
|
})
|
|
}
|
|
conn := db.DB(ctx)
|
|
if conn == nil {
|
|
return
|
|
}
|
|
if err := agent.ReconcileScopedNodeHealthEvents(conn, nodeID, events, reportedAt, managedTypes); err != nil {
|
|
zap.L().Error("persist flared health events failed", zap.String("node_id", nodeID), zap.Error(err))
|
|
}
|
|
}
|