主分支代码

This commit is contained in:
robin
2026-02-07 20:30:31 +08:00
parent 3b042d1dad
commit bc223fd1aa
65 changed files with 1969 additions and 188 deletions

View File

@@ -3,6 +3,8 @@ package nodes
import (
"bytes"
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/TeaOSLab/EdgeNode/internal/accesslogs"
"github.com/TeaOSLab/EdgeNode/internal/remotelogs"
"github.com/TeaOSLab/EdgeNode/internal/rpc"
"github.com/TeaOSLab/EdgeNode/internal/utils"
@@ -92,6 +94,22 @@ Loop:
return nil
}
var writeTargets *serverconfigs.AccessLogWriteTargets
if sharedNodeConfig != nil && sharedNodeConfig.GlobalServerConfig != nil {
writeTargets = sharedNodeConfig.GlobalServerConfig.HTTPAccessLog.WriteTargets
}
needWriteFile := writeTargets == nil || writeTargets.NeedWriteFile()
needReportAPI := writeTargets == nil || writeTargets.NeedReportToAPI()
// 落盘 JSON LinesFluent Bit 采集 → ClickHouse
if needWriteFile {
var clusterId int64
if sharedNodeConfig != nil {
clusterId = sharedNodeConfig.GroupId
}
accesslogs.SharedFileWriter().WriteBatch(accessLogs, clusterId)
}
// 发送到本地
if sharedHTTPAccessLogViewer.HasConns() {
for _, accessLog := range accessLogs {
@@ -99,7 +117,10 @@ Loop:
}
}
// 发送到API
// 发送到 API(写 MySQL 或 API 直写 ClickHouse 时需要)
if !needReportAPI {
return nil
}
if this.rpcClient == nil {
client, err := rpc.SharedRPC()
if err != nil {

View File

@@ -12,6 +12,7 @@ import (
"github.com/TeaOSLab/EdgeCommon/pkg/rpc/pb"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs"
"github.com/TeaOSLab/EdgeCommon/pkg/serverconfigs/firewallconfigs"
"github.com/TeaOSLab/EdgeNode/internal/accesslogs"
"github.com/TeaOSLab/EdgeNode/internal/caches"
"github.com/TeaOSLab/EdgeNode/internal/configs"
"github.com/TeaOSLab/EdgeNode/internal/conns"
@@ -422,6 +423,9 @@ func (this *Node) syncConfig(taskVersion int64) error {
this.isLoaded = true
// 预创建本地日志目录与空文件,便于 Fluent Bit 立即 tail无需等首条访问日志
_ = accesslogs.SharedFileWriter().EnsureInit()
// 整体更新不需要再更新单个服务
this.updatingServerMap = map[int64]*serverconfigs.ServerConfig{}
@@ -569,9 +573,16 @@ func (this *Node) checkClusterConfig() error {
// 监听一些信号
func (this *Node) listenSignals() {
var queue = make(chan os.Signal, 8)
signal.Notify(queue, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL, syscall.SIGQUIT)
signal.Notify(queue, syscall.SIGTERM, syscall.SIGINT, syscall.SIGKILL, syscall.SIGQUIT, syscall.SIGHUP)
goman.New(func() {
for range queue {
for sig := range queue {
if sig == syscall.SIGHUP {
// 供 logrotate 等旋转日志后重开句柄
if err := accesslogs.SharedFileWriter().Reopen(); err != nil {
remotelogs.Error("NODE", "access log file reopen: "+err.Error())
}
continue
}
time.Sleep(100 * time.Millisecond)
utils.Exit()
return