跳转至

日志平台能力差距清单(LOGGING-GAP)

生成 2026-10-01 | 对象:EFK(Elasticsearch + Kibana + Filebeat,工程 monitoring-p2-20261001) 性质:只读盘点,不含任何变更 | 用途:按优先级逐条推进时的索引 档位:【实测】本轮有实测证据 / 【已知】来自工程档案 / 【推断】未单独验证 关联:docs/MONITORING-ROADMAP.md(建设蓝图与缺口台账 G1–G9)、docs/PROJECT-MAP.md(任务路由)

0. 这份文件怎么用

  • 这是能力差距索引,不是操作手册;每项都给出「在哪能拾起」,动手时进对应工程读 SOP.md / RUNBOOK.md。
  • 「优先级」按对本环境的影响排,不按行业热度排:★★★ 不做等于日志平台不完整;★★ 值得做;★ 可延后。
  • 不要照单全做:第 4 节列出的是本环境不该抄的行业做法,避免为名词付费。

1. 现状(已具备,不用再补)

能力 状态
采集覆盖 4 个 K8s 节点(DaemonSet)+ 14 台集群外主机(systemd),日志七类 + LSF logdir
日志级别解析 主机侧 journald PRIORITY→log.level;K8s 侧 Filebeat 四层规则(JSON→klog→logfmt→行首标记)
索引与保留 data stream + ILM efk-14d(rollover 1d / delete 14d)【实测】
采集面收敛机制 模板标记 + ROLE_GATED_BLOCKS 按角色剥离,防 NFS 共享导致的跨主机重复
Kibana 视图 7 面板 + 5 控件(主机 / K8s Pod / 级别 / 集群域 / 类别)
采集器自监控 主机侧→Prometheus textfile;K8s 侧→ES .monitoring-beats-*
漂移检测 main.py drift;幂等复跑零变更
入口探测 blackbox-exporter + Probe CR + 证书到期告警

2. 差距清单

2026-10-02 用户决策:以下三类决定不做 —— #8–#11(安全 / 审计)、#6/#7/#12(可靠性)、

13 冷热分层。理由:单 KVM 宿主 + 内网、日志可再生成、容量充裕,收益有限。

条目保留仅作追溯;HANDOFF.md §3.2 为此决策的索引。

一、语义维度(最影响"日常能不能用")

# 能力 现状 影响 优先级 在哪能拾起
1 ~~服务维度 service.name~~ → 已闭环(2026-10-01) ✅ 两侧 Filebeat 顶层 processors 加同款 script(7 级优先级:容器名→systemd 单元→syslog 标识→行首进程名→类别兜底→kernel→文件名),稳态覆盖率 0 → 100%;Kibana 已有第 6 个控件「服务」 无 — monitoring-p2-20261001/docs/SOP.md §5 步骤 9.6
2 ~~结构化字段抽取(job_id/user/exit_code/node)~~ → 已落地(2026-10-01) ✅ 主机侧抽出 job.id/job.user/job.node/job.exit_code(仅 Slurm、LSF 调度器日志),Kibana 明细表加两列;两台主机受控样本验证 4/4 通过。⚠ LSF 侧【未验证】:集群无作业、记账文件无新增,待真实作业复核 无 — monitoring-p2-20261001/docs/SOP.md §5 步骤 9.7
3 ~~多行合并(Java/Python 堆栈算一条)~~ → 已闭环(2026-10-02) ✅ K8s 容器 input 改用 parsers: [container, multiline](pattern ^[[:space:]]);离线 fixtures 实测三行 at ... 并成一条、log.flags=multiline。⚠ 本环境几乎无堆栈(实测 Traceback 仅 2 条、Java 堆栈 0 条),属补齐能力;主机侧未加(主机日志以单行为主) 无 — log-parse-20261002/SOP.md §5 步骤 2
4 ~~日志内时间戳~~ → 已闭环(2026-10-02) ✅ 主机侧 Slurm([ISO] 与 YYYY-MM-DD HH:MM:SS)与 OpenWrt(ISO+时区)经 script+timestamp 解析,实测 @timestamp = 行内时间(Asia/Shanghai)。⚠ FlexLM(无日期)/ VNC(无时间戳)/ journald(本就真实时间)/ K8s 容器(CRI 前缀已由 container parser 解析)均不适用;audit / LSF epoch 本轮未做 无 — log-parse-20261002/SOP.md §5 步骤 1

二、管道可靠性

# 能力 现状 影响 优先级 在哪能拾起
5 ~~投递失败可观测(dropped / failed / parsing error)~~ → 已落地(2026-10-01) ✅ 自监控由 6 条扩到 18 条指标(含 dropped/failed/dead_letter/toomany/队列水位/积压);新增 4 条告警规则(FilebeatDeliveryLoss/Backlogged/QueueNearlyFull/ScrapeDown);14 台指标已到 Prometheus,规则组 filebeat-delivery 已加载。⚠ parsing error 未覆盖(Filebeat /stats 无该计数器);K8s 侧仍只有 Stack Monitoring 无 — monitoring-p2-20261001/docs/SOP.md §5 步骤 9.8
6 持久化缓冲(磁盘队列 / Kafka) 【已知】内存队列直投 ES ES 重启或满盘期间日志永久丢失 ★★ Filebeat queue.* 配置
7 采集端限流 / 背压 【已知】无 高流量时可能打爆 ES ★ Filebeat output.elasticsearch.* / bulk_max_size

三、安全与合规

# 能力 现状 影响 优先级 在哪能拾起
8 传输加密 【已知】ES 明文 HTTP(xpack.security.http.ssl=false,保留认证) 日志内容(含审计、用户行为)内网明文 ★★★ monitoring-p2-20261001/docs/RUNBOOK.md 第九章;HANDOFF 待办 #13
9 细粒度 RBAC + Kibana Spaces 【实测】仅 elastic 超管 + kibana_system + filebeat_writer_role(写) 拿到账号即可看全部日志,无法按域/按主机授权 ★★ ES _security/role + Kibana Spaces;modules/k8s_efk.py
10 ES 自身审计日志(谁查了什么) 【已知】未开启 等保场景缺「审计的审计」 ★★ ES xpack.security.audit 配置
11 静态加密 【推断】未做 视合规要求 ★ PVC 层

四、容量与留存

# 能力 现状 影响 优先级 在哪能拾起
12 快照备份 【实测】GET /_snapshot/_all 返回 { },无仓库 数据盘损坏即全部日志不可恢复 ★★★ 需先有 S3/NFS 仓库;docs/RUNBOOK.md 第 182 行「未配置 ES 快照仓库」
13 冷热分层 【实测】efk-14d 只有 hot + delete 两阶段 14 天数据全在热层,占用与查询成本都吃亏 ★★ config/default.yaml 的 efk.ilm + modules/k8s_efk.py
14 ~~容量水位告警~~ → 已闭环(2026-10-03) ✅ 新增 capacity-watermark-alerts:宿主 dell-r620 的 NFS 后端盘(承载 Prometheus TSDB + ES 全部数据,此前完全无预警——现有 ExternalHostDiskSpace* 的 selector 不含该宿主)+ Prometheus TSDB 接近 retentionSize。⚠ PVC 层不做:实测 nfs-csi 的 kubelet_volume_stats_* 失真(同一后端上所有 PVC 报同一 used、capacity 报后端卷总量 491GiB)。⚠ ES 应用层(分片/集群健康/JVM)仍无指标,需 exporter,属剩余缺口 无 — control-plane-metrics-20261003/docs/SOP.md

五、告警闭环

# 能力 现状 影响 优先级 在哪能拾起
15 ~~日志内容告警(如"认证失败激增""出现 OOM")~~ → 已落地(2026-10-01) ✅ 集群外内容探针(查 ES _count → textfile)+ 5 条规则(认证失败/OOM/存储/崩溃/探针失联),零 Alertmanager 改动复用既有 category×severity 路由;ES 侧新建只读账号 logwatch_reader。⚠ 未用 Watcher(basic license 不含)与 Kibana Alerting(需改 Alertmanager 路由) 无 — monitoring-p2-20261001/docs/SOP.md §5 步骤 9.9
16 告警分级 / 路由 / 抑制 【已知】Prometheus 侧有 inhibit_rules — ★ env-monitor-email-p3

六、采集覆盖(本会话结论)

# 项 现状 优先级
17 LSF 集群日志 ✅ 已纳管(lsf-logdir-20261001/SOP.md,单点采集) —
18 Lustre ✅ 无需(服务端无独立日志,其信息走内核日志且已在采) —
19 EDA 工具作业日志 ❌ 未立项;位于用户作业目录、量大且属用户数据 ★★ 须先定采集范围与脱敏策略

3. 建议推进顺序

  1. 先补三个"不做就不合格"的:#1 服务维度(改动小、见效最直接)、#5 投递可观测(防止悄悄丢日志)、#15 日志内容告警。
  2. 再看 EDA 价值项:#2 作业字段抽取(本环境是 EDA 场景,收益高于通用环境)。
  3. 安全三条一起做更省事:#8 传输加密、#9 RBAC、#10 审计——它们都动 ES/Kibana 的安全配置,一次窗口改完。
  4. 容量两条:#12 快照备份需要先解决"存哪里"(S3 或 NFS),#13 冷热分层可与它一起设计。

4. 本清单不包含(对本环境是伪需求)

行业常见做法 为什么本环境不做
Kafka / Redis 缓冲层 日增百万级、单 ES,引入中间件只增加运维面,收益不抵成本
APM / trace 关联 环境无微服务调用链,日志与 trace 无从关联
WORM / 防篡改存储 日志为可再生成数据(RUNBOOK 已明确),合规上也未被要求
全量静态加密 无合规硬要求前,收益低于运维复杂度
日志全文脱敏流水线 当前采集面不含用户作业输出(EDA 立项时再单议)

5. 判定依据(可复现)

结论 证据
service.name 相关字段已存在但覆盖 2.6% _field_caps + exists 计数:systemd.unit 20,009 / log.syslog.appname 20,509 / log.file.path 749,107 / 总 769,286
字段取值可达服务粒度 log.syslog.appname TOP:slurmdbd 2711、sshd-session 1064、slurmctld 475、slurmd 24;systemd.unit 同步
无快照仓库 GET /_snapshot/_all → { }
ILM 仅两阶段 GET /_ilm/policy/efk-14d → phases: hot(rollover 1d) + delete(min_age 14d)
无细粒度角色 GET /_security/role 非内置仅 filebeat_writer_role 等少量
无多行/时间戳解析 模板 artifacts/filebeat-host.yml.tpl 全文无 multiline / timestamp processor

来源:/home/rain/Documents/k8s_ins/docs/LOGGING-GAP.md | 最后更新:2026-10-03 01:42(由 build/sync.py 同步,请勿在站点侧修改)