用户困惑:这个字段到底是"只采集指定命名空间"还是"组件要部署的命名空间"?
查代码后确认——**同一个字段在三种采集类型下含义完全不同**:
k8s-fluentbit-sidecar:
= 目标应用 Deployment 所在的命名空间。
平台会 Deployments(ns).Get(target) 然后 patch 注入 fluent-bit sidecar,
同时把它作为日志的 namespace 标签。
**不是**日志过滤条件。
k8s-daemonset:
= Promtail DaemonSet 部署到哪个命名空间。
DaemonSet 挂载 /var/log/pods,采集**整个集群所有命名空间**的容器日志,
不按命名空间做过滤。一般就填 Loki 所在的 log。
host-promtail:不使用该字段。
原来这三种情况共用一句"命名空间",用户只能猜。
现在字段下方按类型显示对应说明(min-h-4 固定高度,不抖动)。
实测:三条提示文案均已进包(6fe430f59eef)。
193 lines
8.4 KiB
TypeScript
193 lines
8.4 KiB
TypeScript
// 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: '目标',
|
||
runMode: '运行方式',
|
||
unknown: '未知',
|
||
},
|
||
// 主机采集器托管方式(安装时自动探测:docker 优先、systemd 兜底)
|
||
runMode: {
|
||
docker: 'Docker 容器',
|
||
systemd: 'systemd 服务',
|
||
},
|
||
action: {
|
||
install: '部署',
|
||
uninstall: '卸载',
|
||
logs: '日志',
|
||
editAria: '编辑采集策略 {{name}}',
|
||
deleteAria: '删除采集器 {{name}}',
|
||
},
|
||
logs: {
|
||
title: '采集器日志 · {{name}}',
|
||
description: '采集器最近运行日志(主机:docker logs / journalctl;K8s:采集 Pod 日志)',
|
||
source: '来源:{{source}}',
|
||
tailLines: '{{count}} 行',
|
||
refresh: '刷新',
|
||
empty: '暂无日志输出(采集器可能刚启动,或暂时没有匹配的日志行)',
|
||
copy: '复制',
|
||
copied: '已复制',
|
||
close: '关闭',
|
||
failed: '读取采集器日志失败',
|
||
},
|
||
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: '命名空间',
|
||
namespaceHintSidecar: '填「目标应用(Deployment)所在的命名空间」。平台会在该命名空间里找到目标 Deployment 并注入 Fluent Bit sidecar,采集到的日志也会打上这个 namespace 标签。它不是日志过滤条件。',
|
||
namespaceHintDaemonset: '填「Promtail DaemonSet 部署到哪个命名空间」。DaemonSet 会采集整个集群所有命名空间的容器日志,不按命名空间过滤(一般就用 Loki 所在的 log)。',
|
||
namespaceHintHost: '主机模式不使用该字段。',
|
||
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 目录。',
|
||
labels: '自定义标签(JSON,可选)',
|
||
labelsHint: '合法 JSON 时将附加到每条日志的标签,便于在日志平台中筛选;留空则不附加',
|
||
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:
|
||
'勾选「所有命名空间」即采集全集群;未勾选时仅采集所选命名空间。',
|
||
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:
|
||
'只保留 app 命中这些值的日志(<code>action: keep</code>),是控制日志量最直接的手段。',
|
||
logPathHint: 'Sidecar 需共享日志卷或专用 logs 目录;保存后点击「部署」生效。',
|
||
// ── 主机模式:结构化采集项(B 档) ──
|
||
jobs: {
|
||
title: '日志采集项',
|
||
hint: '每个采集项对应一个 promtail job;每个目录填写一个路径。保存后点击「部署」下发。',
|
||
add: '添加采集项',
|
||
remove: '删除采集项',
|
||
namePlaceholder: 'job 名称,如 app-api',
|
||
paths: '日志路径(逗号分隔,支持 glob)',
|
||
systemPathsPlaceholder: '留空 = 自动使用该主机实际存在的系统日志',
|
||
systemBadge: '系统日志 · 自动时间戳',
|
||
labels: '附加标签(key=value,逗号分隔)',
|
||
advanced: '高级:多行合并 / JSON / 时间戳 / 丢弃 / 限流',
|
||
system: '系统日志(自动选 ISO8601/传统格式)',
|
||
json: 'JSON 解析',
|
||
multiline: '多行合并(Java 堆栈)',
|
||
timestamp: '自定义时间戳',
|
||
maxLinesPlaceholder: '最大行数 128',
|
||
tsSourcePlaceholder: '字段名,如 time',
|
||
tsLocationPlaceholder: '时区,如 Asia/Shanghai',
|
||
dropIfMatch: '命中即丢弃(正则,逗号分隔)',
|
||
dropIfMatchPlaceholder: '留空不丢;如 "status":200',
|
||
ratePlaceholder: '限流 rate(默认 2000)',
|
||
burstPlaceholder: '限流 burst(默认 4000)',
|
||
hostInfo: '上次安装探测:主机名 {{host}},系统日志格式 {{format}}',
|
||
},
|
||
preview: {
|
||
button: '预览 YAML',
|
||
loading: '渲染中…',
|
||
failed: '预览失败',
|
||
title: '将要下发的 promtail.yaml',
|
||
description: '仅预览,不保存且不下发;确认无误后点击「保存」→「部署」。',
|
||
copy: '复制',
|
||
copied: '已复制',
|
||
close: '关闭',
|
||
},
|
||
save: '保存',
|
||
saving: '保存中…',
|
||
validation: {
|
||
nameRequired: '请输入采集策略名称',
|
||
},
|
||
},
|
||
}
|
||
|
||
export default collectors
|