关于 fluentbit-generator
fluentbit-generator 是用于生成 Fluent Bit 配置和日志管道的技能。它根据使用场景与配置复杂度,选择生成脚本或基于模板手动编写。
主要功能
- 01按内置场景生成配置
- 02基于本地模板手动编写配置
- 03配置输入、过滤和输出管道
- 04按顺序查找插件文档
- 05验证生成的配置
适用场景
- 01将 Kubernetes 日志路由到输出插件
- 02设置多行应用日志采集
- 03将 syslog 或文件日志转发到目标
- 04创建指标或流处理配置
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ akin-ozer/ cc-devops-skills --skill fluentbit-generator安装后在 Claude Code 中输入/fluentbit-generator确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
examples/application-multiline.confcloudwatch.conffile-tail-s3.conffull-production.confhttp-input-kafka.confkubernetes-elasticsearch.confkubernetes-loki.confkubernetes-opentelemetry.conflua-filtering.confmulti-destination.confparsers.confprometheus-metrics.confstream-processor.confsyslog-forward.confoutput/k8s-errors-elasticsearch.confparsers.confscripts/generate_config.pytest_generate_config.py详细介绍
Fluent Bit 配置生成器
触发指南
用户提出以下任一需求时,使用此技能:
- 创建或更新 Fluent Bit 配置(
fluent-bit.conf、parsers.conf) - 构建日志管道(INPUT -> FILTER -> OUTPUT)
- 配置带有元数据增强功能的 Kubernetes 日志记录
- 将日志/指标发送到 Elasticsearch、Loki、CloudWatch、S3、Kafka、OTLP 或 Prometheus 远程写入
- 实现解析器、多行日志、lua 或流处理行为
纯验证请求不使用此技能;这种情况下请使用 fluentbit-validator。
执行流程
严格按以下顺序执行,不得跳过阶段。
阶段 1:设置工作上下文并进行预检
使用以下任一确定性命令模式。
# Option A (recommended): run from this skill directory
cd /Users/akinozer/GolandProjects/cc-devops-skills/devops-skills-plugin/skills/fluentbit-generator
python3 scripts/generate_config.py --help
# Option B: run from any cwd with absolute paths
python3 /Users/akinozer/GolandProjects/cc-devops-skills/devops-skills-plugin/skills/fluentbit-generator/scripts/generate_config.py --help
预检:
- 确认
python3可用。 - 确认脚本帮助信息可以正常加载。
- 如果使用相对输出路径,请从预期目标 cwd 运行。
回退方案:
- 如果
python3或脚本无法运行,请使用examples/模板切换到手动生成流程(阶段 4)。
阶段 2:澄清问卷(明确模板)
生成前收集以下字段。
必答问题:
- 主要使用场景是什么:
kubernetes、application logs、syslog、http ingest、metrics还是custom? - 输入是什么:使用哪些来源和路径/端口(例如
tail /var/log/containers/*.log)? - 输出是什么:目标插件和端点(主机、端口、uri/topic/index/bucket)?
- 可靠性/安全要求:是否启用 TLS、重试预期、缓冲限制?
- 环境上下文:集群名称、环境名称、云区域(如适用)?
选答但很重要的问题:
- 预期日志格式:json、regex、cri、docker,还是多行堆栈跟踪?
- 吞吐量配置:低/中/高,可接受的延迟是多少?
- 限制:离线环境、缺少二进制文件、只读文件系统?
如果缺少任何必答项,请先提出有针对性的后续问题,再生成配置。
阶段 3:决定使用脚本还是手动生成
使用此决策表。
| 条件 | 路径 |
|---|---|
| 请求符合内置使用场景,且只需要受支持的标志 | 脚本路径(阶段 5) |
| 请求需要脚本标志未涵盖的非通用插件选项 | 手动路径(阶段 4) |
| 复杂的多过滤器链、自定义解析器/lua 逻辑或专用插件调优 | 手动路径(阶段 4) |
| 脚本无法在环境中运行(缺少 Python/权限) | 手动路径(阶段 4) |
| 用户明确要求手工编写配置 | 手动路径(阶段 4) |
脚本支持的使用场景:
kubernetes-elasticsearchkubernetes-lokikubernetes-cloudwatchkubernetes-opentelemetryapplication-multilinesyslog-forwardfile-tail-s3http-kafkamulti-destinationprometheus-metricslua-filteringstream-processorcustom
始终明确说明所作决策,包括为何未选择另一条路径。
阶段 4:手动生成(脚本不适用时)
- 先阅读
examples/中最接近的模板。 - 定义新解析器前,先阅读
examples/parsers.conf。 - 按以下顺序组装配置:
[SERVICE][INPUT][FILTER][OUTPUT]- 解析器定义(如需要)
- 复用示例中经过验证的配置段,仅自定义必需参数。
- 确保各配置段中的标签和解析器引用一致。
必需的本地模板选择:
- Kubernetes + Elasticsearch:
examples/kubernetes-elasticsearch.conf - Kubernetes + Loki:
examples/kubernetes-loki.conf - Kubernetes + CloudWatch:
examples/cloudwatch.conf - Kubernetes + OpenTelemetry:
examples/kubernetes-opentelemetry.conf - 应用多行日志:
examples/application-multiline.conf - Syslog 转发:
examples/syslog-forward.conf - 文件传输到 S3:
examples/file-tail-s3.conf - HTTP 传输到 Kafka:
examples/http-input-kafka.conf - 多目标:
examples/multi-destination.conf - 指标:
examples/prometheus-metrics.conf - Lua 过滤:
examples/lua-filtering.conf - 流处理器:
examples/stream-processor.conf - 解析器:
examples/parsers.conf
回退方案:
- 如果没有匹配的示例,请从
scripts/generate_config.py --use-case custom的输出格式开始,再手动扩展。
阶段 5:脚本生成命令(确定性示例)
除非输出路径为绝对路径,否则请在技能目录中运行。
cd /Users/akinozer/GolandProjects/cc-devops-skills/devops-skills-plugin/skills/fluentbit-generator
# 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
# 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
# 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
回退方案:
- 如果脚本不支持所需选项,请记录该限制并切换到阶段 4。
阶段 6:插件文档查询回退链
如果不确定插件行为或参数,请严格按以下顺序查询。
- Context7(首选)
- 为 Fluent Bit 文档解析库 ID。
- 查询特定插件的配置详情。
- Fluent Bit 官方文档(第二选择)
- 使用
https://docs.fluentbit.io/manual和特定插件的页面。 - 优先参考官方插件说明,而非博客。
- 网络搜索(最后选择)
- 仅在 Context7 和官方文档不可用或内容不完整时使用。
- 优先选择引用或链接到官方文档的来源。
何时停止升级查询:
- 一旦找到所需参数和一个经过验证的示例,即停止查询。
- 如果所有来源都不可用,请使用本地
examples/,并明确标注假设。
阶段 7:验证与回退行为
主要验证流程:
- 生成后调用
fluentbit-validator。
如果验证器不可用,请运行本地回退检查:
# Syntax/format smoke check when fluent-bit is installed
fluent-bit -c <generated-config> --dry-run
# Optional execution test
fluent-bit -c <generated-config>
如果缺少 fluent-bit 二进制文件:
- 手动执行静态检查:
- 章节标题有效(
[SERVICE]、[INPUT]、[FILTER]、[OUTPUT]) - 存在必需的插件键
- 标签和匹配模式一致
- 引用的解析器名称和文件正确
- 没有硬编码凭据
- 章节标题有效(
- 说明已跳过运行时验证,并解释原因。
阶段 8:响应要求
始终返回:
- 使用的生成路径(
script或manual)及原因。 - 生成的文件及关键插件选择。
- 验证结果(或明确说明跳过原因及执行的回退检查)。
- 假设、尚未解决的风险,以及下一步需要自定义的内容。
完成标准
仅当以下条件全部满足时,此技能执行才算完成:
- 明确确认了触发条件是否匹配。
- 澄清问卷已收集必需字段或记录了假设。
- 明确说明了脚本与手动生成之间的选择,并给出理由。
- 按确定性链路查询了插件文档:Context7 -> 官方文档 -> 网络搜索(按需)。
- 提供了 cwd 安全的命令示例。
- 对缺失工具、文档或网络受限等情况应用了回退行为。
- 已执行验证(或明确说明跳过原因并执行回退静态检查)。
- 最终响应包含生成的产物、验证结果和后续自定义要点。
本地资源
- 脚本:
scripts/generate_config.py - 模板:
examples/*.conf - 解析器基线:
examples/parsers.conf - 示例输出目录:
output/
引入新结构前,请优先使用这些资源。
评论
支持 Markdown