FerroStash
Rust-native Logstash-compatible 日誌管道
何時收回成本?
範例:託管可觀測性支出每月 $5,000
如果託管可觀測性支出為每月 $5,000,按保守 40% 降低約為 $2,000/月的可避免總使用費 — 不含 S4 軟體費、EC2 和工作負載差異。
一個 Rust-native、Logstash-compatible 的日誌和事件管道。它透過與 Logstash 相同的 input → filter → output 模型收集、轉換並路由事件,native 解析 Logstash pipeline.conf DSL(以及等價的 YAML 形式),無需 JVM。單一靜態二進位檔案(約 14 MB)可在毫秒內啟動,佔用數十 MB RAM,因此每臺主機可以部署更多 shipper。
典型 Logstash pipeline 佔用約 1 GB JVM heap,啟動需要數十秒,而 FerroStash 以單一靜態二進位檔案執行。v1.0 系列實作了 Logstash 9.x plugin set 中生產常用的子集 — 約 88% 的 bundled plugins(111 箇中的 98 個),重點覆蓋解析和過濾熱路徑。Inputs 包括 beats、file、tcp、udp、http、syslog、kafka、redis、s3、sqs、jdbc、elasticsearch 和 cloudwatch;filters 包括 grok、dissect、kv、json、mutate、date、geoip、dns、csv、xml、useragent、cidr、fingerprint、translate、aggregate 和 throttle,另有 native Painless-style script filter;outputs 包括 elasticsearch / opensearch、kafka、s3、http、tcp、udp、file、redis、sqs、sns、cloudwatch、email 和 datadog;codecs 包括 json、json_lines、multiline、cef、netflow、avro、msgpack 和 protobuf。可靠性方面,它提供可選的 on-disk persistent queue,支援 at-least-once delivery 和 dead-letter queue(斷電持久性 fsync 為 opt-in),並內建用於 node 和 pipeline stats 的 monitoring API。誠實範圍:它相容 Logstash config/pipeline,不是逐位元組一致的 100 percent drop-in — 覆蓋範圍按 plugin 級別計算,已覆蓋 plugin 也可能只實作其部分選項,使用缺失 plugin 的設定會在載入時快速失敗。
面臨挑戰
Logstash 是一個彈性的日誌與事件管道,但通常的部署需要消耗大約 1GB 的 JVM 堆疊記憶體,啟動需要數十秒,且每個 shipper 都要執行獨立的 JVM 代理執行期。這限制了單台主機上可執行的 shipper 數量,且在容器環境中對記憶體和啟動時間造成了沉重負擔。目前的訴求是保留現有的 pipeline.conf 和外掛程式資產,同時擺脫 JVM 佔用,實現輕量化運作。
運作原理
- 1
原生執行 input → filter → output
FerroStash 透過與 Logstash 相同的 input → filter → output 模型來擷取、轉換和路由事件。它原生解析 Logstash 的 pipeline.conf DSL(以及等效的 YAML 格式)— 無需 JVM,也無需獨立的代理執行期 — 並作為單個靜態二進位檔案執行。
- 2
實現生產環境常用的外掛程式
v1.0 系列實現了 111 個隨附的 Logstash 9.x 外掛程式中的 98 個(約 88%),重點針對解析和過濾的熱路徑。它涵蓋了主要的 inputs、filters、outputs 和 codecs,並包含一個原生的類 Painless 指令碼過濾器。使用缺失外掛程式的設定在載入時會快速失败,因此不會發生靜默丟棄。
- 3
可靠性與監控
選用的磁碟持久化佇列可提供至少一次(at-least-once)傳遞(read/ack 游標分離、output ack 後的檢查點)和死信佇列,並可透過選擇性開啟 fsync 來保證斷電耐久性。內建的監控 API 能夠公開節點和管道的統計資料。
產品亮點
相容 Logstash config/pipeline — native 解析 pipeline.conf DSL(和 YAML),並實作約 88% 的 bundled Logstash 9.x plugins(111 箇中的 98 個)。
單一靜態二進位檔案(~14 MB),無需 JVM;毫秒級啟動、數十 MB RAM,讓每臺主機可部署更多 shipper。
可靠性:on-disk persistent queue(at-least-once + DLQ,opt-in fsync)和內建 monitoring API。誠實範圍 — config-compatible,不是逐位元組一致的 drop-in。
包含內容
- 經加固的 Amazon Linux 2023 AMI(arm64 / Graviton,執行於 t4g / c7g / m7g / r7g 級別)
- 一個實現了 Logstash 相容日誌和事件管道的單個靜態 Rust 二進位檔案(約 14 MB,無需 JVM,毫秒級啟動)
- 針對 Logstash pipeline.conf DSL 及等效 YAML 格式的原生解析器
- 111 個隨附的 Logstash 9.x 外掛程式中的 98 個(約 88%):inputs(beats、file、tcp、udp、http、syslog、kafka、redis、s3、sqs、jdbc、elasticsearch、cloudwatch 等),filters(grok、dissect、kv、json、mutate、date、geoip 等,以及類 Painless 指令碼過濾器),outputs(elasticsearch / opensearch、kafka、s3、http、file 等)以及 codecs(json、json_lines、multiline、cef、netflow、avro、msgpack、protobuf)
- 帶有至少一次(at-least-once)傳遞和死信佇列的選用磁碟持久化佇列(可選擇開啟 fsync)
- 展示節點和管道統計資料的內建監控 API
- 無獨立控制平面、無遙測資料回傳、無授權金鑰驗證(透過您的 AWS 帳單按執行個體每小時計費)
適用場景
在保留現有 Logstash pipeline.conf 和外掛程式資產的同時,擺脫 JVM 佔用並實現輕量化運作的場景
記憶體和啟動時間受到限制,且希望在每台主機上部署更多 shipper 的容器或邊緣環境
使用 grok / dissect / json 解析日誌並路由到 Elasticsearch / OpenSearch / Kafka / S3 等目標的資料管道
完全在您自己的 VPC 內執行日誌管道,沒有獨立的控制平面,也沒有遙測回傳的場景
常見問題
它與 Logstash 的相容性如何?
FerroStash 與 Logstash 的設定和管道相容,但並不是位元組級 100% 相同的無縫替代品。它原生解析 pipeline.conf DSL,並實現了 111 個隨附的 Logstash 9.x 外掛程式中的 98 個(約 88%)。相容性是外掛程式層級的,且支援的外掛程式可能僅實現了其部分選項。使用缺失外掛程式的設定在載入時會快速失敗。
它需要 JVM 嗎?
不需要。FerroStash 作為單個靜態 Rust 二進位檔案(約 14 MB)執行,無需 JVM 和獨立的代理執行期。它在毫秒級內啟動,僅佔用數十 MB 的 RAM,因此您可以在每台主機上部署更多 shipper。
有傳遞保證嗎?
選用的磁碟持久化佇列可提供至少一次(at-least-once)傳遞(read/ack 游標分離、output ack 後的檢查點) and 死信佇列。可以透過選擇性開啟 fsync 來保證斷電耐久性。
這是 AWS 服務的替代品嗎?
Logstash 是 Elastic 的開放原始碼專案,不是 AWS 服務。FerroStash 是一款自我代管產品,可在您自己的 Amazon EC2 執行個體上執行該 Logstash 相容的日誌管道。它以普通 Amazon Linux 2023 AMI 的形式交付,您可以在自己的 VPC 內執行它。
如何計費?
按小時收取的 AMI 軟體費用加上您選擇的 EC2(t4g / c7g / m7g / r7g 級別,Arm)。按執行個體類型計量計費,無獨立控制平面,無遙測回傳,且無授權金鑰檢查。
為什麼更便宜
假設在 us-east-1 部署 10 個 Logstash shipper,每月擷取 5 TB 日誌。
- m5.large × 10 隨需
- $700 / 月
- 月度合計
- $700 / 月
- t3.small × 10 + 軟體費
- $150 / 月
- 月度合計
- $150 / 月
按 shipper 數量選擇 FerroStash 執行個體
| shipper 數 | 推薦執行個體 | FerroStash 總成本 | 月度合計對比 Logstash |
|---|---|---|---|
| ~3 個 | t3.small × 3 | $45 / 月 | $45 / 月 (Logstash $210, −79%) |
| ~10 個 | t3.small × 10 | $150 / 月 | $150 / 月 (Logstash $700, −79%) |
| ~50 個 | t3.small × 50 | $750 / 月 | $750 / 月 (Logstash $3,500, −79%) |
僅供參考。Logstash on JVM 需要約 1 GB 堆積和數十秒啟動,因此 shipper 通常以每台 m5.large 一個執行。FerroStash 是 ~14 MB 二進位檔,僅佔用數十 MB RAM、毫秒級啟動,因此 t3.small (2 GB) 足夠,也可作為 sidecar 部署。生產常用的 input / filter / output 外掛已原生實作。
計費模式
按小時收取軟體費用 + EC2(t4g / c7g / m7g / r7g 級,Arm)。按執行個體類型計量。