5个不稳定版本
0.3.1 | 2024年4月15日 |
---|---|
0.3.0 | 2024年4月14日 |
0.2.1 | 2024年4月8日 |
0.1.1 | 2024年3月31日 |
0.1.0 | 2024年3月31日 |
#31 in 配置
每月下载量 254次
30KB
383 行
Fiddler
Fiddler是一个使用基于yaml的配置文件语法来映射输入、处理器和输出的Rust构建的流处理器。
例如
input:
stdin: {}
pipeline:
max_in_flight: 10
processors:
- python:
string: true
code: |
import json
msg = json.loads(root)
msg['Python'] = 'rocks'
root = json.dumps(msg)
output:
switch:
- check:
condition: '\"Hello World\" > `5`'
output:
validate:
expected: []
- stdout: {}
主内联消息处理由Python提供,需要Python共享库。
在Ubuntu上安装Python共享库:sudo apt install python3-dev
在基于RPM的发行版(例如Fedora、Red Hat、SuSE)上安装Python共享库,安装python3-devel
包。
在fiddler运行的操作系统上必须安装Python使用的任何第三方包。
输入和输出的消息格式简单,事件源存储在名为root
的局部变量中;执行代码后获取的输出应命名为root
。默认情况下,root
是消息的字节,除非证明有string: true
参数,在这种情况下,root
将被转换为字符串。
通过使用check
和switch
插件可以获得处理步骤的条件执行或输出选择。对于处理,它看起来像
- switch:
- check:
condition: '\"Hello World\" <= `5`'
processors:
- python:
string: true
code: |
import json
new_string = f\"python: {root}\"
root = new_string
- echo: {}
- label: my_cool_mapping
echo: {}
所使用的条件格式使用[jmespath](https://jmespath.org/specification.html)语法进行评估。因此,它只能与JSON文档一起使用。
安装
- 在这里下载适用于您的操作系统的版本 这里
- 使用Cargo安装
cargo install fiddler
运行
fiddler运行-c<配置文件路径> [ -c... ]
代码检查
Fiddler代码检查-c<配置文件路径> [ -c... ]
测试
测试文件格式应为 <filename>_test.yaml
。例如,如果您有一个配置 input.yaml
,期望的文件名是 input_test.yaml
。测试文件语法如下
- name: name_of_test
inputs:
- list of expected input strings
expected_outputs:
- list of expected output strings
可以使用以下命令运行测试:fiddler-cli test -c <path_to_configuration>.yaml
构建
使用 Cargo 构建 cargo build --release --features all
插件
输入
文件
input:
file:
filename: tests/data/input.txt
codec: ToEnd
filename
:string
: 要读取的文件的路径codec
:string
: 可能的值:ToEnd
: 在一个消息中读取整个文件。Lines
: 逐行读取文件
标准输入
input:
stdin: {}
处理器
行
processors:
- lines: {}
无操作
processors:
- noop: {}
Python
processors:
- python:
string: true
code: |
import json
msg = json.loads(root)
msg['Python'] = 'rocks'
root = json.dumps(msg)
string
:bool
: 消息内容是否作为字符串或字节传递(默认值)code
:string
: 要执行的Python代码
检查
processors:
- check:
condition: '\"Hello World\" <= `5`'
processors:
- python:
string: true
code: |
import json
new_string = f\"python: {root}\"
root = new_string
condition
:string
: 当处理器运行时,要评估的jmespath表达式processors
:list
: 当条件满足时运行的处理器列表
开关
processors:
- switch:
- check:
condition: '\"Hello World\" <= `5`'
processors:
- python:
string: true
code: |
import json
new_string = f\"python: {root}\"
root = new_string
- echo: {}
- echo: {}
array
: 要运行的处理器数组,通常与check
处理器一起使用。一旦处理器成功,将不会运行其他处理器
输出
标准输出
output:
stdout: {}
检查
output:
check:
condition: '\"Hello World\" > `5`'
output:
stdout: {}
condition
:string
: 当处理器运行时,要评估的jmespath表达式output
:object
: 如果检查为真,则使用此输出
开关
output:
switch:
- check:
condition: '\"Hello World\" > `5`'
output:
validate:
expected: []
array
: 输出数组,通常与check
输出一起使用。
Elasticsearch
output:
elasticsearch:
url: http://example.com:9200
username: user
password: password
cloud_id: some_cloud_id
index: example
url
: 如果不使用Elasticsearch云,指定ES集群的URL。例如,http://127.0.0.1:9200username
: 身份验证用户名password
: 身份验证密码cloud_id
: 如果使用Elasticsearch云,指定cloud_idindex
: 将事件插入的索引
注意:变量可以从环境变量中收集,因此当提供密码时,您可以将它设置为 password: "{{ ElasticSearchPassword }}"
,并且ElasticSearchPassword将来自环境变量并提供给配置。
贡献
欢迎并鼓励贡献!贡献可以有多种形式。您可以
- 提交功能请求或错误报告作为 issue。
- 请求改进文档作为 issue。
- 在 需要反馈的issue 上发表评论。
- 通过 pull requests 贡献代码。
请注意,除非您明确声明,否则您提交给fiddler的任何贡献都将根据Apache License,Version 2.0许可,没有任何附加条款或条件。
已知问题
- 在Windows上编译时,Cargo在开关插件上显示警告,实际上它们并未被跳过。
- build.rs在Windows上编译时不验证Python是否存在
- 在windows GHA上,集成测试失败
依赖项
~29–45MB
~791K SLoC