3 个版本

0.1.3-alpha2019年6月27日
0.1.2-alpha2019年6月26日
0.1.1 2019年6月26日
0.1.0 2019年6月25日

#2258 in 解析实现

GPL-3.0-or-later

105KB
2.5K SLoC

API 文档

Crates.io Gitlab pipeline status (branch) Crates.io

关于

emmett 是一个统一的日志层,旨在作为 Logstash 的替代品,同时提供额外的/改进的功能。

emmett 使用 Rust 编写,并使用 Tokio,这意味着

  • 速度极快 ⚡⚡⚡
  • 资源需求非常小(目前简单的管道只需要少于 3 MB 的 RAM)
  • 没有垃圾回收器 == 更好、更一致的性能
  • 完全异步 - 插件独立运行
  • 多线程和 工作窃取

使用方法

emmett 目前使用 TOML 进行配置,但将来将能够解析 Logstash 配置文件 以及其他格式,如 JSON。

由于插件本身尚未更加稳定,Logstash 配置文件解析器目前处于暂停状态。不过,合并请求始终欢迎!

# This is an emmett config file.

[[inputs]]

[inputs.http_poller]
request_timeout = 60
schedule = { cron = "* * * * * UTC" }
codec = "json"
metadata_target = "http_poller_metadata"
truststore = "/path/to/downloaded_truststore.jks"
truststore_password = "mypassword"

[[inputs.http_poller.urls]]
test1 = "https://jsonplaceholder.typicode.com/posts/1"

[[filters]]

[filters.mutate]
replace = { "id" = "yo dawg" }
copy = { "title" = "titleCopy" }
strip = ["body"]
split = { "body" = "\n", "titleCopy" = " repellat " }
capitalize = ["titleCopy"]
join = { "body" = " ... "}

[filters.json]
source = "jsonString"
target = "jsonString"
    
[filters.date]
match = [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]	

[[outputs]]

[outputs.elasticsearch]
hosts = ["localhost:9200"]

依赖关系

~27MB
~550K SLoC