mcpField
F
fluentbit-generator

fluentbit-generator

github.com/akin-ozer云与 DevOps329605 次安装16 周前更新
代码仓库

关于 fluentbit-generator

fluentbit-generator 是用于生成 Fluent Bit 配置和日志管道的技能。它根据使用场景与配置复杂度,选择生成脚本或基于模板手动编写。

主要功能

  1. 01按内置场景生成配置
  2. 02基于本地模板手动编写配置
  3. 03配置输入、过滤和输出管道
  4. 04按顺序查找插件文档
  5. 05验证生成的配置

适用场景

  1. 01将 Kubernetes 日志路由到输出插件
  2. 02设置多行应用日志采集
  3. 03将 syslog 或文件日志转发到目标
  4. 04创建指标或流处理配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/akin-ozer/cc-devops-skills --skill fluentbit-generator

安装后在 Claude Code 中输入/fluentbit-generator确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples/
application-multiline.conf
cloudwatch.conf
file-tail-s3.conf
full-production.conf
http-input-kafka.conf
kubernetes-elasticsearch.conf
kubernetes-loki.conf
kubernetes-opentelemetry.conf
lua-filtering.conf
multi-destination.conf
parsers.conf
prometheus-metrics.conf
stream-processor.conf
syslog-forward.conf
output/
k8s-errors-elasticsearch.conf
parsers.conf
scripts/
generate_config.py
test_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:澄清问卷(明确模板)

生成前收集以下字段。

必答问题:

  1. 主要使用场景是什么:kubernetes、application logs、syslog、http ingest、metrics 还是 custom?
  2. 输入是什么:使用哪些来源和路径/端口(例如 tail /var/log/containers/*.log)?
  3. 输出是什么:目标插件和端点(主机、端口、uri/topic/index/bucket)?
  4. 可靠性/安全要求:是否启用 TLS、重试预期、缓冲限制?
  5. 环境上下文:集群名称、环境名称、云区域(如适用)?

选答但很重要的问题:

  1. 预期日志格式:json、regex、cri、docker,还是多行堆栈跟踪?
  2. 吞吐量配置:低/中/高,可接受的延迟是多少?
  3. 限制:离线环境、缺少二进制文件、只读文件系统?

如果缺少任何必答项,请先提出有针对性的后续问题,再生成配置。

阶段 3:决定使用脚本还是手动生成

使用此决策表。

条件路径
请求符合内置使用场景,且只需要受支持的标志脚本路径(阶段 5)
请求需要脚本标志未涵盖的非通用插件选项手动路径(阶段 4)
复杂的多过滤器链、自定义解析器/lua 逻辑或专用插件调优手动路径(阶段 4)
脚本无法在环境中运行(缺少 Python/权限)手动路径(阶段 4)
用户明确要求手工编写配置手动路径(阶段 4)

脚本支持的使用场景:

  • 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

始终明确说明所作决策,包括为何未选择另一条路径。

阶段 4:手动生成(脚本不适用时)
  1. 先阅读 examples/ 中最接近的模板。
  2. 定义新解析器前,先阅读 examples/parsers.conf。
  3. 按以下顺序组装配置:
  • [SERVICE]
  • [INPUT]
  • [FILTER]
  • [OUTPUT]
  • 解析器定义(如需要)
  1. 复用示例中经过验证的配置段,仅自定义必需参数。
  2. 确保各配置段中的标签和解析器引用一致。

必需的本地模板选择:

  • 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:插件文档查询回退链

如果不确定插件行为或参数,请严格按以下顺序查询。

  1. Context7(首选)
  • 为 Fluent Bit 文档解析库 ID。
  • 查询特定插件的配置详情。
  1. Fluent Bit 官方文档(第二选择)
  • 使用 https://docs.fluentbit.io/manual 和特定插件的页面。
  • 优先参考官方插件说明,而非博客。
  1. 网络搜索(最后选择)
  • 仅在 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:响应要求

始终返回:

  1. 使用的生成路径(script 或 manual)及原因。
  2. 生成的文件及关键插件选择。
  3. 验证结果(或明确说明跳过原因及执行的回退检查)。
  4. 假设、尚未解决的风险,以及下一步需要自定义的内容。

完成标准

仅当以下条件全部满足时,此技能执行才算完成:

  • 明确确认了触发条件是否匹配。
  • 澄清问卷已收集必需字段或记录了假设。
  • 明确说明了脚本与手动生成之间的选择,并给出理由。
  • 按确定性链路查询了插件文档:Context7 -> 官方文档 -> 网络搜索(按需)。
  • 提供了 cwd 安全的命令示例。
  • 对缺失工具、文档或网络受限等情况应用了回退行为。
  • 已执行验证(或明确说明跳过原因并执行回退静态检查)。
  • 最终响应包含生成的产物、验证结果和后续自定义要点。

本地资源

  • 脚本:scripts/generate_config.py
  • 模板:examples/*.conf
  • 解析器基线:examples/parsers.conf
  • 示例输出目录:output/

引入新结构前,请优先使用这些资源。

评论

支持 Markdown