运维部署
需要生成或更新 Fluent Bit 配置/日志指标管道时…
当要创建/更新 Fluent Bit 的 INPUT/FILTER/OUTPUT/parsers 配置或搭建 Kubernetes、syslog、HTTP、文件、指标等日志管道时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要生成或更新 Fluent Bit 配特定
解决思路
- 按固定执行流程逐阶段操作,不要跳阶段。
- Stage 1:从技能目录运行:cd /Users/akinozer/GolandProjects/cc-devops-skills/devops-skills-plugin/skills/fluentbit-generator && python3 scripts/generate_config.py --help。
- Stage 1:或从任意 cwd 用绝对路径运行:python3 /Users/akinozer/GolandProjects/cc-devops-skills/devops-skills-plugin/skills/fluentbit-generator/scripts/generate_config.py --help。
- Stage 1:预检:确认 python3 可用;确认脚本 help 无错误加载;若使用相对输出路径,在目标 cwd 下运行。
- Stage 1:兜底:如果 python3 或脚本执行不可用,切换到 Stage 4 手工生成流程并使用 examples/ 模板。
- Stage 2:收集主要用例:kubernetes、application logs、syslog、http ingest、metrics 或 custom。
- Stage 2:收集输入:来源和路径/端口,例如 tail /var/log/containers/*.log。
- Stage 2:收集输出:目标插件和端点,如 host、port、uri/topic/index/bucket。
- Stage 2:收集可靠性/安全:TLS 开关、重试预期、缓冲限制。
- Stage 2:收集环境上下文:集群名、环境名、云区域(如适用)。
- Stage 2:收集预期日志格式:json、regex、cri、docker、multiline stack traces 等。
- Stage 2:收集吞吐量画像:低/中/高以及可接受延迟。
- Stage 2:收集约束:离线环境、缺失二进制、只读文件系统。
- Stage 2:如果任一必填答案缺失,在生成前提出聚焦的追问。
- Stage 3:按决策表决定脚本路径或手工路径:请求匹配内置用例且只需支持的 flags -> Stage 5 脚本路径。
- Stage 3:需要脚本 flags 未覆盖的不常见插件选项 -> Stage 4 手工路径。
- Stage 3:复杂多 filter 链、自定义 parser/lua 逻辑或专门插件调优 -> Stage 4 手工路径。
- Stage 3:环境无法运行脚本(缺 Python/权限) -> Stage 4 手工路径。
- Stage 3:用户明确要求手工编写配置 -> Stage 4 手工路径。
- Stage 3:支持脚本用例:kubernetes-elasticsearch、kubernetes-loki、kubernetes-cloudwatch、kubernetes-opentelemetry、application-multiline、syslog-forward、file-tail-s3、http-kafka、multi-destination、prometheus-metrics、lua-filtering、stream-processor、custom。
- Stage 3:明确说明选择结果,并说明为什么不用另一路径。
- Stage 4:先读取 examples/ 中最接近的模板。
- Stage 4:在定义新 parser 前先读取 examples/parsers.conf。
- Stage 4:按顺序组装配置:[SERVICE]、[INPUT]、[FILTER]、[OUTPUT]、parser 定义(如需要)。
- Stage 4:复用 examples 中已知可用的配置段,只按需定制必要参数。
- Stage 4:保持各段之间的 tags 和 parser 引用一致。
- Stage 4:Kubernetes + Elasticsearch:examples/kubernetes-elasticsearch.conf。
- Stage 4:Kubernetes + Loki:examples/kubernetes-loki.conf。
- Stage 4:Kubernetes + CloudWatch:examples/cloudwatch.conf。
- Stage 4:Kubernetes + OpenTelemetry:examples/kubernetes-opentelemetry.conf。
- Stage 4:App multiline:examples/application-multiline.conf。
- Stage 4:Syslog forward:examples/syslog-forward.conf。
- Stage 4:File to S3:examples/file-tail-s3.conf。
- Stage 4:HTTP to Kafka:examples/http-input-kafka.conf。
- Stage 4:Multi destination:examples/multi-destination.conf。
- Stage 4:Metrics:examples/prometheus-metrics.conf。
- Stage 4:Lua filtering:examples/lua-filtering.conf。
- Stage 4:Stream processor:examples/stream-processor.conf。
- Stage 4:Parsers:examples/parsers.conf。
- Stage 4:兜底:如果没有匹配的 example,从 scripts/generate_config.py --use-case custom 的输出结构开始并手工扩展。
- Stage 5:除非输出路径是绝对路径,否则从技能目录运行。
- Stage 5:Kubernetes -> Elasticsearch:python3 scripts/generate_config.py --use-case kubernetes-elasticsearch --cluster-name prod-cluster --environment production --es-host elasticsearch.logging.svc --es-port 9200 --output output/fluent-bit.conf。
- Stage 5:Kubernetes -> OpenTelemetry:python3 scripts/generate_config.py --use-case kubernetes-opentelemetry --cluster-name prod-cluster --environment production --otlp-endpoint otel-collector.observability.svc:4318 --output output/fluent-bit-otlp.conf。
- Stage 5:File tail -> S3:python3 scripts/generate_config.py --use-case file-tail-s3 --log-path /var/log/app/*.log --s3-bucket my-logs-bucket --s3-region us-east-1 --output output/fluent-bit-s3.conf。
- Stage 5:兜底:如果脚本不支持必需选项,记录该 gap 并切换到 Stage 4。
- Stage 6:严格按顺序查询插件文档:1. Context7(首选):解析 Fluent Bit 文档的 library id,查询插件特定配置细节。
- Stage 6:2. 官方 Fluent Bit 文档(次选):使用 https://docs.fluentbit.io/manual 和插件特定页面;优先官方插件参考章节而不是博客。
- Stage 6:3. Web search(最后):仅在 Context7 和官方文档不可用/不完整时使用;优先引用或链接官方文档的来源。
- Stage 6:停止升级条件:一旦找到所需参数和一个已验证示例就停止。
- Stage 6:如果所有来源不可用,使用本地 examples/ 继续,并明确标记假设。
- Stage 7:生成后调用 fluentbit-validator 作为主要校验路径。
- Stage 7:如果 validator 不可用,运行本地兜底检查:安装 fluent-bit 时运行语法/格式冒烟检查:fluent-bit -c <generated-config> --dry-run。
- Stage 7:可选执行测试:fluent-bit -c <generated-config>。
- Stage 7:如果缺少 fluent-bit 二进制,手工静态检查:section headers 有效([SERVICE]、[INPUT]、[FILTER]、[OUTPUT])。
- Stage 7:检查 required plugin keys 存在。
- Stage 7:检查 tag/match patterns 对齐。
- Stage 7:检查 parser names/files 引用正确。
- Stage 7:检查没有硬编码 credentials。
- Stage 7:报告运行时校验被跳过及其原因。
- Stage 8:始终返回:1. 使用的生成路径(script 或 manual)及原因。
- Stage 8:始终返回:2. 产出的文件及关键插件选择。
- Stage 8:始终返回:3. 校验结果(或明确跳过原因及执行的兜底检查)。
- Stage 8:始终返回:4. 假设、开放风险和下一步需要定制的内容。
- Done Criteria:显式确认触发条件匹配。
- Done Criteria:澄清问卷已捕获必填字段或记录假设。
- Done Criteria:脚本 vs 手工决策明确且有理有据。
- Done Criteria:插件查询使用确定链:Context7 -> 官方文档 -> web(按需)。
- Done Criteria:命令提供时使用 cwd-safe 示例。
- Done Criteria:对缺失工具/文档/网络约束应用兜底行为。
- Done Criteria:执行校验(或明确原因跳过并做兜底静态检查)。
- Done Criteria:最终响应包含生成产物、校验结果和下一步定制点。
- Local Resources:优先使用本地资源再引入新结构:脚本 scripts/generate_config.py;模板 examples/*.conf;parser 基线 examples/parsers.conf;样例输出目录 output/。
适用边界 · 注意事项
- 纯校验请求不要使用本技能;应改用 fluentbit-validator。