容易测试logstash过滤器

logstash-filter-test的Python项目详细描述


logstash过滤器测试

Logstash是一个收集 来自不同输入的json文档,根据配置转换它们 文件(afilter),并将它们发送到各种输出。这个脚本帮助您 通过编写测试套件,确保您的过滤器符合您的期望。

安装

您可以使用pip安装:

pip install logstash-filter-test

或者只复制logstash_filter_run.pylogstash_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'}]

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java检查整数是0还是检查变量是null更好?   java Android Kotlin(初学者)使用File(),并从ACTION\u GET\u内容返回Uri   java JavaFx在“内部场景”和根场景之间切换   spring将XMLBean配置转换为java配置   java JPA HIBERNATE映射列两次(embeddedID和POJO)   c#单态模式模型在什么情况下适用?   java请求。getRemoteUser在特定时间后返回null?   spring boot中PUT api控制器的java my单元测试用例失败   java在字符串中互换地解析和替换值   java Android JNI在应用程序中检测到错误:调用JNI GetMethodID时出现挂起异常   JavaSpringDataMongo:使用非简单键持久化映射   爪哇玻璃鱼连接被拒绝   java如何在用户注册时发送特定电子邮件id的自动回复?   Java列表:实例化时和之后的赋值之间的差异