diff --git a/common/constants.go b/common/constants.go index 6caa7f5c..274c514f 100644 --- a/common/constants.go +++ b/common/constants.go @@ -116,6 +116,10 @@ var RetryTimes = 0 var IsMasterNode bool +// NodeName 节点名称,从 NODE_NAME 环境变量读取; +// 用于审计日志中标识节点身份,在容器/K8s 部署时比自动探测到的容器内网 IP 更具可读性。 +var NodeName = "" + var requestInterval int var RequestInterval time.Duration diff --git a/common/init.go b/common/init.go index e9cfc98b..35b4c6be 100644 --- a/common/init.go +++ b/common/init.go @@ -82,6 +82,7 @@ func InitEnv() { DebugEnabled = os.Getenv("DEBUG") == "true" MemoryCacheEnabled = os.Getenv("MEMORY_CACHE_ENABLED") == "true" IsMasterNode = os.Getenv("NODE_TYPE") != "slave" + NodeName = os.Getenv("NODE_NAME") TLSInsecureSkipVerify = GetEnvOrDefaultBool("TLS_INSECURE_SKIP_VERIFY", false) if TLSInsecureSkipVerify { if tr, ok := http.DefaultTransport.(*http.Transport); ok && tr != nil { diff --git a/docker-compose.yml b/docker-compose.yml index 3c56faf3..7a887b60 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -32,6 +32,7 @@ services: - TZ=Asia/Shanghai - ERROR_LOG_ENABLED=true # 是否启用错误日志记录 (Whether to enable error log recording) - BATCH_UPDATE_ENABLED=true # 是否启用批量更新 (Whether to enable batch update) + - NODE_NAME=new-api-node-1 # 节点名称,用于审计日志中标识节点身份;多节点/容器部署时建议设置 (Node name used in audit logs; recommended when running multiple instances or in containers) # - STREAMING_TIMEOUT=300 # 流模式无响应超时时间,单位秒,默认120秒,如果出现空补全可以尝试改为更大值 (Streaming timeout in seconds, default is 120s. Increase if experiencing empty completions) # - SESSION_SECRET=random_string # 多机部署时设置,必须修改这个随机字符串!! (multi-node deployment, set this to a random string!!!!!!!) # - SYNC_FREQUENCY=60 # Uncomment if regular database syncing is needed diff --git a/model/log.go b/model/log.go index c7242688..9203ff28 100644 --- a/model/log.go +++ b/model/log.go @@ -118,6 +118,7 @@ func RecordTopupLog(userId int, content string, callerIp string, paymentMethod s username, _ := GetUsernameById(userId, false) adminInfo := map[string]interface{}{ "server_ip": common.GetIp(), + "node_name": common.NodeName, "caller_ip": callerIp, "payment_method": paymentMethod, "callback_payment_method": callbackPaymentMethod, diff --git a/web/src/hooks/usage-logs/useUsageLogsData.jsx b/web/src/hooks/usage-logs/useUsageLogsData.jsx index d33b633f..fcb7e39f 100644 --- a/web/src/hooks/usage-logs/useUsageLogsData.jsx +++ b/web/src/hooks/usage-logs/useUsageLogsData.jsx @@ -740,6 +740,12 @@ export const useLogsData = () => { value: adminInfo.server_ip, }); } + if (adminInfo.node_name) { + expandDataLocal.push({ + key: t('节点名称'), + value: adminInfo.node_name, + }); + } if (adminInfo.version) { expandDataLocal.push({ key: t('系统版本'), diff --git a/web/src/i18n/locales/en.json b/web/src/i18n/locales/en.json index 151f3ce8..495fba96 100644 --- a/web/src/i18n/locales/en.json +++ b/web/src/i18n/locales/en.json @@ -1957,6 +1957,7 @@ "服务可用性": "Service Status", "服务商": "Service Provider", "服务器IP": "Server IP", + "节点名称": "Node Name", "服务器地址": "Server Address", "服务器日志功能未启用(未配置日志目录)": "Server logging is not enabled (log directory not configured)", "服务器日志管理": "Server Log Management", diff --git a/web/src/i18n/locales/fr.json b/web/src/i18n/locales/fr.json index 6ffb8563..bdd77c26 100644 --- a/web/src/i18n/locales/fr.json +++ b/web/src/i18n/locales/fr.json @@ -1950,6 +1950,7 @@ "服务可用性": "État du service", "服务商": "Service Provider", "服务器IP": "IP du serveur", + "节点名称": "Nom du nœud", "服务器地址": "Adresse du serveur", "服务器日志功能未启用(未配置日志目录)": "La journalisation du serveur n'est pas activée (répertoire de journaux non configuré)", "服务器日志管理": "Gestion des journaux du serveur", diff --git a/web/src/i18n/locales/ja.json b/web/src/i18n/locales/ja.json index 40929a57..e6721e36 100644 --- a/web/src/i18n/locales/ja.json +++ b/web/src/i18n/locales/ja.json @@ -1921,6 +1921,7 @@ "服务可用性": "サービスの可用性", "服务商": "Service Provider", "服务器IP": "サーバーIP", + "节点名称": "ノード名", "服务器地址": "サーバーURL", "服务器日志功能未启用(未配置日志目录)": "サーバーログ機能が有効になっていません(ログディレクトリが未設定)", "服务器日志管理": "サーバーログ管理", diff --git a/web/src/i18n/locales/ru.json b/web/src/i18n/locales/ru.json index 7e2d693c..333057e1 100644 --- a/web/src/i18n/locales/ru.json +++ b/web/src/i18n/locales/ru.json @@ -1968,6 +1968,7 @@ "服务可用性": "Доступность сервиса", "服务商": "Service Provider", "服务器IP": "IP сервера", + "节点名称": "Имя узла", "服务器地址": "Адрес сервера", "服务器日志功能未启用(未配置日志目录)": "Ведение журнала сервера не включено (каталог журналов не настроен)", "服务器日志管理": "Управление журналами сервера", diff --git a/web/src/i18n/locales/vi.json b/web/src/i18n/locales/vi.json index 357c39c9..a35ec454 100644 --- a/web/src/i18n/locales/vi.json +++ b/web/src/i18n/locales/vi.json @@ -1922,6 +1922,7 @@ "服务可用性": "Trạng thái dịch vụ", "服务商": "Service Provider", "服务器IP": "IP máy chủ", + "节点名称": "Tên nút", "服务器地址": "Địa chỉ máy chủ", "服务器日志功能未启用(未配置日志目录)": "Ghi nhật ký máy chủ chưa được bật (chưa cấu hình thư mục nhật ký)", "服务器日志管理": "Quản lý nhật ký máy chủ", diff --git a/web/src/i18n/locales/zh-CN.json b/web/src/i18n/locales/zh-CN.json index 50f45b82..5a7a7185 100644 --- a/web/src/i18n/locales/zh-CN.json +++ b/web/src/i18n/locales/zh-CN.json @@ -1915,6 +1915,7 @@ "服务可用性": "服务可用性", "服务商": "服务商", "服务器IP": "服务器IP", + "节点名称": "节点名称", "服务器地址": "服务器地址", "服务器日志功能未启用(未配置日志目录)": "服务器日志功能未启用(未配置日志目录)", "服务器日志管理": "服务器日志管理", diff --git a/web/src/i18n/locales/zh-TW.json b/web/src/i18n/locales/zh-TW.json index db2a57b6..a7727f89 100644 --- a/web/src/i18n/locales/zh-TW.json +++ b/web/src/i18n/locales/zh-TW.json @@ -1926,6 +1926,7 @@ "服务可用性": "服務可用性", "服务商": "服務商", "服务器IP": "伺服器IP", + "节点名称": "節點名稱", "服务器地址": "伺服器位址", "服务器日志功能未启用(未配置日志目录)": "伺服器日誌功能未啟用(未配置日誌目錄)", "服务器日志管理": "伺服器日誌管理",