feat: 品牌统一 LokiStack + 全站中英 i18n + 用户批量删除 + 主题定时切换与浅色侧栏
- 品牌: Go 模块/数据文件/二进制/构建部署资产全部 opsx→lokistack;前端 localStorage 命名空间迁移(读旧写新,含按用户 id 前缀迁移);修复 nginx upstream 与 Makefile 引用已改名服务的断裂 - i18n: react-i18next 落地,common + 11 个页面域命名空间全站中英(菜单/顶栏/登录/列表页/表单/确认弹窗/状态徽章);设置页语言即时切换;修复词典自注册导致的循环导入白屏 - 用户管理: 批量删除(POST /users/batch-delete,不删自己/最后管理员,部分失败不阻断)+ 行复选/全选/批量工具条 - 主题: 浅色侧栏(中性灰激活态)、四态模式(浅色/深色/跟随系统/定时切换,按时区判定)、顶栏太阳月亮二态、设置页紧凑分段选择器 - UI: 登录记住用户名、CardActionButton 统一五页卡片操作钮、shadcn Badge 替换手写徽章、语义色修正 - 清理: 移除主机 Web 终端(前后端)、k8s-helm/Helm 遗留代码与字段、README 重写精简 - 修复: 侧栏与日志告警 order 重复、路由标题 i18n key 未翻译、词典双逗号等
This commit is contained in:
1 parent
02d1bd87a7
commit
f3733f0bfc
201 files changed
+5438
-2388
No files matched your search
@@ -0,0 +1,135 @@
|
||||
// collectors 命名空间 — 「日志采集」页面域中文文案。
|
||||
// 注册说明:i18n 入口(src/i18n/index.ts)由框架统一维护,页面域词典在被页面组件
|
||||
// 与入口处 resources 静态注册的 common 命名空间共存。
|
||||
|
||||
const collectors = {
|
||||
page: {
|
||||
title: '日志采集',
|
||||
description: '为主机与集群配置日志采集策略,日志将推送到关联的 Loki',
|
||||
addAction: '添加采集策略',
|
||||
},
|
||||
empty: {
|
||||
title: '暂无采集策略',
|
||||
description: '新建一个日志采集器,关联已部署的 Loki',
|
||||
},
|
||||
// 采集器类型徽章(卡片描述行)
|
||||
typeLabel: {
|
||||
hostPromtail: '主机 Promtail',
|
||||
k8sDaemonset: 'Promtail DaemonSet',
|
||||
k8sFluentbitSidecar: 'Fluent Bit Sidecar',
|
||||
},
|
||||
// 卡片字段标签
|
||||
field: {
|
||||
loki: '关联 Loki',
|
||||
cluster: '集群',
|
||||
host: '主机',
|
||||
namespace: '命名空间',
|
||||
logPath: '日志路径',
|
||||
target: '目标',
|
||||
unknown: '未知',
|
||||
},
|
||||
action: {
|
||||
install: '部署',
|
||||
uninstall: '卸载',
|
||||
editAria: '编辑采集策略 {{name}}',
|
||||
deleteAria: '删除采集器 {{name}}',
|
||||
},
|
||||
toast: {
|
||||
loadOptionsFailed: '加载 Loki 部署/集群/主机数据失败',
|
||||
installFailed: '部署采集器失败',
|
||||
uninstallFailed: '卸载采集器失败',
|
||||
deleteFailed: '删除采集器失败',
|
||||
createFailed: '创建采集器失败',
|
||||
saveFailed: '保存采集策略失败',
|
||||
},
|
||||
deleteConfirm: '确定要删除「{{name}}」吗?删除时将自动卸载采集端,此操作不可恢复。',
|
||||
form: {
|
||||
title: '添加采集策略',
|
||||
name: '名称',
|
||||
type: '采集器类型',
|
||||
// 新建表单下拉里的类型选项(比卡片徽章多部署通道说明)
|
||||
typeOption: {
|
||||
hostPromtail: '主机 Promtail(SSH)',
|
||||
k8sDaemonset: 'Kubernetes Promtail DaemonSet',
|
||||
k8sFluentbitSidecar: 'Kubernetes Fluent Bit Sidecar',
|
||||
},
|
||||
lokiDeployment: '关联 Loki 部署',
|
||||
lokiPlaceholder: '选择已部署的 Loki(推送目标)',
|
||||
// 下拉项名称后的括号后缀(状态/IP),中英文括号形态不同
|
||||
statusParen: '({{status}})',
|
||||
hostParen: '({{ip}})',
|
||||
host: '目标主机',
|
||||
hostPlaceholder: '选择主机',
|
||||
cluster: '目标集群',
|
||||
clusterPlaceholder: '选择集群',
|
||||
namespace: '命名空间',
|
||||
nsPickCluster: '先选择集群',
|
||||
nsLoading: '加载命名空间…',
|
||||
nsPick: '选择命名空间',
|
||||
nsEmpty: '暂无可读取的命名空间',
|
||||
nsLoadFailed: '读取命名空间失败',
|
||||
pickFromCluster: '从集群选择',
|
||||
manualInput: '手动填写',
|
||||
targetDeployment: '目标 Deployment',
|
||||
wlPickNamespace: '先选择命名空间',
|
||||
wlLoading: '加载 Deployment…',
|
||||
wlPick: '选择 Deployment',
|
||||
wlEmpty: '此命名空间暂无 Deployment',
|
||||
wlLoadFailed: '读取 Deployment 失败',
|
||||
wlReady: '(就绪 {{ready}}/{{total}})',
|
||||
logPath: '采集日志路径',
|
||||
logPathHostHint: '支持 glob 通配(如 /var/log/*.log /var/log/syslog);多个路径用逗号分隔',
|
||||
logPathSidecarHint:
|
||||
'填写业务写入的文件路径,如 /var/log/app/*.log。已有日志卷会自动共享;无日志卷时仅在专用 logs 目录创建共享卷。/tmp/test.log 等普通目录不会自动挂载。',
|
||||
labels: '自定义标签(JSON,可选)',
|
||||
labelsHint: '合法 JSON 时将附加到每条日志的标签,便于在 Loki/Grafana 中筛选;留空则不加',
|
||||
submit: '创建并部署',
|
||||
submitting: '创建中...',
|
||||
validation: {
|
||||
nameRequired: '请输入采集器名称',
|
||||
lokiRequired: '请选择关联的 Loki 部署',
|
||||
hostRequired: '请选择目标主机',
|
||||
clusterRequired: '请选择目标集群',
|
||||
namespaceRequired: '请选择命名空间',
|
||||
targetDeploymentRequired: '请填写目标 Deployment 名称',
|
||||
},
|
||||
},
|
||||
edit: {
|
||||
title: '编辑采集策略',
|
||||
namespaces: '采集命名空间',
|
||||
allNamespaces: '全集群所有命名空间',
|
||||
selectedCount: '已选 {{count}} 个',
|
||||
allCheckbox: '所有命名空间(全集群采集)',
|
||||
nsSearch: '搜索命名空间…',
|
||||
loading: '加载中…',
|
||||
nsListEmpty: '未取到命名空间列表(可手动输入)',
|
||||
nsNoMatch: '无匹配',
|
||||
nsLoadFailed: '加载命名空间失败',
|
||||
// nsHint/appSourceHint/appIncludeHint 含行内 <code>,渲染处用 Trans 组件
|
||||
nsHint:
|
||||
'勾「所有命名空间」= 采集全集群;否则只采集勾选的命名空间。生成 Promtail 的 <code>kubernetes_sd_configs.namespaces</code> 白名单。',
|
||||
appLabelSource: 'app 标签取值来源',
|
||||
appSourcePlaceholder: '留空 = 默认(controller 名回退链)',
|
||||
appSourceHint:
|
||||
'默认按 <code>app.kubernetes.io/name → app → controller 名 → pod 名</code> 四级回退。若集群有自己的私有规范标签(如 <code>k8s.kuboard.cn/name</code>),填在这里会作为最高优先级,其余仍兜底。',
|
||||
appSourcePreset: {
|
||||
default: '默认:app.kubernetes.io/name → app → controller 名 → pod 名',
|
||||
controllerName: 'controller_name(Pod 的 ReplicaSet 名,去 hash = Deployment 名)',
|
||||
k8sAppName: 'app.kubernetes.io/name(Kubernetes 标准标签)',
|
||||
app: 'app(常见简写)',
|
||||
kuboard: 'k8s.kuboard.cn/name(Kuboard 注入)',
|
||||
},
|
||||
appInclude: '只采集这些 app(可选)',
|
||||
appIncludePlaceholder: '留空 = 不限;多个用逗号分隔,如 cex-spot-api, cex-asset-api',
|
||||
appIncludeHint:
|
||||
'填了之后 Promtail 只保留 app 命中这些值的日志(<code>action: keep</code>),是控制日志量最直接的手段。值需与上面「app 标签取值来源」解析出的 app 一致。',
|
||||
logPathHint: 'Sidecar 需使用业务容器的共享日志卷,或专用 logs 目录。保存后点击「部署」应用新配置。',
|
||||
save: '保存',
|
||||
saving: '保存中…',
|
||||
validation: {
|
||||
nameRequired: '请输入采集策略名称',
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
export default collectors
|
||||
Reference in new issue
Block a user