容易测试logstash过滤器
logstash-filter-test的Python项目详细描述
logstash过滤器测试
Logstash是一个收集 来自不同输入的json文档,根据配置转换它们 文件(afilter),并将它们发送到各种输出。这个脚本帮助您 通过编写测试套件,确保您的过滤器符合您的期望。
安装
您可以使用pip安装:
pip install logstash-filter-test
或者只复制logstash_filter_run.py
和logstash_filter_test.py
。有
没有依赖关系。支持Python3.5+和2.7。
示例
下面是一个简单的测试套件文件:
testcases.js:
[// Test a message with a value[{"message":"<<2018-06-11 13:45:39,127+0300>> TAU = 6.2831853"},{"date":"2018-06-11 13:45:39,127+0300","@timestamp":"2018-06-11T10:45:39.127Z","msg_text":"TAU = 6.2831853","metric":"TAU","value":6.2831853,}],]
filter.conf:
filter {
grok {
match => {
"message" => [
"^<<%{TIMESTAMP_ISO8601:date}>> %{GREEDYDATA:msg_text}$"
]
}
}
date {
match => ["date", "ISO8601"]
}
grok {
match => {
"msg_text" => [
"^%{WORD:metric} = %{NUMBER:value:float}"
]
}
tag_on_failure => []
}
}
把它们放到一个目录中,运行./logstash_filter_test.py
,它会通知您
如果测试用例通过了,如果没有,为什么。
testcases.js
可以是一个简单的json文件。它的扩展名是.js
,因为
允许使用javascript注释和尾随逗号,这要归功于
jstyleson。这是一个
测试用例。每个测试用例都是一个大小为2的列表。第一项是输入
json文档。第二项与输出json文档进行比较。全部
定义的字段必须等于输出文档中的字段。
输出文档可以包括其他字段。测试输出字段
不存在,请使用。
从python进行测试
如果您不喜欢testcase文件格式,您可以自己轻松地进行测试:
>>> from logstash_filter_run import logstash_filter_run >>> logstash_filter_run([{"a": 3}], 'filter { mutate { copy => { "a" => "b" } } }') [{'@timestamp': '2018-07-10T18:26:58.411Z', '@version': '1', 'a': 3, 'b': 3, 'host': 'myhost'}]