研发协作
部署前校验 Fluent Bit classic-mode…
在修改或部署 Fluent Bit classic-mode 配置前后,用确定性流程做 lint、审计、dry-run、报告与修复复验。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
部署前校验 Fluent Bit cla特定
解决思路
- 从技能目录运行:`cd devops-skills-plugin/skills/fluentbit-validator`。
- 检查必需和可选二进制:`command -v python3 >/dev/null 2>&1 && echo "python3: available" || echo "python3: missing"`;`command -v fluent-bit >/dev/null 2>&1 && echo "fluent-bit: available" || echo "fluent-bit: missing (dry-run will be skipped)"`。
- Precheck 协议:如果 `python3` 缺失,停止基于脚本的验证,报告 blocker,并切换为仅手动配置审查。
- Precheck 协议:如果 `fluent-bit` 缺失,继续静态检查,跳过 dry-run,并记录一条 `Recommendation` 说明跳过原因和下一步。
- Stage 1 静态验证必做,默认命令:`python3 scripts/validate_config.py --file <config-file> --check all`。
- 仅在请求时使用定向检查 structure:`python3 scripts/validate_config.py --file <config-file> --check structure`。
- 仅在请求时使用定向检查 sections:`python3 scripts/validate_config.py --file <config-file> --check sections`。
- 仅在请求时使用定向检查 tags:`python3 scripts/validate_config.py --file <config-file> --check tags`。
- 仅在请求时使用定向检查 security:`python3 scripts/validate_config.py --file <config-file> --check security`。
- 仅在请求时使用定向检查 performance:`python3 scripts/validate_config.py --file <config-file> --check performance`。
- 仅在请求时使用定向检查 best-practices:`python3 scripts/validate_config.py --file <config-file> --check best-practices`。
- 仅在请求时使用定向检查 dry-run:`python3 scripts/validate_config.py --file <config-file> --check dry-run`。
- 严格 CI 门禁可选:`python3 scripts/validate_config.py --file <config-file> --check all --fail-on-warning`。
- Stage 2 dry-run 命令:`fluent-bit -c <config-file> --dry-run`。
- Dry-run 跳过协议:如果 `fluent-bit` 不可用,默认不要因此让静态验证失败。
- Dry-run 跳过协议:发出且只发出一条 finding:`Recommendation: Dry-run skipped because fluent-bit binary is not available in PATH; run dry-run in CI or a Fluent Bit runtime image.`
- 如果用户明确要求把 dry-run 作为发布门禁,运行:`python3 scripts/validate_config.py --file <config-file> --check dry-run --require-dry-run`。
- 在发布门禁模式下,缺少 `fluent-bit` 必须报告为 `Error`。
- Stage 3 参考查询可选,仅在本地检查后插件/参数行为不清楚时使用。
- 参考查询顺序:1) Context7 Fluent Bit docs;2) 官方文档 `docs.fluentbit.io`;3) 更广泛的 web search,但限制在官方/插件来源。
- 参考查询只捕获:必需字段、允许值和默认值、与用户配置相关的版本注意事项。
- Stage 4 报告与修复必做:严格使用这些严重级别标签:`Error`、`Warning`、`Recommendation`。
- 不要引入替代标签(如 `Info`、`Best Practice`、`Critical` 等)。
- 报告格式:`Validation Report: <config-file> Error: - <blocking issue> Warning: - <non-blocking risk> Recommendation: - <improvement or skipped-step guidance>`。
- 修复流程:1) 在可用时带着文件/行上下文呈现 findings。
- 修复流程:2) 在修改用户文件前请求批准。
- 修复流程:3) 应用已批准的更改。
- 修复流程:4) 重新运行相同的验证命令。
- 修复流程:5) 返回 delta:哪些变了、哪些仍存在、最终状态。
- 无问题快速路径:如果没有 findings,返回简短 pass 摘要,并说明 dry-run 已执行还是已跳过。
- Fallback Matrix:`python3` 缺失时,停止脚本化验证器,将 blocker 作为 `Error` 报告,提供仅手动审查输出。
- Fallback Matrix:`fluent-bit` 缺失时,继续静态检查,跳过 dry-run,发出一条带下一步的 `Recommendation`。
- Fallback Matrix:无网络/文档访问时,继续本地验证,把未知插件细节报告为 `Warning`,并明确写 `doc lookup deferred`。
- Fallback Matrix:用户要求仅报告时,不要编辑文件;返回 findings 和建议的重新运行命令。
- Canonical full validation flow:`bash scripts/validate.sh --precheck`;`python3 scripts/validate_config.py --file tests/valid-basic.conf --check all`。
- Canonical constrained environment flow(`fluent-bit` 不可用):`bash scripts/validate.sh --precheck`;`python3 scripts/validate_config.py --file tests/invalid-security-issues.conf --check all --json`。
- Canonical constrained environment 预期结果:仍产生静态 findings;dry-run 被跳过并在 `Recommendation` 下报告。
- Done Criteria:只有以下全部为真才算完成:已执行 precheck 并明确说明二进制可用性。
- Done Criteria:验证命令和范围清晰且可复现。
- Done Criteria:所有 findings 只使用 `Error`、`Warning`、`Recommendation`。
- Done Criteria:dry-run 路径明确:已执行或已跳过并给出原因。
- Done Criteria:工具/运行时约束的 fallback 行为已记录在输出中。
- Done Criteria:如果应用了修复,重新运行验证并报告修复后状态。
- 本地资产:`scripts/validate_config.py` 是主验证器。
- 本地资产:`scripts/validate.sh` 是 wrapper 和环境 precheck 辅助脚本。
- 本地资产:`tests/*.conf` 是示例有效/无效配置。
- 本地资产:`tests/test_validate_config.py` 是 parser 和 severity 行为的回归覆盖。
适用边界 · 注意事项
- 不适用于非 Fluent Bit classic-mode 配置,或需要校验其他日志管道配置的场景。
- 当 `python3` 缺失且无法先安装/提供脚本运行环境时,不能执行脚本化验证,只能手动审查。
- 当 `fluent-bit` 缺失且用户把 dry-run 作为发布门禁时,会因缺少运行时产生 `Error`;若无法在 CI 或 Fluent Bit runtime image 中运行,则不能完成该门禁。